我罗斯方块汇报(1)

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业的要求
这个作业的目标 汇报自己这个阶段的开发进度。(完成了哪几个模块)
讲述自己遇到的问题和尝试解决的方法和最后的结果(解决与否)
制作一篇开发日记,例子如此,描述自己开发某一个模块的过程。
作业正文 作业
GitHub 暂存在本地
小组成员 031902609梁育诚
031902610刘凌斌
成员博客首页 梁育诚
刘凌斌

开发进度

时间有限,仅完成了游戏界面的设计。

本组的游戏界面在渲染类里进行开发。

游戏大致界面:

绘制界面

包括界面大小、界面背景颜色(后续可能会改变,因为现在确实有点土^^)。

	initgraph(1200, 640);
	setbkcolor(0xAAAAAA);
	cleardevice();

画线

	setlinecolor(YELLOW);
	setlinestyle(PS_SOLID, 4);
	line(200, 0, 200, 640);
	line(700, 0, 700, 640);
	line(575, 50, 690, 50);
	line(1075, 50, 1190, 50);

设置界面文字

	LOGFONT f;
	gettextstyle(&f);
	f.lfHeight = 20;						// 设置字体高度为 20
	_tcscpy_s(f.lfFaceName, _T("宋体"));	// 设置字体为“黑体”
	f.lfQuality = ANTIALIASED_QUALITY;		// 设置输出效果为抗锯齿  
	settextstyle(&f);						// 设置字体样式
	settextcolor(YELLOW);
	outtextxy(20, 330, _T("操作说明"));
	outtextxy(20, 350, _T("玩家一"));
	outtextxy(20, 370, _T("W:旋转方块"));
	outtextxy(20, 390, _T("A:左移方块"));
	outtextxy(20, 410, _T("D:右移方块"));
	outtextxy(20, 430, _T("S:下移方块"));
	outtextxy(20, 480, _T("玩家二"));
	outtextxy(20, 500, _T("上:旋转方块"));
	outtextxy(20, 520, _T("左:左移方块"));
	outtextxy(20, 540, _T("右:右移方块"));
	outtextxy(20, 560, _T("下:下移方块"));
	outtextxy(580, 25, _T("下一个方块"));
	outtextxy(1080, 25, _T("下一个方块"));

画游戏区域

	setfillstyle(BS_SOLID);
	setfillcolor(BLACK);
	rectangle(215, 5, 550, 630);
	rectangle(575, 20, 690, 200);
	rectangle(715, 5, 1050, 630);
	rectangle(1075, 20, 1190, 200);
	system("pause");

遇到的问题:

1、easy X渲染插件的使用方法错误(已解决)

刚开始用easyX时,未使用自带的头文件、使用错函数、编译失败等问题频频出现。

例如画块函数setbkcolor错用成了setlinecolor 画线函数

未使用“暂停” system("pause"); 等。

2、颜色单一问题(暂未解决)

我们目前只使用了预定义常量表示颜色。如:

常量			值			颜色
--------		--------	--------
BLACK			0		黑
BLUE			0xAA0000	蓝
GREEN			0x00AA00	绿
CYAN			0xAAAA00	青
RED			0x0000AA	红
MAGENTA			0xAA00AA	紫
BROWN			0x0055AA	棕
LIGHTGRAY		0xAAAAAA	浅灰
DARKGRAY		0x555555	深灰
LIGHTBLUE		0xFF5555	亮蓝
LIGHTGREEN		0x55FF55	亮绿
LIGHTCYAN		0xFFFF55	亮青
LIGHTRED		0x5555FF	亮红
LIGHTMAGENTA	        0xFF55FF	亮紫
YELLOW			0x55FFFF	黄
WHITE			0xFFFFFF	白

后续会使用RGB宏合成颜色。

3、对于新内容:此消彼长功能的实现以及键盘输入分发控制命令的实现(未解决)

此消彼长功能较为复杂,没有头绪。

关于键盘输入、分发控制命令的实现,暂定为:

		// 如果有按键,返回按键对应的功能
		if (_kbhit())
		{
			switch (_getch())
			{
			case 'w':
			case 'W':	return CMD_ROTATE;
			case 'a':
			case 'A':	return CMD_LEFT;
			case 'd':
			case 'D':	return CMD_RIGHT;
			case 's':
			case 'S':	return CMD_DOWN;
			case 27:	return CMD_QUIT;
			case ' ':	return CMD_SINK;
			case 0:
			case 0xE0:
				switch (_getch())
				{
				case 72:	return CMD_ROTATE;
				case 75:	return CMD_LEFT;
				case 77:	return CMD_RIGHT;
				case 80:	return CMD_DOWN;
				}
			}
		}
//分配命令
void DispatchCmd(CMD _cmd)
{
	switch (_cmd)
	{
	case CMD_ROTATE:	OnRotate();		break;
	case CMD_LEFT:		OnLeft();		break;
	case CMD_RIGHT:		OnRight();		break;
	case CMD_DOWN:		OnDown();		break;
	case CMD_SINK:		OnSink();		break;
	case CMD_QUIT:		break;
	}
}

时间有限,开发进程较短,遇到的问题少。。^^

posted @ 2020-05-22 22:11  LiangYC1021  阅读(128)  评论(0编辑  收藏  举报