基于pygame的贪吃蛇游戏

梦想与她 提交于 2020-03-15 10:38:41
import pygame,sys,time,random
from pygame.locals import *
pygame.init()
fpsClock=pygame.time.Clock()
playSurface=pygame.display.set_mode((640,480))
pygame.display.set_caption('贪吃蛇')

设置几个颜色

redColor=pygame.Color(255,0,0)
blackColor=pygame.Color(0,0,0)
whiteColor=pygame.Color(255,255,255)
greyColor=pygame.Color(150,150,150)

蛇的初始状态

snakePosition=[100,100]
snakeSegments=[[100,100],[80,100],[60,100]]
raspberryPosition=[300,300]
raspberrySpawned=1
direction='right'
changeDirection=direction

游戏结束

def gameOver():
	gameOverFont=pygame.font.Font('simfang.ttf',72)
	gameOverSurf=gameOverFont.render('Game over',True,greyColor)
	gameOverRect=gameOverSurf.get_rect()
	gameOverRect.midtop=(320,10)
	playSurface.blit(gameOverSurf,gameOverRect)
	pygame.display.flip()
	time.sleep(5)
	pygame.quit()
	sys.exit()

设置按键控制蛇移动,进行游戏

while True:
	for event in pygame.event.get():
		if event.type==QUIT:
			pygame.quit()
			sys.exit()
		elif event.type==KEYDOWN:
			if event.key==K_RIGHT or event.key==ord('d'):
					changeDirection='right'
			if event.key==K_LEFT or event.key==ord('a'):
					changeDirection='left'
			if event.key==K_UP or event.key==ord('w'):
					changeDirection='up'
			if event.key==K_DOWN or event.key==ord('s'):
					changeDirection='down'
			if event.key==K_ESCAPE:
					pygame.event.post(pygame.event.Event(QUIT))

判断蛇在那个方向吃到东西的,然后加上那个长度

	if changeDirection =='right' and not direction == 'left':
		direction=changeDirection
	if changeDirection=='left' and not direction=='right':
		direction=changeDirection
	if changeDirection=='up' and not direction=='down':
		direction=changeDirection
	if changeDirection=='down' and not direction=='up':
		   direction=changeDirection
	if direction=='right':
		snakePosition[0]+=20
	if direction=='left':
		snakePosition[0]-=20
	if direction=='up':
		snakePosition[1]-=20
	if direction=='down':
		snakePosition[1]+=20

	snakeSegments.insert(0,list(snakePosition))
	if snakePosition[0]==raspberryPosition[0] and snakePosition[1]==raspberryPosition[1]:
		raspberrySpawned=0
	else:
		snakeSegments.pop()

	if raspberrySpawned==0:
		x=random.randrange(1,32)
		y=random.randrange(1,24)
		raspberryPosition=[int (x*20),int(y*20)]
	raspberrySpawned=1
	playSurface.fill(blackColor)
	for position in snakeSegments:
		pygame.draw.rect(playSurface,whiteColor,Rect
		(position[0],position[1],20,20))
	pygame.draw.rect(playSurface,redColor,Rect
		(raspberryPosition[0],raspberryPosition[1],20,20))
	pygame.display.flip()

判断游戏结束

	if snakePosition[0]>620 or snakePosition[0]<0:
		gameOver()
	if snakePosition[1]>460 or snakePosition[1]<0:
		gameOver()
	for snakeBody in snakeSegments[1:]:
		if snakePosition[0]==snakeBody[0] and snakePosition[1]==snakeBody[1]:
			gameOver()
	fpsClock.tick(10)

游戏运行图

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!