这个作业属于哪个课程 | 班级的链接 |
---|---|
这个作业要求在哪里 | 作业的要求 |
这个作业的目标 | 汇报自己这个阶段的开发进度。(完成了哪几个模块) 讲述自己遇到的问题和尝试解决的方法和最后的结果(解决与否) 制作一篇开发日记,例子如此,描述自己开发某一个模块的过程。 |
作业正文 | 作业 |
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;
}
}
时间有限,开发进程较短,遇到的问题少。。^^