c语言大作业小游戏,C语言大作业报告——2048小游戏(14页)-原创力文档

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

PAGE 10

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

大作业题目

类型

游戏

班 号

学 号

所在院系

学 期

2020年春季学期

任课教师

实验类型

综合设计型

实验目的:

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

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

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

实验要求:

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

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

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

实验内容:

在游戏初始化界面,屏幕会显示16个方格(4*4),其中随机两个方格会出现2或4这两个数字,2与4出现的机率比为9:1。在游戏开始后,玩家通过键盘输入a, d ,w ,s四个选项来控制格子中数字左移,右移,上移,下移。当输入一个选项后,所有的数字块都会向所选择的方向靠拢,相同的数字块相撞时,会相加合并为一个数字块,除此之外,在每做出一次选择后,程序会在空白位置随机产生一个新的数字块2或4,2与4出现的几率之比为9:1。同时,程序会将所有相撞产生的新数字块相加,作为玩家的分数,随着每次移动而更新。当所有数字块都被填满且相邻数字块都不相等时程序会判定为游戏结束,并显示“GAME OVER!”字样。

实验环境:

操作系统:Win10

集成开发环境:Codeblocks17.12

外部库:无

输入输出设计:

程序的输入数据为a ,d ,w ,s ,四个英文小写字母,为字符型变量。程序的输出部分包括构成游戏的外框的图形以及随时更新的数据,为整型变量。程序加入了对于非法输入数据的处理,在loop _ Game函数的入口处采用了switch选择控制结构,同时通过switch的选择控制结构来检查用户输入数据的有效性,当输入的字符为除a, d ,w ,s之外的字符时,程序将不会改变游戏界面以及游戏分数的显示,会自动选择重新回到读取键盘输入的部分,只有当输入字符为a ,d ,w ,s中的一个时,程序才会继续进行后续的数字块移动以及分数累加等操作。程序的输出部分构成4*4网格的外框形状,以及数字块中的随时更新的数字,以及在方格上方所显示的游戏的分数,以及在游戏结束时所显示的“GANE OVER!”字样。为保证游戏的健壮性,当方块内数字累加至超过四位数时,数字将会以科学计数法的方式显示,而不会出现乱码或者程序无法运行等情况。

系统设计与实现:

系统功能模块划分

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

函数功能和外部接口设计

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

序号

函数名

函数功能

函数参数

函数返回值

1

read_keyboard

读取键盘输入的变量

key_code

2

loop_Game

游戏循环

cmd

3

reset_Game

重置游戏

4

add_rand_num

添加随机数

随机数

5

get_null_count

获取空位置数量

空位置数量n

6

check_Game_over

检查游戏是否结束

if_Game_over

7

Move_left

左移

If_need_add_num

8

Move_right

右移

If_need_add_num

9

Move_up

上移

If_need_add_num

10

Move_down

下移

If_need_add_num

11

clear_screen

清屏

12

refresh_show

刷新界面

13

init_Game

初始化游戏

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

数据结构

结构体数组+指针,链表

算法

递推,查找,文件操作

5.程序流程图

系统总体流程图如下:

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

问题1:开始部分函数体和数据设置较多,导致后面程序的编写过程中出现了许多错误,例如函数名和数据名的大小写等出现错误。

原因:函数名和数据的设计为了追求简洁而无法记住其意义,并且设置过多。

解决方法:在纸上将函数名和数据名都记好,以防后面编写时出现遗忘,此外,应当按照函数名以及数据名的具体作用进行设置,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值