c语言贪吃蛇大作业报告,C语言大作业报告——贪吃蛇游戏(19页)-原创力文档...

《C语言程序设计》实验大作业反思报告

PAGE 10

《C语言程序设计》实验大作业反思报告

大作业题目

类型

信息管理系统 / 游戏

班 号

学 号

所在院系

学 期

任课教师

实验类型

综合设计型

实验目的:

掌握程序设计的基本算法和简单数据结构基础,能够综合运用基本控制语句、算法和数据结构,以及自顶向下、逐步求精的模块化设计方法,能够设计具有一定规模的系统级C语言程序,提高系统编程能力;

针对计算相关的复杂工程问题,能够使用恰当的算法和数据结构,完成计算、统计、排序、检索、匹配等相关的软件系统的构造、测试与实现;

掌握常用的程序调试和测试方法。

实验要求:

采用自顶向下、逐步求精的模块化设计思想设计一个小型信息库管理系统,或者闯关式游戏程序。

要求解释说明采用了什么数据结构和算法,为什么选择这种数据结构或算法,系统实现过程中遇到了哪些问题,这些问题是如何解决的,还有什么问题尚未解决,今后打算从哪几个方面进行改进,本设计的亮点和难点在哪里,实验结果如何,有哪些收获和学习体会;

编写程序完成以下实验大作业内容并完成实验大作业反思报告。

实验内容:

设计游戏开始界面

设计蛇以及食物的数据结构

设计游戏的空间大小

用户通过按键进行蛇的上下左右移动

用户不进行按键时蛇保持前进状态

随机在空间内产生食物,并且出现食物的分数

用户可以通过食物形状来判断,并且系统判断蛇是否吃到食物

当蛇吃到食物,蛇会增长,同时分数增加

当蛇吃到自己或者撞墙,游戏结束

用户可以通过自己按键来使游戏结束

实验环境:

操作系统: Windows 10

集成开发环境:Codeblocks17.12

外部库:

输入输出设计:

游戏难度输入,char类型,因为通过单个字符来判定游戏难度方便游戏玩家,同时字符可以用getchar()读走。上下左右移动输入,char类型,原因同上。

输出游戏成绩,int型,原因每个食物的分数采取整型,简单明了。

系统设计与实现:

系统功能模块划分

游戏开始对系统进行自顶向下的模块分解,画出系统各个功能模块之间的结构图

游戏开始

游戏

游戏界面生成

生成

生成食物和蛇的形状

用户

用户操作游戏进程

结束

结束游戏

函数功能和外部接口设计

本系统总计设计了8个函数,每个函数的功能和接口设计如下表所示:

序号

函数名

函数功能

函数参数

函数返回值

1

main

主函数

int

2

Start

游戏初始状态

int

3

Circle

控制游戏范围

4

End

游戏结束

5

Food

食物创造

6

Line

将光标移动到指定位置

Int x,int y

7

Pause

暂停游戏

8

Map

生成地图

9

Snake

生成小蛇

10

Move

进行蛇的移动

int

11

Welcome

游戏欢迎界面

12

Wall

判断是否撞墙

int

13

Eatself

判断是否吃到自己

int

各个函数之间的调用关系如下所示:

进行

进行光标的移动

游戏

游戏初始化

对地图

对地图和蛇初始化

主函数

蛇的移动

蛇的移动

游戏进程

进行游戏输赢

进行游戏输赢判断

判断

判断是否撞墙或吃掉自己

结束

结束游戏

数据结构

用链表初始化小蛇,采用了链表的结构

算法

采用迭代的方式对小蛇进行状态描述

采用了递归算法保证食物在空间内

对游戏结束时的信息显示采取了枚举法

程序流程图

系统总体流程图如下:

游戏

游戏初始界面

初始化

初始化地图,生成地图,小蛇,成建食物

显示

显示当前分数

是否吃到食物小蛇进行

是否吃到食物

小蛇进行移动

玩家进行操作

得分增加,创建

得分增加,创建新食物

是否撞墙或

是否撞墙或吃到自己

输出分数,游戏结束

输出分数,游戏结束

实验过程中遇到的问题及解决方法与思路:

问题1: 蛇吃掉了食物但是分数并没有及时进行变化

原因:处理分数的函数所处于的位置导致进行有时差

解决方法:不断地改变函数位置,找到最合适的位置

问题2: 每次食物的更新总是出现到同一个地方

原因:随机函数出现了问题

解决方法: 进行随机函数的重新学习认识,然后再进行更改

问题3:小蛇撞墙游戏并未结束

原因:判断是否吃掉自己这个功能的函数出了问题

解决方法:对这个函数进行更改,并不断调试运行

测试用例和系统测试结果:

测试用例1:

初始界面:

……游戏介绍界面:

游戏进行界面

游戏结束界面

程序的全部源代码:

#include??

#include??

#include??

#include??

#define?U?1??

#define?D?2??

#define?L?3??

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值