计算机软件实习项目二 —— 贪吃蛇游戏 (实验准备) 12-10 (12-16更新)

实验准备

??前一个项目使用了C++来编写计算器,感觉一半以上的时间花在了学习QT框架以及解决一些繁杂的小问题上,于是这次贪吃蛇游戏我准备用Python来进行编写。好多天前就开始写这个游戏了,由于一直在不断的修改、完善,导致托更严重。

目录

    • 实验准备
      • 一、贪吃蛇
        • 1. 蛇的定义
        • 2. 食物的定义
        • 3. 初始化窗口
        • 4. 初始化游戏
        • 5. 欢迎界面
        • 6. 开始游戏
        • 7. 子方法
          • (1)snakeMove()方法:
          • (2)food()方法:
          • (3)bodyMove()方法:
          • (4)check()方法:
          • (5)gameOver
        • 8. 事件
          • (1) keyPressEvent()方法:
          • (2)paintEvent()方法:
      • 二、游戏界面设计
        • 1. 游戏风格 (———— 亮点 ————)
        • 2. 欢迎界面
        • 3. 游戏界面
          • ①主游戏区:
          • ②信息区:
      • 三、游戏音效
        • 1. 背景音乐
        • 2. 提示音效
        • 3. 游戏音效

一、贪吃蛇

1. 蛇的定义

(1)head_x,head_y:蛇头部的坐标可以用两个变量来定义,一个储存蛇头在地图的第几行,另一个储存蛇头在地图的第几列。

(2)coordinate[]:整条蛇包括蛇头的坐标可以放在一个列表里,列表里的每一个元素为字符串类型,方便用于查找判定蛇头是否与自身发生碰撞。

(3)direction:蛇头部的当前方向。

2. 食物的定义

(1)food_coordinate:用于储存当前食物的坐标。
(2)food_type:食物种类。

3. 初始化窗口

(1)__init__方法: 设置窗口大小,窗口图标,以及固定窗口大小。

4. 初始化游戏

?init()方法:
(1)随机蛇头位置、蛇头方向、食物位置食物种类;
(2)初始化蛇的速度、分数;
(3)初始化暂停标志、结束标志;
(4)初始化游戏音乐;

5. 欢迎界面

(1)初始化欢迎界面音乐;
(2)根据游戏标志选择进入主游戏界面;

6. 开始游戏

(1)snakeMove()方法:蛇的自动移动。
(2)check()方法:判断蛇是否吃到食物、是否吃到自己、是否撞墙。
(3)update()方法:重新绘制,刷新地图。

7. 子方法

(1)snakeMove()方法:

??根据当前蛇的方位,更新蛇头坐标。

(2)food()方法:

??随机产生食物坐标,且坐标不与整条蛇的任意一个结点坐标重合。

(3)bodyMove()方法:

??更新蛇身和蛇头的坐标位置。

(4)check()方法:

??①判断蛇是否吃到食物,如果吃到,更新速度、分数。
??②判断蛇是否触碰到边界,如果碰到就执行结束游戏方法。
??③判断蛇头是否触碰到自身,如果碰到就执行结束游戏方法。

(5)gameOver

??①更新最高分。
??②根据游戏结束标记判断游戏失败或游戏胜利。
??③画出胜利标志,播放对应音效。

8. 事件

(1) keyPressEvent()方法:

??获取键盘按下的按键,通过区分不同按键来做出对应操作。

??①↑↓←→ 键:改变龙头方向
??②Space 键:开始游戏 / 暂停游戏 / 重新开始游戏
??③Esc 键:退出游戏

(2)paintEvent()方法:

??每次执行update()方法的时候会调用paintEvent方法,通过在类内定义的各种标志来绘制不同的图形。

??①创建一个画笔。
??②根据欢迎界面标志判断是否要画欢迎界面,如果不是则画主游戏界面。
??③画主界面的背景图、信息栏图、分割线、分数、最高分、提示信息等。
??④蛇龙头、蛇身、蛇尾巴。
??⑤根据食物种类标记,画不同的食物。
??⑥画信息栏,包括:分数、最高分、按键规则、游戏规则。
??⑦根据游戏暂停标记画游戏暂停提示。
??⑧根据游戏结束标记绘制游戏胜利 / 游戏失败,显示得分以及提示信息。

二、游戏界面设计

1. 游戏风格 (———— 亮点 ————)

??整个游戏我选择以龙作为游戏主体,以古风作为游戏主题,以古韵作为游戏色彩。

??①蛇头蛇身分别替换为龙头、龙身和龙尾。

??②食物为龙珠,有三星、五星和七星龙珠,分别对应不同的分数。

??③游戏背景为山水国画、水墨画,体现了古风古韵。

??④游戏字体为方正小篆和汉仪尚巍手书体,字体很有劲道。

??⑤游戏音乐为古风音乐,非常搭配山水国画。

??⑥游戏名称和Logo均与龙有关,风格一致。

??⑦死亡音效为龙的咆哮。

2. 欢迎界面

①主游戏区:

??贪吃蛇之能在这个区域内移动,这个区域为游戏的边界,蛇跑出这个区域则判定为游戏失败。食物随机生成的位置也在这个区域。游戏的暂停、胜利、失败都会显示在这个区域,还有这三个状态对应的按键提示也显示在这里。

②信息区:

??信息区主要显示分数信息、最高分信息、按键提示和游戏规则。分数和最高分都是实时刷新的。游戏速度和分数成正相关,游戏分数越高,蛇的移动速度就越快,难度也就越高。

三、游戏音效

1. 背景音乐

??欢迎界面采用较为舒缓有意境的背景音乐,而进入游戏界面时会切换成较为激昂的游戏音乐,使得玩家有更好的游戏体验。

2. 提示音效

??在不同界面的提示信息下按下相应的按钮,会有咔嚓一声键盘按键声音,非常的有趣。

3. 游戏音效

??①在蛇吃到食物的时候会有对应的音效。
??②在蛇死亡的时候会有对应的音效。
??③在游戏胜利的时候会有对应的音效。

??这一篇只是对游戏的整体架构进行设计、对游戏的功能进行设计,具体的代码实现见下一篇博客。

????????????????????———2020.12.16(罗涵)

???????????????????????????THE END

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览35170 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月12日
下一篇 2020年11月12日

相关推荐