马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 小诺爷 于 2020-6-10 18:32 编辑 import pygame,sys,random #pip install pygame安装pygame模块命令
from pygame.locals import *
#1定义颜色变量(目标方块,贪吃蛇,背景)
#根据rgb值选择颜色
redcolor = pygame.Color(255,0,0)#根据rgb值选择颜色
#目标方块颜色
whitecolor = pygame.Color(255,255,255)#根据rgb值选择颜色
#背景颜色
blackcolor = pygame.Color(0,0,0)#根据rgb值选择颜色
#2定义游戏结束函数
def gameover():
pygame.quit()#pygame模块结束
sys.exit()
#3实现工作
def main():
#分一pygame初始化
pygame.init()
#分二控制速度
fpsclock = pygame.time.clock()#速度控制
#分三创建pygame的显示层
playsurface = pygame.display.set_mode((640,480))#界面大小
pygame.display.set_caption('贪食蛇')#定义游戏名字
#分四 初始化变量
snakeposition = [100,100]#贪食蛇起始位置
snakebody = [[100,100],[80,100],[60,100]]#贪食蛇初始长度
targetposition = [300,300]#方块初始位置
targetflag = 1#方块的标记,判断吃掉了方块
direction = 'right'#初始化方向为右
changeDirection = direction#方向变量,人为控制,并与键盘联系
#分五pygame中的事件要实时循环
while True:
for event in pygame.event.get():#获取所有事件可能
if event.type == QUIT:#如果事件不符合,退出
pygame.quit()#退出pygame
sys.exit()
elif event.type == KEYDOWN:#判断按键事件
if event.key == K_RIGHT:#key值为右,那么目标值为右
changeDirection ='right'
if event.key == K_LEFT:#key值为左,那么目标值为左
changeDirection = 'left'
if event.key == K_UP:#key值为上,那么目标值为上
changeDirection = 'up'
if event.key == K_DOWN:#key值为下,那么目标值为下
changeDirection = 'down'
#分六确定方向
if changeDirection == 'left' and not direction == 'right':#判断方向为左
direction = changeDirection#确定
if changeDirection == 'right'and not direction == 'left':#判断方向为右
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
#分八增加蛇的长度
snakebody.insert(0,list(snakeposition))
#如果贪食蛇和方块重合,成功,标记为0
if snakeposition[0] ==targetposition[0] and snakeposition[1] == targetposition[1]:
targetflag = 0
else:
snakebody.pop()
targetflag == 0
x = random.randrange(1,25)
y = random.randrange(1,25)
targetposition =[int(x*20),int(y*20)]
playsurface.fill(blackcolor)
for position in snakebody:
pygame.draw.rect(playsurface,redcolor,Rect(position[0],position[1],20,20))
pygame.draw.rect(playsurface,whitecolor,Rect(targetposition[0],targetposition[1],20,20))
pygame.display.flip()
if snakeposition[0] > 480 or snakeposition[0] < 0:
gameover()
elif snakeposition[1] >480 or snakeposition[1] < 0:
gameover()
fpsclock.tick(6)
if __name__ == '_main_':
main()
|