我罗斯方块最终篇

这个作业属于哪个课程 2020年面向对象程序设计
这个作业要求在哪里 我罗斯方块最终篇
作业正文 如下
设计者 郑浩彬 041903103 陈泽宇 181900403
项目地址 GitHub项目地址



一、运行截图/运行视频
游戏过程界面







游戏结束界面

游戏演示完整视频




二、代码要点

class Player  
{
public:
	Player(string Name,int pos);   
	friend class Game;
	friend class Block;
private:
	string name;
	int score;
	int position;	
};

class Block
{
public:
	void generate(Player &p);               
	bool try_fall();				
	bool try_fast_fall();				
	bool try_spin();												
	bool try_left_or_right(int direction);    
	bool is_legal(COORD test[4]); 
private:
	COORD faller[4];   
	Shape_Type now_shape;
};
在实现之初,我苦恼于如何去辨别产生的方块的归属性问题,但是之后我发现给玩家和方块各贴上一块标签,也就是玩家类中的position和方块类中的faller,就可以很好的解决这个问题,这为我之后无论是写函数还是调试都带来了很大的方便。

然后大家对于方块的下移、左右横移、增加行数、消除行数等操作的实现,我觉得都是大同小异的。 对于旋转我是采用以一个中心点的方式,来进行旋转后相应的坐标变换。碰到方块贴到游戏边框无法按原来的中心点操作的情况,就对中心点进行转移来实现旋转。

其他方面的具体代码在github上面都有,我这里就不多赘述了。




三、收获与心得

怎么说呢,双人版俄罗斯方块是在单人版俄罗斯方块的基础上加以改善、修饰的,而单人版俄罗斯方块的代码有很多,也有很多值得借鉴之处。所以,这次完成我罗斯方块,可以说是一次“站在巨人的肩膀上的行动”。但尽管如此,还是能学到很多。先前写的代码都是在最简单、最单调的黑白控制台中运行的,这次就学到了很多关于控制台方面的知识,比如设置光标厚度和可见度、设置文本颜色、设置控制台标题等等。也了解了一些关于弹窗、关于图形化编程的渲染的知识(虽然这次在写代码的过程中并没有使用到)。最主要的还是一次比较完整的完成一个项目的经历吧。从设置类、到修改类、到功能的实现、到小组成员代码的整合以及最终的调试。这当中最辛苦、最麻烦的我觉得应该是修改类和debug。修改一个框架,大大小小的细节都需要进行改动,而debug少则几十分钟,动辄就是几个小时(我们组对debug深有体会,修改完bug之后的喜悦也是溢于言表)。




四、依然存在的问题

对于基本功能的实现,我觉得应该算是比较完美了,不会出现按键阻塞、吃键的情况(测试了双手乱按也不会有什么问题)。不足之处应该就是渲染还不够完美,附加功能还不够齐全(比如预览方块,在游戏进行时不断增加难度等等)。对于渲染上,我在最初是打算使用Easy_X进行的,只能说是有点遗憾吧。对于前面提到的附加功能,在之后的时间可能会陆续补上,毕竟整体的框架都已经打好了,补充一些内容应该不是难事(或许没有预览方块更能考验玩家的随机应变能力😂😂😂)

posted @ 2020-06-12 13:36  CoupleYoghourt  阅读(220)  评论(1编辑  收藏  举报