Its a 240 line program. But okay, here's the code. Keep in mind that its a snake program, and relies on three sound files. No idea how you can run this without the sound files, but I guess you could just create your own replacements if you're looking to run this.
import random
import pygame
pygame.init()
screenWidth=500
screenHeight=500
mainWindow=pygame.display.set_mode((screenWidth,screenHeight))
pygame.display.set_caption("PySnake")
x=screenWidth/2
y=screenHeight/2
snakeSize=50
move="down"
length=0
path=[]
fps=7
fpsClock=pygame.time.Clock()
win=True
loseGameSound=pygame.mixer.Sound('pysnake_lose_game.wav')
eatSound=pygame.mixer.Sound('pysnake_eat.wav')
bleep=pygame.mixer.Sound('pysnake_bleep.wav')
font=pygame.font.SysFont('arialblack',20)
def frandxy():
global posx
global posy
posx=snakeSize*(random.randint(0,screenWidth/snakeSize-1))
posy=snakeSize*(random.randint(0,screenWidth/snakeSize-1))
if (posx,posy) in path or (posx,posy)==(x,y):
frandxy()
def closeGame():
pygame.quit()
quit()
def playAgain():
global x
global y
global length
global move
global path
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
closeGame()
key=pygame.key.get_pressed()
if key[pygame.K_ESCAPE]:
bleep.play()
closeGame()
if key[pygame.K_y]:
bleep.play()
x=screenWidth/2
y=screenHeight/2
length=0
move="down"
path=[]
game()
if key[pygame.K_n]:
closeGame()
if win==False:
mainWindow.fill((0,0,0))
if win==True:
mainWindow.fill((0,255,0))
pygame.draw.rect(mainWindow,(0,255,0),(screenWidth/2-snakeSize*3,\
screenHeight/2-snakeSize,\
snakeSize*6,snakeSize*2))
font=pygame.font.SysFont('arialblack',20)
textTop=font.render('Play Again?',0,(0,0,0))
textBottom=font.render(('(y)es/(n)o'),0,(0,0,0))
mainWindow.blit(textTop, (screenWidth/2-textTop.get_width()/2,screenHeight/2-snakeSize))
mainWindow.blit(textBottom, (screenWidth/2-textBottom.get_width()/2,screenHeight/2))
pygame.display.update()
def loseGame():
loseGameSound.play()
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
closeGame()
key=pygame.key.get_pressed()
if key[pygame.K_ESCAPE]:
closeGame()
if key[pygame.K_RETURN]:
bleep.play()
playAgain()
mainWindow.fill((0,0,0))
pygame.draw.rect(mainWindow,(0,255,0),(screenWidth/2-snakeSize*3,\
screenHeight/2-snakeSize,\
snakeSize*6,snakeSize*2))
font=pygame.font.SysFont('arialblack',20)
textTop=font.render('GAME OVER',0,(0,0,0))
textBottom=font.render(('Your Length Was: '+str(length)),0,(0,0,0))
mainWindow.blit(textTop, (screenWidth/2-textTop.get_width()/2,screenHeight/2-snakeSize))
mainWindow.blit(textBottom, (screenWidth/2-textBottom.get_width()/2,screenHeight/2))
pygame.display.update()
def winGame():
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
closeGame()
key=pygame.key.get_pressed()
if key[pygame.K_ESCAPE]:
closeGame()
if key[pygame.K_RETURN]:
bleep.play()
playAgain()
mainWindow.fill((0,255,0))
textTop=font.render('Your Snake Filled the Screen!',0,(0,0,0))
textBottom=font.render(('Congratulations!'),0,(0,0,0))
mainWindow.blit(textTop, (screenWidth/2-textTop.get_width()/2,screenHeight/2-snakeSize))
mainWindow.blit(textBottom, (screenWidth/2-textBottom.get_width()/2,screenHeight/2))
pygame.display.update()
def game():
global x
global y
global move
global length
global path
global fpsClock
global win
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
closeGame()
key=pygame.key.get_pressed()
if key[pygame.K_UP] and move != "down":
move="up"
if key[pygame.K_w] and move !="down":
move="up"
if key[pygame.K_DOWN] and move != "up":
move="down"
if key[pygame.K_s] and move != "up":
move="down"
if key[pygame.K_RIGHT] and move != "left":
move="right"
if key[pygame.K_d] and move != "left":
move="right"
if key[pygame.K_LEFT] and move != "right":
move="left"
if key[pygame.K_a] and move != "right":
move="left"
if key[pygame.K_ESCAPE]:
closeGame()
if key[pygame.K_e]:
closeGame()
path.insert(0,(x,y))
#move snake
if move=="down" and y<=screenHeight-snakeSize:
y+=snakeSize
if move=="down" and y>=screenHeight:
y=0
if move=="up" and y>=0:
y-=snakeSize
if move=="up" and y<0:
y=screenHeight-snakeSize
if move=="right" and x<=screenWidth-snakeSize:
x+=snakeSize
if move=="right" and x>=screenWidth:
x=0
if move=="left" and x>=0:
x-=snakeSize
if move=="left" and x<0:
x=screenWidth-snakeSize
if x==posx and y==posy:
length+=1
eatSound.play()
frandxy()
if (x,y) in path:
win=False
loseGame()
if length>=(screenWidth/snakeSize)*(screenHeight/snakeSize):
winGame()
mainWindow.fill((0,0,0))
#draw snake
if length>0:
for i in range(length):
pygame.draw.rect(mainWindow, (0,255,0),(path[i][0],path[i][1], snakeSize,snakeSize))
pygame.draw.rect(mainWindow, (0,255,0),(x, y, snakeSize, snakeSize))
#draw food
pygame.draw.rect(mainWindow, (255,0,0),(posx,posy, snakeSize, snakeSize))
if len(path)>length:
path=path[:(length)]
pygame.display.update()
fpsClock.tick(fps)
def start():
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
closeGame()
key=pygame.key.get_pressed()
if key[pygame.K_ESCAPE]:
closeGame()
if key[pygame.K_e]:
closeGame()
titleFont=pygame.font.SysFont('arialblack',50)
title=titleFont.render('PySnake',0,(0,255,0))
enterPrompt=font.render('Press Enter to Start',0,(0,255,0))
mainWindow.blit(title,(screenWidth/2-title.get_width()/2,screenHeight/2-snakeSize*2))
mainWindow.blit(enterPrompt,(screenWidth/2-enterPrompt.get_width()/2,screenHeight/2))
for event in pygame.event.get():
if event.type==pygame.QUIT:
closeGame()
key=pygame.key.get_pressed()
if key[pygame.K_RETURN]:
bleep.play()
game()
if key[pygame.K_ESCAPE]:
closeGame()
pygame.display.update()
frandxy()
start()