Python开发贪吃蛇小游戏
摘 要 : Python作为最流行的脚本语言之一,具有内置的高级数据结构和简单有效的面向对象编程思想实现。同时,其语法简洁而清晰,类库丰富而强大,非常适合于进行快速原型开发。另外,Python可以运行在多种系统平台下,从而使得只需要编写一次代码,就可以在多个系统平台下都保持有同等的功能。
MYSQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MYSQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
“贪吃蛇”游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。本文基于Python技术与MYSQL连接,开发了一个操作简单、界面一般、功能较齐全的“贪吃蛇”游戏。不仅实现了玩家的登陆注册,还实现了游戏的开始、暂停、结束及游戏音效播放的效果。通过本次贪吃蛇小游戏的开发,让我对Python技术开发游戏的流程有了一定的了解。
关键词:贪吃蛇、Python、MYSQL
目录
1.绪论 1
1.1 设计的目的和意义 1
1.1.1 设计目的 1
1.1.2 设计意义 1
1.2 设计分析 1
1.2.1 设计的主要内容、范围 1
1.2.2 设计应解决的问题 2
2.开发环境 3
2.1 开发工具 3
2.2 环境应用 3
3.概要设计 4
3.1 程序功能模块 4
3.2 程序流程 5
4.详细设计 6
4.1 连接数据库 6
4.2 玩家登陆注册 6
4.2.1 玩家登陆 6
4.2.2 玩家注册 7
4.3 玩家修改密码及退出 7
4.3.1 玩家修改密码 7
4.3.2 玩家退出 8
4.4 游戏说明 8
4.5 开始游戏 8
4.5.1 简单 8
4.5.2 一般 8
4.5.3 困难 9
4.6 游戏界面 9
4.6.1 进行界面 9
4.6.2 结束界面 10
4.7 最高分存取 10
4.8 游戏结束 10
5.测试 11
5.1 测试的意义、目的 11
5.1.1 测试的意义 11
5.1.2 测试的目的 11
5.2 测试过程 11
5.3 测试结果 11
6.结论 12
致谢 13
参考文献 14
附录 16
1.绪论
1.1 设计的目的和意义
1.1.1 设计目的
众所周知,贪吃蛇这款小游戏在我们的生活里随处可见,特别是在诺基亚手机里是必备的一款休闲益智的小游戏,因此它承载着许多人的童年回忆。还有通过玩这个游戏我们大家都可以知道它传递着一种精神,这种精神就是想要得到自己想要的就必须不断努力地向前,坚持不懈,游戏中的食物就如现在社会上所存在的一次机会,而你只有确定好自己的人生目标,才能成功。此次选择以开发贪吃蛇小游戏为课题,主要是对它感兴趣,在回忆童年的同时也了解这款游戏的简易操作是如何实现的,更深一步地感受一下这款小游戏的魅力。
1.1.2 设计意义
随着社会的发展和科技的进步,人们在空闲的时候都会一些小游戏来消遣时光,缓解压力。而贪吃蛇这款
小游戏正好有这种功效,并且适合于各个年龄阶段的人,就拿现在的学生们来说,当他们学习累了的时候就可以玩玩贪吃蛇这种小游戏来放松一下自己,活跃一下大脑,提高学习效率。那些大型的游戏对于他们来说,不仅花费的时间多,而且还需要大量的精力,甚至还会影响到他们的学习。虽然说现在的游戏种类越来越多,但是贪吃蛇这款小游戏还是很受欢迎的,因为贪吃蛇这款小游戏不仅操作简单、容易上手,娱乐性还很强,也称得上是一款很经典的小游戏了。
1.2 设计分析
1.2.1 设计的主要内容、范围
本设计运用Python和MYSQL共同开发了一个普通界面、简单操作、功能一般的贪吃蛇小游戏,玩家可以通过从MYSQL中获取数据登陆或注册用户进入游戏界面,然后选择游戏难度(简单、一般、困难),开始体验游戏的过程。
玩家通过上、下、左、右来操控小蛇移动,每当小蛇头吃到一个食物时,玩家将获得一分,蛇的身体也跟着加了一节,紧接着随机在墙内生成一个食物,并重复刚才的过程。
当玩家操控小蛇移动的过程中,小蛇撞到障碍物(墙或砖块)或蛇头撞到自己的身体时,会出现一个游戏结束界面。游戏结束界面将显示玩家所获取的分数与历史的最高分,让玩家自行比较,在游戏中获得存在感和成就感,以此来提高玩家对此游戏的兴趣。除此而外,每一难度都有对应的背景音效和吃食物音效,能帮助玩家更快地融入游戏的氛围。
1.2.2 设计应解决的问题
本设计需要解决一下几点问题:
(1)玩家登录注册
(2)食物随机生成
(3)蛇身的增加
(4)键盘事件处理
(5)判断撞墙、撞砖块、撞自己
(6)游戏暂停开始
(7)音效设计
(8)最高分存取
2.开发环境
2.1开发工具
本游戏开发采用Python进行编译,Python是一种高级编程语言,它具有动态语义、解释性、面向对象等优点,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。同时,Python语言的数据分析功能也逐渐为大众所认可。Python这门语言很容易学习,关键在于它的语法清晰。Python开发者有一哲学是这样说的,“用一种方法,最好是只有一种方法来做一件事”。通常,Python和其他语言比较起来,Python的源代码被认为具有更好的可读性。
本游戏开发还运用了MYSQL数据库,提取它里面对应的数据进行玩家登陆、注册,MYSQL经果了这么多年的发展之后,已经成为了现今世界上最流行的开源数据库之一,因为它不仅性能高,可靠性也很高,它拥有着很多类似的优点。所以,它获得了全球互联网企业的青睐。
2.2环境应用
操作系统:Windows 10
应用软件:Python、MYSQL、XMPP
3.概要设计
3.1 程序功能模块
由设计应解决的问题可知,本次的设计是使用用方向键来实现一个简易的贪吃蛇小游戏的程序,具体的功能模块如图3-1所示。
图3-1 程序功能模块
Fig.3-1 program functoin module
3.2 程序流程
从设计的主要内容可得流程图如图3-2所示。
图3-2 程序流程图
Fig.3-2 program flow chart
4.详细设计
4.1 连接数据库
用MYSQL做一个数据库,表名为admin,id为主键并设置为自动递增,userName为游戏的用户名,userPwd为游戏的密码,如图4-1所示。
图4-1 数据库
Fig.4-1 database
连接数据库的关键代码如下:
con = pymysql.Connect(host="localhost", user="root", passwd="root", database="2015test", charset="utf8");
# 创建游标
cr = con.cursor();
4.2 玩家登陆注册
通过数据库的数据进行玩家登陆,注册的数据存入数据库中。
4.2.1 玩家登陆
运行程序进入玩家登陆如图4-2所示。
图4-2 登陆
Fig.4-2 login
4.2.2 玩家注册
玩家注册如图4-3所示。
图4-3 注册
Fig.4-3 register
4.3 玩家修改密码及退出
4.3.1 玩家修改密码
玩家修改密码及退出如4-4如图所示。
图4-4 修改密码
Fig.4-4 change password
4.3.2 玩家退出
玩家退出如图4-5所示。
图4-5 退出
Fig.4-5 exit
4.4 游戏说明
黄为食物,棕为砖块,玩家通过上、下、左、右键或者W、S、A、D键操控小蛇,小蛇吃到一个食物加一分,碰到障碍物(墙或砖块)或头撞到自己身体死掉。
4.5 开始游戏
当玩家开始游戏时可以根据自己的喜好选择游戏的难度,游戏的难度分为三种,简单、一般、困难。
4.5.1 简单
简单的适合没有接触过此游戏的玩家,游戏过程中没有障碍物砖块(棕),
玩家就不用去躲避障碍了,仅仅操控小蛇上、下、左、右移动去吃食物(黄),只要小蛇不要撞到墙或自己的身体就可以了,加上小蛇移动的速度比较慢,背景音效也比较轻快,根本没有难度可言,玩家很容易获取分值。
4.5.2 一般
一般的适合玩过此游戏的玩家,游戏过程中设有障碍物砖块(棕),小蛇移动的速度比简单的快一
些。除此之外,当小蛇吃到一个食物(黄)时,就会增加一个砖块,慢慢砖块的数量变得越来越多,制造了很多障碍,玩家不仅要小心撞到墙或自己的身体,还要当心眼下的障碍物砖块(棕),又加上那稍微紧张的背景音效,玩家肯定会受到影响,这样提升了玩家获取分值的难度。也正是如此,相对简单的来说变得刺激了。
4.5.3 困难
困难的适合老玩家,游戏过程中也设有障碍物砖块(棕),小蛇移动的速度又比一般的快一些。当小蛇吃到一个食物(黄)时,就会增加两个障碍物砖块(棕),既是一般生成砖块数量的两倍。不仅游
戏的速度加快了,而且障碍物砖块(棕)生成的数量还翻倍了,这使游戏的难度又提升了一个等次,玩家更难获取分值了。当然,配上那极其紧张的背景音效,变得更加刺激了。
4.6 游戏界面
通过Python软件来开发游戏界面的大小,填充游戏背景图。
4.6.1 进行界面
以一般的游戏难度为例,游戏进行界面的内容有小蛇、食物(黄)、砖块(棕)、暂停开始按钮,具体进行界面如图4-6所示。
图4-6 游戏进行界面
Fig.4-6 game playing interface
4.6.2 结束界面
结束界面的内容有最高分、玩家得分、重新开始按钮、结束游戏按钮,具体结束界面如图4-7所示。
图4-7 游戏结束界面
Fig.4-7 end of game interface
c语言贪吃蛇编程代码4.7 最高分存取
在项目中创建三个TXT文档,分别来存入简单、一般、困难三种游戏难度的历史最高分。当玩家获得的分数小于历史最高分时,提取TXT文档的数据显示到结束界面上,如果玩家获得的分数大于等于历史最高分,玩家分数就会存入TXT文档中,作为新的最高分。
4.8 游戏结束
当小蛇撞到障碍物(墙或砖块)或蛇头撞到自己的身体时,游戏结束界面就会出现,如果鼠标点击结束游戏按钮即游戏结束,同样,鼠标点击重新开始按钮即游戏重新开始
5.测试
5.1 测试的意义、目的
5.1.1 测试的意义
游戏在开发出来之后要进行使用,在使用之前必须进行测试,游戏测试是保证游戏质量的关键的一步,是对游戏开发过程中的游戏设计的最后复查,是为了发现错误而运行程序的关键过程。
5.1.2 测试的目的
游戏测试的目的就是检测游戏所实现的功能是否达到设计的理想要求,既是对自己所开发的贪吃蛇小游戏进行一个鉴定测试,如果发现了错误,好及时加以修正,确保游戏的质量。
5.2 测试过程
手工运行程序测试游戏。
5.3 测试结果
程序运行正常,没有发现错误。
6.结论
转眼间,毕业设计已经步入尾声,这次的毕业设计所花的时间虽然长,但却是一个锻炼自己的好机会。此次设计的项目为用Python开发贪吃蛇小游戏,让我更深一步了解到Python这一语言的知识,也了解贪吃蛇小游戏的简易操作的实现过程,真是满满的收获啊。
刚开始入手做的时候,大脑里一片空白,整个人感觉很迷茫,不知道从哪里入手,想了很久什么都没有想出来,这主要是对Python这门语言不是很了解,因为在做毕业设计之前我们才学习了一周的时间,最后通过在网上查用Python开发像贪吃蛇之类的小游戏视频和资料,才慢慢到了方法,在Python中,开发游戏一般都是使用Pygame模块实现的。
Pygame是Python语言的一个模块,专门用来设计电子游戏的,不仅包含了图像,还包含了图像。
开发过程中以SDL库为基础,允许实时电子游戏研发,不需要被像汇编、机器这些低级语言束缚,在
这样一个设想下,所有需要的游戏理念和功能(主要是图像方面),都完全简化为游戏逻辑本身,所有的资源结构都可以由像Python这种高级语言提供。
通过这次的设计让我知道了一个人想单独完成一个设计的工作量的可能性很小,因为你总会遇到这样那样的问题。在编写的时候,一个小小的符号,一个常量变量的设定,这都无不考量着我们的细心与严谨。所以,我理解到了作为一个编程人员首先应具有良好的心理素质,那就是冷静思考和专心致志,对待学术知识应该是严谨和认真。
总的来说,对于这次的毕业设计我还是比较满意的,不管设计是否完美,但我坚持下来了,通过自己的不懈努力实现的功能也达到了最初的设计要求,这就是坚持不懈的精神。
致谢
这次的毕业设计快要结束了,让我有种释怀的感觉,当然我想我更多的是兴奋,因为自己学到了很多的知识,即便自己设计的不是很完美,但只要是在自己的努力下设计的,都会有一定的成就感,美不可言。
这次毕业设计首先要感谢我的指导老师李老师,谢谢您在从课题的选取到项目的最终完成的整个过程中,都始终给予我悉心的指导和不懈的支持,总之,没有您的帮助,这次毕业设计很难完成。
其次要感谢在这大学四年里,教过我的所有老师,谢谢您们在这四年来的悉心指导,不仅交给我那么多的课内知识,还交给我那么多的课外知识。当然还要陪伴在我身边的朋友们,谢谢你们陪我从大一走到大四,愉快地度过这四年的美好时光。
最后还要感谢那些对本人论文答辩的评议和参与的老师们,谢谢您们在百忙之中还抽出时间对本文进行审阅。反正就是感谢帮助过我的所有人,请大家在此收下我诚挚的谢意,谢谢你们!
参考文献
[1]徐丽平,郭琳.贪吃蛇游戏的设计思路与实现[J].信息与电脑(理论版),2013(11):30-31.
[2]李俊华.基于Python的数据分析[J].电子技术与软件工程,2018(17):167.
[3]罗旋,张硕.Python语言程序设计课程建设初探[J].电脑知识与技术,2018,14(14):135+154.
[4]詹重咏.MYSQL数据库中数据导入与导出探析[J].数字技术与应用,2017(12):231+233.
[5]朱贇.Python语言对程序设计基础教学的意义[J].福建电脑,2017,33(06):176-177.
[6]黄传禄.基于Python的MYSQL数据库访问技术[J].现代信息科技,2017,1(04):73-75.
[7]刘班.用Python语言开发弹跳球游戏[J].电脑编程技巧与维护,2014(07):79-84.
[8]丁军燕.Python语言的教学实践[J].职业,2017(07):84.
[9]王晓燕.MYSQL数据库中误操作删除数据的恢复问题[J].办公自动化,2018,23(1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论