Python贪吃蛇游戏源代码源程序程序运⾏截图:
import pygame as pg
from random import randint
import sys贪吃蛇的编程代码
from pygame.locals import*
FPS =6# 画⾯帧数,代表蛇的移动速率
window_width =600
window_height =500
cellsize =20
cell_width =int(window_width / cellsize)
cell_height =int(window_height / cellsize)
BGcolor =(0,0,0)
BLUE =(0,0,255)
RED =(255,0,0)
apple_color =(255,0,0)
snake_color =(0,150,0)
GREEN =(0,255,0)
WHITE =(255,255,255)
DARKGRAY =(40,40,40)
UP ="up"
DOWN ="down"
LEFT ="left"
RIGHT ="right"
HEAD =0
def main():# 有函数
global FPSclock, window, BASICFONT
pg.init()
FPSclock = pg.time.Clock()
window = pg.display.set_mode((window_width, window_height)) BASICFONT = pg.font.Font("f",18)
pg.display.set_caption("贪吃蛇")
showStartScreen()
while True:
runGame()
showGameOverScreen()
def runGame():# 运⾏游戏函数
startx = randint(5, cell_width -6)
starty = randint(5, cell_height -6)
snakeCoords =[{"x": startx,"y": starty},{"x": startx -1,"y": starty},{"x": startx -2,"y": starty}]
direction = RIGHT
apple = getRandomLocation()
while True:
for event in ():
pe== QUIT:
terminate()
pe== KEYDOWN:
if event.key == K_LEFT and direction != RIGHT:
direction = LEFT
elif event.key == K_RIGHT and direction != LEFT:
direction = RIGHT
elif event.key == K_UP and direction != DOWN:
direction = UP
elif event.key == K_DOWN and direction != UP:
direction = DOWN
elif event.key == K_ESCAPE:
terminate()
if snakeCoords[HEAD]["x"]==-1or snakeCoords[HEAD]["x"]== cell_width or snakeCoords[HEAD]["y"]==-1or \ snakeCoords[HEAD]["y"]== cell_height:
return
for snakeBody in snakeCoords[1:]:
if snakeBody["x"]== snakeCoords[HEAD]["x"]and snakeBody["y"]== snakeCoords[HEAD]["y"]:
return
if snakeCoords[HEAD]["x"]== apple["x"]and snakeCoords[HEAD]["y"]== apple["y"]:
apple = getRandomLocation()
else:
else:
del snakeCoords[-1]
if direction == UP:
newHead ={"x": snakeCoords[HEAD]["x"],"y": snakeCoords[HEAD]["y"]-1} elif direction == DOWN:
newHead ={"x": snakeCoords[HEAD]["x"],"y": snakeCoords[HEAD]["y"]+1} elif direction == LEFT:
newHead ={"x": snakeCoords[HEAD]["x"]-1,"y": snakeCoords[HEAD]["y"]} elif direction == RIGHT:
newHead ={"x": snakeCoords[HEAD]["x"]+1,"y": snakeCoords[HEAD]["y"]}
snakeCoords.insert(0, newHead)
window.fill(BGcolor)
drawGrid()
drawSnake(snakeCoords)
drawApple(apple)
drawScore(len(snakeCoords)-3)
pg.display.update()
FPSclock.tick(FPS)
def drawPressKeyMsg():# 游戏开始提⽰信息
pressKeySurf = der("press a key to play",True, BLUE)
pressKeyRect = _rect()
window.blit(pressKeySurf, pressKeyRect)
def checkForKeyPress():# 检查是否触发按键
if len((QUIT))>0:
terminate()
keyUpEvents = (KEYUP)
if len(keyUpEvents)==0:
return None
if keyUpEvents[0].key == K_ESCAPE:
terminate()
return keyUpEvents[0].key
def showStartScreen():# 开始画⾯
window.fill(BGcolor)
titleFont = pg.font.Font("f",100)
titleSurf = der("snake!",True, RED)
titleRect = _rect()
< =(window_width /2, window_height /2)
window.blit(titleSurf, titleRect)
drawPressKeyMsg()
pg.display.update()
while True:
if checkForKeyPress():
()
return
def terminate():# 退出
pg.quit()
def getRandomLocation():# 出现位置
return{"x": randint(0, cell_width -1),"y": randint(0, cell_height -1)} def showGameOverScreen():# 游戏结束
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论