基于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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月14日
下一篇 2023年12月14日

相关推荐