|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
复制代码 |
|