我罗斯方块第二次做作业——汇报(1)

作业描述 详情
这个作业属于哪个课程 2020面向对象程序设计
这个作业要求在哪里 我罗斯方块汇报(1)
这个作业的目标 1.汇报自己这个阶段的开发进度。(完成了哪几个模块)
2.讲述自己遇到的问题和尝试解决的方法和最后的结果(解决与否)
3.制作一篇开发日记,例子如此,描述自己开发某一个模块的过程。
作业正文 如下
小组成员 031902535陈玉娜
031902537江舒颖
031902538李晓芳
参考文献 EasyX的安装与使用
C++俄罗斯方块
俄罗斯方块(Tetris) VC 源代码
项目GitHub地址 https://github.com/dump16/Tetris

2020年5月15日

第一次讨论

在第二次的作业中,我们一开始讨论的是分工完成各个模块,但是在分工时,发现各个模块的基础几乎都建立在方块类上,如果等方块类写完再写其他模块,在时间分配上无疑是不理智的。而且对于方块类的想法大家都有所不同,实现过程中还会有其他问题出现,可能有一些功能暂时无法完善。在诸多因素的影响下,我们决定大家都去写一下,尽量完成各个模块,能写多少是多少,在周三的时候再次讨论。

2020年5月20日

第二次讨论

到今天还是有点没有方向,晓芳研究了EasyX库,并且做了游戏页面,我和玉娜都写了一下方块类。讨论开始时我们讨论了难以写下去的地方,分享了各自的参考资料,并且对接下来需要实现的地方进行了讨论。最后在这次讨论中更加具体地明确了分工。玉娜写方块类,晓芳负责了游戏界面及方块的移动,我负责写开发日记并且发布博客,并且准备做键盘相应和进一步的游戏界面。在周五时在进行结果的汇总。

2020年5月22日

关于方块类的编写

玉娜的思路:我在写的时候从方块类开始写,从基础的方块创造、打印、到移动、旋转、消行等。在创造方块的时候,最大的问题是方块的展现形式。如果追求简便,那么用简单的“*”或“#”表示方块当然可以,但是在美观性上无疑是大打折扣。如果想要较为美观的方块,那么书写难度将会提高。考虑之后,决定先试着能否实现较为美观的方块,如果实在无法实现再用简便方块。实现过程中,参考了一些单人俄罗斯方块中方块的实现,实现方法也是多种多样。有的是先实现7种基础方块,再考虑旋转,有的是考虑包括旋转的方块等等,实现过程和实现方法的多种多样,在选择上是有些困难的。最后在参考过后,我初步选择了一种实现方式(如果后期不适合再更换)。在打印方块时,要对方块进行染色,了解了一下之后,主要在“Easyx库”和“Windows.h”中选择。在了解两种方法对染色的实现方法后,我初步选择了“Windows.h”,因为在实现时只要一条染色语句即可,但是色彩不是特别丰富,不过目前时够用的。
代码已发送到github中(由于总结时认为晓芳的代码更为契合,最终选择晓芳的代码作为最终成果)

开发进度

目前已实现以下功能:

  1. 创建游戏窗口,绘制运行界面

  1. 设置方块,使方块自动下落(其中计时器的实现还很粗糙)
    方块类实现随机出现、绘制、擦除、旋转功能,尚未接入键盘响应功能
show

遇到问题

  1. 实现方块类中基础方块的定义(已解决)
    选用一种尽可能简单、容易理解、便于实现操作的定义方法是我们遇到的第一个难题。
    针对7种方块,共28种旋转状态,我们主要采用 4*4 矩阵来存放方块形状,旋转状态在Rotate函数中实现。

  2. 不同类之间的函数调用(暂时解决)
    暂时采用定义类的方式解决,正在探究使用友元函数

  3. 不同文件之间的宏调用(已解决)
    在所有文件中复制相同的宏定义

  4. 对方块染色(已解决)
    绘制染色是我们在设计过程中分析较难的一部分,但在Easyx库的函数下,似乎也很容易上手?

  5. 计时器功能(未解决)
    采用了Sleep函数,方块的自动下落还很僵硬。

  6. 同时对两个游戏池进行操作(未解决)

posted @ 2020-05-22 21:17  尼古拉斯宝莉  阅读(238)  评论(1编辑  收藏  举报