Welcome, guest | Sign In | My Account | Store | Cart
#!/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
()

Diff to Previous Revision

--- revision 2 2015-01-03 01:58:04
+++ revision 3 2015-01-03 02:04:02
@@ -130,8 +130,6 @@
 
def message_to_screen(msg,color,y_displace=0,size="small"):
 
     textSurf
,textRect=text_objects(msg,color,size)
-    #screen_text = font.render(msg,True,color)
-    #gameDisplay.blit(screen_text,[display_width-600,display_height/2])
     textRect
.center=(display_width/2),(display_height/2)+y_displace
     gameDisplay
.blit(textSurf,textRect)
     

History