我罗斯方块最终篇
| 这个作业属于哪个课程 | 2020年面向对象程序设计 |
|---|---|
| 这个作业要求在哪里 | 我罗斯方块最终篇 |
| 小组成员 | 031902602 陈志良 031902601 陈帅 031902629 杨寓荃 |
| Github | 项目地址 |
视频:
视频中为2倍速效果
https://b23.tv/cXivAW
截图:

规则界面:

单人:

双人:

完成该作业的过程:
①:因为这次是为了设计双人版的,所以我们首先是先做一个单人版,后面再这个基础上设计双人版。
②:各类函数实现着实有点难。
③:我们在实现对方块做操作时,对键盘的读入,使用了GetAsyncKeyState()函数。
代码要点:
①:对方块的储存,我们没有用三维,我们采用的是一个内涵二维数组的结构体,然后定义一个二维的结构体数组,以此达到目的。
②:对于如何实现双人呢,刚开始,我们想到的是线程,但是百度了之后,对于线程还是有点难理解,后面就我们自己想了个方法:
通过请教其他同学,我们知道了GetAsyncKeyState函数,这个函数可以响应键盘上按键的状态,通过这个函数我们就可以实现:在一个循环内,有两个玩家同时进行操作。开始的时候,我们通过一下方式调用该函数
if(GetAsyncKeyState(VK_LEFT)&0x25)
但发现用这种方式调用时,有的字母无法响应。于是改成了以下方式
if(GetAsyncKeyState(VK_LEFT)&0x8000)
但却又出现了其他问题,我们原先采用的是在一次下落中通过进行10000次循环来读入键盘操作,而在键盘按下的整个过程中会经历多个循环,就会导致一次按键进行了多次操作。最终我们改变了循环方式,在每次读入键盘循环的末尾加入Sleep(120),让程序休眠,避免了一次按键多次操作的情况,同时将循环次数改为5次,意味着一次下落内可进行的操作为5次。
最终完成了双人模式的实现。
③:对代码的旋转实现,我们是把各种方块都弄好(dia[m][n]),只要(n+1)%=4,即可完成。
④:在键盘的读入时,不能同时读入S与↓,也就是说不能同时加速,这是一个问题。
⑤:我们组的作品没有做窗口化的处理。
⑥:我们组的代码分块没有具体的分,写的较为复杂,没有较多用到面向对象程序设计的方法。
⑦:缺少重玩的功能,以及记录最高分的功能。
⑧:无背景音乐。
⑨:美观度急缺。
收获与心得:
怎么说呢,在看完其他组的作品报告之后呢,我们组自愧不如。我们组的我罗斯应该是’食物链低端‘的那种,真的太强了!!其实,在做这个我罗斯之前,我们的内心是有点害怕的,因为第一次做一个小游戏,但也是有点兴奋的。至于收获嘛,对于我,我第一次接触了其他新的事物,比如方块着色、清除光标、光标移动、sleep函数、以及我们组用到的GetAsyncKeyState函数,着实是长知识了一回,同时,我也认识到了我自己的不足,再过程中尽管使用了类,但整体上还是以上学期的思维写代码,没有用面向对象的思维写,着实惭愧,但我还是希望我在今后的学习道路上更加努力。
这次大作业也让我们充分认识到,学习编程不应该只是止步于作业的完成,更应该实践,只有自己进行了尝试,像这次的编写游戏,才更能体会到实践的作用,和编程的苦与乐。毕竟学校的教学比较泛,唯有真正去做了才知道自己当前需要什么,才能够学到更多更细致的东西。

浙公网安备 33010602011771号