40行C语言代码实现弹球小游戏,适合小白加强技术的项目!
问题概述
设计一个小游戏——弹跳小球。要求一个小球在一定范围内无限运动,遇到边界发生反弹。
下面是小编整理好的一套C/C++资料,加小编C/C++编程学习群:825414254,获取系统性学习C/C++的学习资料
想必读到这里一定有"大佬"想用二维数组+指针来解决这个简单问题了。但是为了鼓励大家开拓进取,努力奋斗的精神,并且这个问题针对初学者,理论上是不能使用数组和指针的。所以还请各位读者老爷另辟蹊径,用更简单的方法解决问题。
问题探讨
程序难点
1、如何创造一个空间和一个小球?
2、如何让弹球动起来且碰壁弹起?
解决方案
1.小球产生:边界,小球初始位置自行定义数值。其中边界的参数不再改变,甚至可以设为常量。
2.小球运动:二重循环分别对应x,y轴运动,二者是同步的,直到有一个数值等于了边界,它就要改变运动轨迹。
- 碰壁弹起:一旦有一个数值等于了边界值,那个数值就要发生反向的循环变化,而另一个不变。比如(10,10)的边界x=10碰壁,y=5未碰壁,那么接下来x=9,y=6。
4.列表清空:因为本程序是通过循环打印数值来实现小球运动,我们需要实时对cmd进行列表清空,来保证每一刻屏幕上只有一个小球。这用到了一些特殊函数,再算法浅谈中会提到,这个特殊函数无需掌握,了解即可。
算法浅谈
本期的算法相对简单,但是涉及到一些全新的编程理念和思想,请仔细阅读以下四点,可能会对写出自己的弹球小游戏有所帮助。
弹球范围四周的值,其中上和左对应为0即可,右、下自行定义,建议右不超过40,下不超过40。
小球是一直运动的,并且运动时小球将会跑到下一个位置,原位置的小球将不复存在。因此得出:主循环是一个死循环【while(1)】;在死循环下需要执行system(“cls”)清屏函数,这个清屏函数需要添加头文件#include<windows.h>,
给予小球一个初始位置x,y。小球用小写o代替。当x,y小于边界时,构成循环体。即小球下落时,x,y的值均增加。配合着每一次运动的刷新,屏幕只会出现一个"运动"的小球,这样小球的运动就可以解决了。
碰到边界时,改变"方向",意味着x,y达到边界值需要减小x,y的值以让它"反弹"。实现这个操作有两种方法:循环或判断改值。前者简单粗暴:直接再加两个循环解决问题,后者更加灵活,控制扩大/缩小临时边界达到目的。
参考源代码(使用VS2017编译)
GIF效果图