2019春第三次课程设计实验报告
一、实验项目名称:
用函数实现反弹球消砖块;
二、实验项目功能描述
这个实验主要是实现游戏的正常运行,实现小球通过自行跳动,接触下面移动的挡板,
实现反弹,并且通过反弹调整角度,最终击中正上方的物块,实现击中得分,如果说
在反弹过程中,小球没有接触到挡板,就会使得游戏结束;
三、项目模块结构介绍:
-
第一步:代码重构,利用函数和游戏框架对弹跳小球进行输出。用printf函数在屏幕坐标(X,Y)处显示一个静止的小球字符‘0’,
-
第二步:显示边框,通过对变量i的控制,如果i=width就输出控制右边框,如果i=high就输出控制下边框;
-
第三步:显示移动挡板,显示以中心坐标为(position_x,position_y)、半径为ridus的挡板
即在画面的最下一行、并且用left~right范围显示字符‘*’,而且通过使用a、d键实现挡板的左右移动; -
第四步:反弹小球,通过小球的坐标ball_Y是否在挡板的left~right范围内,判断小球是否被挡板接到,如果是则反弹小球;如果不是则结束游戏。另外使用变量ball_number记录反弹数的次数,并显示输出;
-
第五步:增加砖块数字符‘B’,如果小球击中砖块则得分score++;最后就是消除光标;
总体模型:
Int main()
{
Startup(); //初始化
While(1) //游戏循环执行
{
Show(); //显示画面
updateWithoutInput(); //与用户输入无关的更行
updateWithInput(); //与用户输入有关的更新
}
return 0;
}
四、实现界面展示:
五、代码托管链接:
https://gitee.com/LYL596/game.git
六、实验总结:
这一次的游戏设计还是比较简单的,简单的原因是因为有了前几次的基础,对游戏大题的编写,和设计都有一个适当的掌握。在此过程中还是有收获同时也遇到了或多或少的问题。在上一个贪吃蛇游戏中,我遇到了sleep这个问题,在查找资料后,虽然说问题错误是得到了解决,但是不能运行,运行的时候似乎要输入,同样的这个游戏也遇到了这个问题,所以,我和小组一起讨论之后发现,sleep除了需要头文件之外,S是需要大写的,改正这个错误之后,发现就可以运行了。在这个游戏中我发现,对下挡板不可以输出,但是反弹砖块可以输出,通过把他们两个函数对调一下,就实现了下挡板的输出,代码很长,反反复复检查没有错误,这样是查不出错误的一定要运行之后才能发现是哪一个环节出现了问题,反复去运行,反复去修改,自顶向下,逐步求精啊;慢慢的就会越来越熟练,一步一步的加强准确率,知道不出现一些基本的错误,继续向下一个游戏进军;