千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 手把手教你用Python写一个贪吃蛇大冒险小游戏!

手把手教你用Python写一个贪吃蛇大冒险小游戏!

来源:千锋教育
发布人:wjy
时间: 2022-10-09 10:44:51 1665283491

  这是一个简单的Python小游戏

  一、游戏简介

  1.1 游戏操作及游戏规则

  (1)游戏开始后,通过键盘上下左右键控制贪吃蛇移动寻找食物;

  (2)贪吃蛇每吃一个食物,身长会增加一个单位;

  (3)在正常模式中,贪吃蛇如果碰到墙面或咬到自身,则游戏失败;

  (4)在可穿墙模式中,贪吃蛇可以穿过墙面,但咬到自身后,游戏失败。

  二、游戏总体设计

  2.1 游戏总体设计框架图

用Python写了一个贪吃蛇大冒险小游戏364

  三、编译语言以及用到的库文件描述

  3.1 Python语言

  Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),Python语言具有非常简洁且清晰的语法特点,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。目前,基于Python语言的相关技术正在飞速发展,用户数量急剧增大,相关的资源越来越多。

  3.2 pygame库

  Pygame是跨平台Pyth,Pygame 作者是 Pete Shinners, 协议为 GNU Lesser General Public License。Pygame包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚。基于这样一个设想,所有需要的游戏功能和理念(主要是图像方面)都完全简化为游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。

  3.3 random库

  Random是产生随机数的库,即随机数发生器,random产生的是伪随机数或者说是用一种复杂的方法计算得到的序列值,因此每次运算时需要一个不同的种子值。种子值不同,得到的序列值也不同。

  3.4 time库

  time库是Python中处理时间的标准库,用于计算机时间的表达,提供获取系统时间并格式化输出功能,提供系统级精确计时功能,也可用于程序性能分析。

  3.5 sys库

  sys.exit([ arg ])用于程序的退出,sys.exit(n) 退出程序,正常退出时exit(0)。这是通过引发SystemExit 异常来实现的,因此遵循finally语句的子句所指定的清理操作try ,并且可以拦截外层的退出尝试。可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象。如果它是整数,则零被认为是“成功终止”,并且任何非零值等视为“异常终止”。

  四、游戏设计与实现

  4.1 游戏整体设计

  · 定义贪吃蛇对象,包括蛇头和蛇身两个部分,蛇头单独设置,蛇身使用列表来存储;

  · 定义食物对象,包括食物对象的初始化、随机颜色和随机位置的设置;

  · 定义初始化界面,在该界面中设置文本为“正常模式”、“可穿墙模式”和“退出”的三个按钮供玩家选择;

  · 定义正常模式,包括游戏窗口显示、主循环和判断贪吃蛇死亡的设置;

  · 定义可穿墙模式,包括游戏窗口显示、主循环和判断贪吃蛇死亡的设置;

  · 定义游戏结束窗口,包括窗口显示和最后得分显示的设置。

  4.2 主要函数解析

  4.2.1 new_food()函数

  食物对象初始化函数,传入形参为贪吃蛇蛇头坐标。当贪吃蛇吃掉食物后,通过该函数生成新的食物。通过传入形参判断新生成的食物坐标是否与蛇头坐标相同,若相同则重新生成新的坐标。

  4.2.2 start_game()函数

  正常模式的主循环函数,通过该函数进行正常模式下贪吃蛇和食物的初始化、玩家控制贪吃蛇运动、蛇头和蛇身的判断更新和得分统计实现。

  4.2.3 die_snake()函数

  正常模式下贪吃蛇死亡判断函数,传入形参为贪吃蛇蛇头和蛇身坐标数据。在该函数中设置布尔型变量die_flag,若死亡设置为Ture并返回,没有死亡为False。通过遍历蛇身存储列表,判断蛇身坐标是否与蛇头坐标相同,若相同则判定贪吃蛇咬到自身,死亡。同时,判断贪吃蛇是否撞墙,及判断蛇头的x和y坐标是否窗体的宽高,若超过则死亡。

  4.2.4 start_kgame()函数

  可穿墙模式的主循环函数,通过该函数进行可穿墙模式下贪吃蛇和食物的初始化、玩家控制贪吃蛇运动、蛇头和蛇身的判断更新和得分统计实现。

  4.2.5 through_snake()函数

  可穿墙模式下贪吃蛇死亡判断函数,传入形参为贪吃蛇蛇头和蛇身坐标数据。在该函数中设置布尔型变量die_flag,若死亡设置为Ture并返回,没有死亡为False。通过遍历蛇身存储列表,判断蛇身坐标是否与蛇头坐标相同,若相同则判定贪吃蛇咬到自身,死亡。

  4.2.6 show_end()函数

  游戏结束时,结束界面设置函数。在该函数中进行结束界面窗体的初始化,在窗体中显示玩家的最终得分,并在改函数中调用pygame库quit方法,使该库停止工作。

  4.2.7 into_game()函数

  游戏初始界面实现函数,在该函数中进行游戏初始界面窗体的初始化。在该界面窗体中设置文本为“正常模式”、“可穿墙模式”和“退出”的三个点击按钮,通过设置循环,调用button函数(详细见6.2.8)监听玩家的点击。

  4.2.8 button()函数

  游戏初始界面按钮监听函数,在该函数中实现对玩家鼠标点击事件和键盘输入事件的监听。并根据玩家选择,运行按钮对应的触发函数。即点击“正常模式”按钮,运行正常模式的主循环函数,以此类推。

  五、运行模块代码结构

  在运行模块,进行pygame库的初始化、设置游戏背景音乐、显示窗口各个参数的设置以及游戏初始界面的显示设置,具体结果代码如下图:

用Python写了一个贪吃蛇大冒险小游戏2576

用Python写了一个贪吃蛇大冒险小游戏2723

  六、游戏运行测试(截图)

  1. 游戏初始选择界面

用Python写了一个贪吃蛇大冒险小游戏2895

  2. 正常模式运行界面

用Python写了一个贪吃蛇大冒险小游戏3054

  3. 可穿墙模式运行界面

用Python写了一个贪吃蛇大冒险小游戏3214

  4. 游戏结束界面

用Python写了一个贪吃蛇大冒险小游戏3371

  七、游戏完整代码

用Python写了一个贪吃蛇大冒险小游戏1

用Python写了一个贪吃蛇大冒险小游戏2

用Python写了一个贪吃蛇大冒险小游戏3

用Python写了一个贪吃蛇大冒险小游戏4

用Python写了一个贪吃蛇大冒险小游戏5

用Python写了一个贪吃蛇大冒险小游戏6

用Python写了一个贪吃蛇大冒险小游戏7

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT