基于Python的PyGame库实现的贪吃蛇小游戏

基于Python的PyGame库实现的贪吃蛇小游戏 1 项目介绍 1,1 简介 键盘上下左右控制蛇的前进方向,每吃到一个食物,蛇的长度增加一个单位

本文包含相关资料包-----> 点击直达获取<-------

基于Python的PyGame库实现的贪吃蛇小游戏

1 项目介绍

1.1 简介

键盘上下左右控制蛇的前进方向,每吃到一个食物,蛇的长度增加一个单位,并生成一个新的食物,得分scores加一;当蛇撞到边界或自己时,游戏结束。时间time随蛇的步子增加,每走一步time加一。游戏结束后,按下空格键重新开始游戏,按下回车键结束游戏,退出。全程有音乐,退出后音乐也停止。

1.2 开发环境

  • 开发语言:Python,pyCharm,pygame

2 方案

2.1 模块

  • pygame

  • sys

  • random

  • pyglet

2.2 数据

  • 蛇类和食物类

  • 初始化窗口为600*600

  • 像素块为25*25

  • 蛇和食物都是正方形的结点

2.3 接口

  • 蛇的身体设置为列表,初始化蛇有5节身体,依次递增

  • 食物为小正方形,随机生成,一次一个

  • 字体显示为函数控制

2.4 类

  • 蛇类:初始化了各种有关蛇的属性。一开始初始化方向为向右,初始化蛇身为长度为五的列表。接着在蛇头处添加结点。再删除最后一个结点,判断是否死亡

  • 食物类:初始化食物小方块,随机设置食物位置,如果蛇吃到了食物,则抹掉了该食物,重新设置食物

  • 字体:设置字体,并且可以在窗口中显示

2.5 流程

  • 先绘制窗口,设置窗口名字为“Snake Game”,设置时钟

  • 初始化分数scores和time为0,是否死亡属性为false

  • 初始化蛇类与食物类

  • 当正常运行时,如果检测到键盘上下左右输入了,则改变蛇前进方向

  • 如果碰到四周或者自己的身体,则死亡

  • 死亡后如果按空格键,则重新开始

  • 如果按回车键,则结束进程,游戏结束

3 关键技术

3.1 蛇身设为一个列表

python self.body = [] for x in range(5): self.addnode()

3.2 音乐的播放

python pygame.init() pygame.mixer.init() sound = pygame.mixer.Sound("music.wav") sound.play()

3.3 蛇增长的函数

python def addnode(self): left, top = (0, 0) if self.body: left, top = (self.body[0].left, self.body[0].top) node = pygame.Rect(left, top, 25, 25) if self.dirction == pygame.K_LEFT: node.left -= 25 elif self.dirction == pygame.K_RIGHT: node.left += 25 elif self.dirction == pygame.K_UP: node.top -= 25 elif self.dirction == pygame.K_DOWN: node.top += 25 self.body.insert(0, node)

3.4 改变方向但是左右上下不能被逆向更改

python def chdirection(self, head): LR = [pygame.K_LEFT, pygame.K_RIGHT] UD = [pygame.K_UP, pygame.K_DOWN] if head in LR + UD: if (head in LR) and (self.dirction in LR): return if (head in UD) and (self.dirction in UD): return self.dirction = head

4 结果和效果

5 总结和不足

这次贪吃蛇的实现对我来说有很大收获,python虽然是一门陌生的语言,但是却与之前学习过的c和c++有很大的相似性,学习起来也就轻松了很多。但是python也确实是一门新的语言,有些规则与c,c++毕竟是不一样的,还是有难度的。而且python的运行环境与vs不一样,运行所需要的库也不一样,这些不一样就造成了python的难度。虽然有些难度,但是学习起来的时候,能把所有的问题挨个解决的感觉也还是很好的。

编程过程中有很多的问题,例如,文字的内容无法直接判断得出,我是一个个的测试,最后找到了最佳位置。加音乐的问题,我修改了好久的bug,一开始使用的pygame.mixer一直都显示有问题,无法打开mp3等,后来请教了老师,老师表示不要用mp3格式。但是我修改了格式,还是显示打不开文件。然后我上网换了另一种方法,运用系统的os来播放音乐,但是os是调用了系统自身的软件,打开了音乐播放器,而且当我游戏结束的时候无法正常关闭音乐。后来又找到了pyglet的模块,尝试使用,问题出现在只能播放音乐或者游戏,二者不能兼得,播放了音乐,游戏就卡住;开始游戏就无法正常播放音乐。最后找到了的方法是换音乐,用了一个纯wav格式的音乐,再次使用pygame的方法,这才成功。最后的教训在于不能直接改后缀名,要么就用正规的软件修改,要么就使用纯正的格式。

在这一次的编写小游戏的过程中,我上网查阅了很多资料,绝大部分是英文的,这让我明白了英文在计算机领域的重要性。并且我认识到了我的不足,在编程过程方面我还有很多不足之处的,以后的道路任重道远,要不断充实自己,丰富自己,感谢老师和同学对我的帮助,通过这次学习,我学习到了很多知识,以及深刻了解到自学和英语的重要性。

参考文献

  • 基于.NET平台的ETF终端设计与实现(吉林大学·刘健)
  • 主题爬虫关键技术研究(哈尔滨工程大学·黄正德)
  • 深度可定制的工具化爬虫系统的设计与实现(北京邮电大学·李笑语)
  • 主题爬虫关键技术研究(哈尔滨工程大学·黄正德)
  • 基于SSH框架的电子宠物系统设计与实现(吉林大学·王丽丽)
  • 基于网络爬虫的电影集成搜索系统设计与实现(江西农业大学·江沛)
  • 轻量级分布式虚假信息爬虫的设计与实现(辽宁大学·韩昱)
  • 豆玩手机游戏平台的设计与实现(吉林大学·李天明)
  • 基于.NET平台的ETF终端设计与实现(吉林大学·刘健)
  • 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
  • 基于Android平台的手机游戏的设计与开发(云南大学·秦成)
  • 基于Android平台的手机游戏的设计与开发(云南大学·秦成)
  • 基于Android平台的手机游戏的设计与开发(云南大学·秦成)
  • 基于Android平台的象棋游戏设计与开发(吉林大学·阿若娜)
  • 基于Cocos2d-JS引擎的手机网页游戏设计与实现(武汉邮电科学研究院·赵甜)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计驿站 ,原文地址:https://m.bishedaima.com/yuanma/35227.html

相关推荐

发表回复

登录后才能评论