我罗斯方块最终篇报告

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>Markdown在线编辑器 - www.MdEditor.com</title> <link rel="shortcut icon" href="https://www.mdeditor.com/images/logos/favicon.ico" type="image/x-icon"/> </head> <body><table> <thead> <tr> <th>这个作业属于哪个课程</th> <th><a title="2020年面向对象程序设计" href="https://edu.cnblogs.com/campus/fzu/2020OOP">2020年面向对象程序设计</a></th> </tr> </thead> <tbody> <tr> <td>这个作业要求在哪里</td> <td><a title="我罗斯方块最终篇 " href="https://edu.cnblogs.com/campus/fzu/2020OOP/homework/10814">我罗斯方块最终篇 </a></td> </tr> <tr> <td>小组成员</td> <td>031902602 陈志良 031902601 陈帅 031902629 杨寓荃</td> </tr> <tr> <td>Github</td> <td><a title="项目地址" href="https://github.com/czl411/woluosi/tree/master">项目地址</a></td> </tr> </tbody> </table> </body> </html>

视频:

 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8"/> <title>Markdown在线编辑器 - www.MdEditor.com</title> <link rel="shortcut icon" href="https://www.mdeditor.com/images/logos/favicon.ico" type="image/x-icon"/> </head> <body><p><a title="视频链接" href="https://www.bilibili.com/video/BV1hK4y147jz/">视频链接</a></p> </body> </html>

截图:

规则界面:

单人:

 双人:

完成该作业的过程:

①:因为这次是为了设计双人版的,所以我们首先是先做一个单人版,后面再这个基础上设计双人版。

②:各类函数实现着实有点难。

③:我们在实现对方块做操作时,对键盘的读入,使用了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函数,着实是长知识了一回,同时,我也认识到了我自己的不足,还是以上学期的思维写代码,没有用面向对象的思维写,着实惭愧,但我还是希望我在今后的学习道路上更加努力。

原文地址:https://www.cnblogs.com/czl411/p/13114338.html