Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*-coding:utf-8-*-
- import pygame,sys
- import win32api,win32console,win32gui,codecs
- import time,random
- from pygame.sprite import Sprite
- pygame.init()
- win = win32console.GetConsoleWindow()
- win32gui.ShowWindow(win,0)
- white = (255,255,255)
- black = (0,0,0)
- red = (255,0,0)
- green = (0,155,0)
- display_width = 800
- display_height = 600
- gameDisplay=pygame.display.set_mode((display_width,display_height))
- pygame.display.set_caption("Flafel")
- icon=pygame.image.load("apple.png")
- pygame.display.set_icon(icon)
- img=pygame.image.load("snakehead.png")
- appleimg=pygame.image.load("apple.png")
- clock = pygame.time.Clock()
- AppleThickness=30
- block_size = 20
- FPS = 15
- direction="right"
- smallfont = pygame.font.SysFont("comicsansms",25)
- medfont = pygame.font.SysFont("comicsansms",50)
- largefont = pygame.font.SysFont("comicsansms",80)
- pygame.mixer.init()
- intro_sound=pygame.mixer.Sound("intro.wav")
- dead_sound=pygame.mixer.Sound("dead.wav")
- def game_intro():
- intro=True
- while intro:
- for event in pygame.event.get():
- if event.type==pygame.QUIT:
- pygame.quit()
- quit()
- if event.type==pygame.KEYDOWN:
- if event.key==pygame.K_c:
- intro=False
- if event.key==pygame.K_q:
- pygame.quit()
- quit()
- gameDisplay.fill(white)
- message_to_screen("Welcome to Flafel",green,-100,"large")
- message_to_screen("The objective of the game is to eat red apples",black,-30)
- message_to_screen("The more apples you eat,the longer you get",black,10)
- message_to_screen("If you run into yourself, or the edges, you die!",black,50)
- message_to_screen("Press C to play, P to pause or Q to quit",black,180)
- pygame.display.update()
- clock.tick(15)
- def pause():
- paused=True
- message_to_screen("Paused",black,-100,size="large")
- message_to_screen("Press C to continue or Q to quit",black,25)
- pygame.display.update()
- while paused:
- for event in pygame.event.get():
- if event.type==pygame.QUIT:
- pygame.quit()
- quit()
- if event.type==pygame.KEYDOWN:
- if event.key==pygame.K_c:
- paused=False
- elif event.key==pygame.K_q:
- pygame.quit()
- quit()
- clock.tick(5)
- def score(score):
- text=smallfont.render("Score: "+str(score),True,black)
- gameDisplay.blit(text,[0,0])
- def randAppleGen():
- randApplex = round(random.randrange(0,display_width-AppleThickness))#/10.0)*10.0
- randAppley = round(random.randrange(0,display_height-AppleThickness))#/10.0)*10.0
- return randApplex,randAppley
- def snake(block_size,snakeList):
- if direction=="right":
- head=pygame.transform.rotate(img,270)
- if direction=="left":
- head=pygame.transform.rotate(img,90)
- if direction=="up":
- head=img
- if direction=="down":
- head=pygame.transform.rotate(img,180)
- gameDisplay.blit(head,(snakeList[-1][0],snakeList[-1][1]))
- for XnY in snakeList[:-1]:
- pygame.draw.rect(gameDisplay, green, (XnY[0],XnY[1],block_size,block_size))
- def text_objects(text,color,size):
- if size=="small":
- textSurface=smallfont.render(text,True,color)
- elif size=="medium":
- textSurface=medfont.render(text,True,color)
- elif size=="large":
- textSurface=largefont.render(text,True,color)
- return textSurface,textSurface.get_rect()
- def message_to_screen(msg,color,y_displace=0,size="small"):
- textSurf,textRect=text_objects(msg,color,size)
- textRect.center=(display_width/2),(display_height/2)+y_displace
- gameDisplay.blit(textSurf,textRect)
- def gameLoop():
- global direction
- direction="right"
- running = True
- gameOver= False
- lead_x = display_width/2
- lead_y = display_height/2
- lead_x_change = 10
- lead_y_change = 0
- snakeList=[]
- snakeLength=1
- randApplex,randAppley=randAppleGen()
- while running:
- if gameOver==True:
- message_to_screen("Game over",red,-50,size="large")
- message_to_screen("Press C to play again or Q to quit",black,50,size="medium")
- pygame.display.update()
- while gameOver == True:
- #gameDisplay.fill(white)
- for event in pygame.event.get():
- if event.type==pygame.QUIT:
- gameOver=False
- running=False
- if event.type==pygame.KEYDOWN:
- if event.key==pygame.K_q:
- running=False
- gameOver=False
- if event.key==pygame.K_c:
- gameLoop()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_LEFT:
- direction="left"
- lead_x_change = -block_size
- lead_y_change = 0
- elif event.key == pygame.K_RIGHT:
- direction="right"
- lead_x_change = block_size
- lead_y_change = 0
- elif event.key == pygame.K_UP:
- direction="up"
- lead_y_change = -block_size
- lead_x_change = 0
- elif event.key == pygame.K_DOWN:
- direction="down"
- lead_y_change = block_size
- lead_x_change = 0
- elif event.key==pygame.K_p:
- pause()
- if lead_x>=display_width or lead_x<0 or lead_y<0 or lead_y>=display_height:
- gameOver=True
- dead_sound.play()
- lead_x += lead_x_change
- lead_y += lead_y_change
- gameDisplay.fill(white)
- gameDisplay.blit(appleimg,(randApplex,randAppley))
- snakeHead=[]
- snakeHead.append(lead_x)
- snakeHead.append(lead_y)
- snakeList.append(snakeHead)
- if len(snakeList)>snakeLength:
- del snakeList[0]
- for eachSegment in snakeList[:-1]:
- if eachSegment==snakeHead:
- gameOver=True
- dead_sound.play()
- snake(block_size,snakeList)
- score(snakeLength-1)
- pygame.display.update()
- if lead_x>randApplex and lead_x <randApplex+AppleThickness or lead_x+block_size>randApplex and lead_x+block_size<randApplex+AppleThickness:
- if lead_y>randAppley and lead_y <randAppley+AppleThickness:
- randApplex,randAppley=randAppleGen()
- snakeLength+=1
- elif lead_y+block_size > randAppley and lead_y+block_size<randAppley+AppleThickness:
- randApplex,randAppley=randAppleGen()
- snakeLength+=1
- clock.tick(FPS)
- pygame.quit()
- quit()
- intro_sound.play()
- game_intro()
- intro_sound.stop()
- gameLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement