其他分享
首页 > 其他分享> > 我罗斯方块汇报(1)

我罗斯方块汇报(1)

作者:互联网

这个作业属于哪个课程 面向对象程序设计2020
这个作业的要求在哪里 我罗斯方块
这个作业的目的 我罗斯方块开发进度汇报
作业正文 我罗斯方块
项目地址 我罗斯方块
其他参考文献 Windows程序设计
小组成员 041901328 王真平

开发进展

1.重新设计了类的数据成员和成员函数。分为方块,窗口,玩家,和游戏引擎四个类。
(1)完成了窗口类,并重新设计了游戏界面的样式。如下图:

(2)游戏引擎类主要负责方块的运动,判定,目前实现了方块下落。
(3)实现了玩家类(暂时无功能函数)
(4)方块类,实现了随机产生成方块的功能
2.由于第一次博客完成后开发遇到了极大的阻碍,我决定先做一个单人的测试版,初步实现了我罗斯方块的部分功能,使其能正常下落,移动,变形(不够完善),捋清了设计思路。(此步骤参考了相关视频)

遇到的问题及解决

  当完成第一次博客继续开发时,发现方块下落无法在窗口上实现,且不同类之间相互调用杂乱,接口繁多。在调试过后发现存在如下问题:
  1.在windows编程绘制窗口时,在错误的消息下使用了成员函数,导致无法展示出下落的方块。这个问题在我将将函数放到正确的消息下后可以解决。
  2.做第一次设计时,还没学到静态数据成员和友元函数,以及自己把类定义在错误的位置,导致的问题就是数据被反复的覆盖,没办法进行正常的游戏。

而且没有友元函数,导致我的函数不仅接口繁多,而且在很多功能的实现上无从下手。这也是我重新设计类的数据成员和成员函数的一个重要原因。
在已有程序出现这么多问题后,我决定推到重来,将背景数组和其他数据设置成静态变量,调整了几个类的关系,使功能需要配合使用的类设为了友元类,以简化接口复杂程度和实现功能的便捷性。

开发日记

5月19日
静态数据成员和友元函数像是给我打开了新世界的大门,我突然就相同了怎么把几个类进行联系。于是:

class Player
{

	static int score1;          静态数据成员,就可以让我不必再担心在重复的定义类时让数据被覆盖,丢失!!!
	static int score2;
};
class Windows;                      这个友元类真是雪中送炭!!!我的老大难问题一下就解决了
class Square
{
	
public:
	static int arr_square[2][4];
	static int arr_square2[2][4];
	static int P1_x_square;//方块类型
	static int P1_y_square;//方块横纵坐标
	static int P1_squareId;
	static int P2_x_square;
	static int P2_y_square;
	static int P2_squareId;
public:
	//产生随即块                              ###这两个产生的随机块的函数终于可以更方便的运用,多亏了友元函数!!
	int CreatRandomSquare();
	
	int CreatRandomSquare2();
	
};
class Windows
{
	friend Square;
	//地图背景
	static  int arr_background1[20][10];
	static int arr_background2[20][10];
public:
	//画方框
	void Onpaint(HDC hdc);

5月20日
接下来这几个函数实现就迎刃而解,真是太棒了!

	//初始化
	void OnCreat(Square & x) ;
	
	//显示方块
	void PaintSquare(HDC hmemdc);
	
	//显示变2的方块+变色

变色我暂时还没太想好,不过这个函数可以写出来了

	//void Showsquare_2(HDC hdc);	
	//把随机块贴进背景
	void Copy_Square_Back(Square&x);
	
public:
	//触底方块1变2
	//void Change_1_2();
	//消行函数
	//void DestroyLine();
	//增加行
	//void AddLine();


};
class Engine
{
public:
	//回车开始游戏
	//void Onenter();
	// 向左移
	//void Onleft();
	//向右移
	//void Onright();
	//加速下落
	//void Ondown();
	//变形
	//void Onchange();
	//计时器
	//void Ontimer(HWND hwnd);
public:
	//方块下落
	//void Squaredown();
	//方块右移
	//void Squareright();
	//方块左移
//	void Squareleft();
	//方块变形
	//void Square_change();
	//void SquareL_change();
public:
	//判断是否触底
//	bool Can_Down();
//	bool Can_Down2();
	////判断能否左移
	//bool Can_Left();
	//bool Can_Left2();
	//判断能否右移
	//bool Can_right();
	//bool Can_right2();
	//判断能否变形
	//bool Can_change();
	//bool Can_change_L();
	//判断游戏是否结束
	//bool Can_GameOver();
};

 
 注释掉的函数功能有的还不完善,有的还没实现,为了节约篇幅,实现的具体代码放到GitHub里了。

这个框架经过第一次的大改,应该已经完善了,下面实现功能就会快很多了!

标签:函数,罗斯,void,int,汇报,static,bool,方块
来源: https://www.cnblogs.com/wangmou-233-1024-com/p/12939672.html