基于Python的贪吃蛇游戏设计报告

收藏关注不迷路


前言

   在现代文明高度发达的今天,人们在日常生活中来源于各个方面的压力也越来越大。在所剩无几的闲暇时间里,人们更希望通过某种娱乐方式来放松疲惫不已的身心。游戏,我相信这是很大一部分人的选择!说到游戏,可能每个人有不同的答案,但是有一款游戏是每个人都熟悉并且玩过的,那就是贪吃蛇。贪吃蛇以其无网络运行、硬件要求低,操作简单等优势在非智能手机时代大放光彩。本次毕业设计的主题就是小游戏贪吃蛇的设计与实现,此次选择的程序设计语言为Python。Python运用地越来越广泛,甚至有着“黄金语言”的美称,它拥有相当丰富的标准库以及第三方模块库。为了节省开发的时间成本,本文运用的就是其中的PyGame模块来实现游戏的开发工作。

关键词:游戏;贪吃蛇;Python;PyGame

一、功能介绍

   本贪吃蛇游戏系统的实现就是在屏幕显示区域内绘制出一条小蛇,同时在与小蛇身体不重合的屏幕显示区域内绘制出一个食物,游戏玩家通过键盘上的方向键来操控小蛇的行进方向去吃掉食物,食物被吃掉后又会在显示区域内随机出现另一个食物,而小蛇每吃下一个食物身体便会增长一段,如此反复,蛇越长时则对游戏玩家来说越难操作。当蛇的头部撞击到屏幕边缘或是蛇身的任意一个部位的时候,游戏结束[11]。
  贪吃蛇游戏实现的关键就在于蛇身图形组建和蛇行进轨迹的绘制。我们可以通过画小矩形块(rect属性)的方式来画出小蛇,在小蛇的每次移动的时候,删掉蛇身的最后一个矩形块,在蛇头增加一个新的矩形块,就相当于把蛇的最后一个矩形块加在蛇头的位置。小蛇每移动一个单位,屏幕就重新绘制一次,这样就可以实现小蛇行进的动态效果。而在蛇吃下食物的时候,蛇头覆盖食物,在蛇尾加上一个小矩形块,同时利用random模块随机绘制另一个食物(上一个食物此时消失)[12]。

二、开发环境

  通过Python的PyGame模块完全可以实现本游戏中所需求的事件。PyGame模块包含可以导入音乐以及各个飞机种类的图片,所以所有必要的游戏功能和概念(特别是图片的交互)都完全简化为游戏逻辑本身。综合以上情况及考虑,本游戏的开发在技术上是完全可行的。
  要使用Python进行游戏开发的话,那么一定会用到Pygame模块。Pygame模块是利用SDL库实现的[11]。Pygame的代码是开源共享的。Pygame可以用来创建完全界面化的游戏和多媒体程序、而且使用Pygame编写的软件可以在绝大部分平台和系统中运行[12]。Pygame主要包含以下功能:绘制图型、显示图片、动画效果、与键盘鼠标和手柄的外部设备的交互、声音处理及播放、碰撞检测。
  Python通过分离Python脚本与游戏引擎之间的数据交互,达到逻辑与具体实现分离的目的,使其更加丰富[9]。
  Python脚本可以基于Python和C++在Python和C之间进行交互,其中最重要的部分是异常的处理和数据格式的转
换[10]。

————————————————

三、程序流程设计

1.程序流程图

本次设计的游戏程序运行的流程框图如图4-1所示。
在这里插入图片描述

图4-1 程序流程框图

2.界面设计

首先定义程序运行界面的大小,背景色等,便于在各个界面显示统一,为玩家提供更好的观感。
游戏界面分为:开始界面、游戏界面和结束界面。在开始界面时,程序运行窗口左上角显示自定义的游戏名称,居中位置显示导入的背景图片,下方显示玩法说明及操作指南;在游戏界面时,整个程序窗口用于游戏,小蛇可在窗口中任意行进,食物显示为蓝色圆形,右上角显示玩家分数,每吃掉一个食物增加一分;当游戏结束时,显示结束界面,窗口居中位置为“GameOver”字样图片,下方则显示游戏提示“请按任意键重新游戏或Esc键退出游戏”。

3.功能设计

除了游戏的基本功能实现之外,为了增加游戏的可玩性设置了F1加速、F2减速、F3无敌等功能。在游戏中还添加了暂停功能,玩家可通过SPACE键来暂停/继续游戏。每当玩家吃到5个食物时随机生成一堵长度在1-5之间的障碍物,而且速度也会增加。在游戏结束时,可按除ESC以外的任意键来重新开始游戏,按ESC键则退出程序。

四、系统实现

4.1 开始游戏

游戏开始的时候会在程序窗口内随机位置生成一个长度为5的贪吃蛇,蛇头为醒目的红色,而蛇身是绿色。同样地,会在地图内随机生成长度在1-5之间的黑色障碍物,普通模式下贪吃蛇触碰到障碍物则游戏结束。为了区分贪吃蛇和食物,食物是用圆形的形式画出,并采用蓝色。游戏开始界面截图如图6-1所示。
在这里插入图片描述

图6-1 游戏开始界面

4.2 生成障碍物

为了增加游戏的可玩性,特别加入了生成障碍物的功能,障碍的生成位置随机,长度在1-5个小方块,以黑色填充。每当玩家吃到5个食物时,障碍物就会多一个,并且贪吃蛇的行进速度也会增加一级。当玩家需要调节速度的时候,可通过F1加速、F2减速来实现。障碍物的固定长度为5,但是在生成时碰到屏幕边缘时会停止生成,所以就会有长度1-5的障碍物出现的情况,也更加增添了游戏的丰富性。游戏生成障碍物界面截图如图6-2所示。

在这里插入图片描述

图6-2 生成障碍物界面

4.3 无敌功能

考虑到贪吃蛇会随着吃到的食物变得越来越长,速度也越来越快,玩家不便控制很容易会导致游戏结束。所以特别加入了无敌功能,玩家只需按下F3键则可开启/关闭无敌模式。在无敌模式下,贪吃蛇可在地图中任意穿行,碰到障碍物和蛇身也不会死亡。游戏无敌功能界面截图如图6-3所示。
在这里插入图片描述

在这里插入图片描述

图6-3 无敌功能界面

目录

目录
摘要 I
Abstract II
一、绪论 1
(一)研究现状与背景 1
(二)行性分析 2
二、需求分析 2
(一)功能性需求 2
(二)非功能性需求 3
三、游戏及开发工具简介 3
(一)游戏简介 3
(二)Python简介 3
1.Python的运行原理 3
2.Python的特点 4
3.PyGame简介 5
(三)PyCharm简介 5
四、概要设计 6
(一)功能介绍 6
(二)程序流程设计 6
1.程序流程图 6
2.界面设计 7
3.功能设计 8
(三)游戏过程 8
五、系统实现 8
(一)功能概览 9
(二)构建开始界面 9
(三)蛇与食物的绘制 10
(四)蛇的移动 11
(五)游戏运行主体 12
5.6 碰撞检测 14
6 系统测试 15
6.1 开始游戏 15
6.2 生成障碍物 15
6.3 无敌功能 16
6.4 系统测试 17
七、优化与总结 18
(一)优化升级设想 18
(二)项目总结 18
致谢 20
参考文献 21

猜你喜欢

转载自blog.csdn.net/QQ2743785109/article/details/133758459