作业描述 | 详情 |
---|---|
这个作业属于哪个课程 | 2020面向对象程序设计 |
这个作业要求在哪里 | 我罗斯方块 |
这个作业的目标 | - 讲述设计 - 选用的渲染方法 - 收集到的资料 - 游戏界面示意图 - 详细写出你需要的类,和类的成员函数与成员变量 - 发布博客 |
作业正文 | 我罗斯方块 |
其他参考文献 | C++比较完美的俄罗斯方块 error LNK2019 无法解析的外部符号 俄罗斯方块c++源代码 |
小组成员 | 031903146 罗佳昱 031903144 李雨情 111900811 林杞垒 |
游戏规则
- 基本规则同俄罗斯方块
- 玩家一通过键盘上的’w’, ’a’,’ s’, ’d’来控制方块的旋转、下移、左 移、右移。
- 玩家二通过键盘上的’↑’, ’←’, ’↓’, ’→’来控制方块的旋转、下移、左 移、右移。
- 以玩家一为例,AD 控制方块左右移动,W 转换方块朝向,S 快速下落,使得方块落到底端。当玩家方块填满一整行时,会消除这行方块,然后使得玩家二的方块底部随机增加一行带空格的。玩家二同理。当一名玩家方块高度达到一个高度时就会结束游戏,该玩家失败。
我罗斯方块设计
Part 1 需求分析
- 方块
- 需要能够产生五种方块类型,长条形、Z字形、田字形、7字形、T字型
- 要求方块能够有不同形态的变化
- 界面
- 开头需要介绍游戏操作按键以及简单的游戏规则
- 在游戏界面需要围出一个边界,以及分区
- 控制
- 需要实现双人控制
- 能够读取键盘按键使方块进行变形、移动、加速下落
- 游戏
- 能够进行消行
- 随机生成下落方块
- 能够判断是否碰到方块或碰到墙
- 能够实现双方对战时此消彼长的设置
- 在消行后能够计分
Part 2 总体框架
- 设计显示界面
- 实现用键盘控制界面变化
- 设计方块相关内容
Part 3 我罗斯方块相关类及其成员函数、成员变量
- 注:由于具体代码还未实现,成员函数、成员变量后期均有可能增减
方块类
- 变量:
int nx, ny; //记录开始画图的位置 int id; //图形ID int next_id; //下一个图形的ID int num; //方块数量
- 方块的显示和擦除:完成在指定位置显示/擦除指定颜色、形状的方块。
- 方块的显示:
void Draw(int x, int y, int num)
- 方块的擦除:
void ReDraw(int x, int y, int num)
- 方块的显示:
- 方块下落:
void Down() //方块下落
void TimeControl() //定时器
- 判断方块是否能够下落。
bool Judge(int x, int y, int num)
- 随机生成方块:
void RandomBlock();
- 方块旋转:完成每种方块4个方向的旋转.
void Turn(int num)
- 方块满一行后消行:
void ClearLine(int place,int x, int y, int num)
- 给另一位玩家加行
void AddLine(int place,int x, int y, int num)
玩家类
- 变量:
int key //记录输入的键值
- 读取玩家操作:
void ReadPlayer(int key=0,char key1='t')
渲染类
-
变量:
int colorNum; //设置颜色 int point[2]; //两基点 int top; //最高点高度 const int sharp[15][8]; //组成图形的各个点的各个坐标,先纵后横 const int high[15]={4,1,2,2,3,2,3,2,3,2,3,2,3,2,3}; //各种形状下方块的高度
-
首界面:
void Welocme();
-
欢迎界面:
void Welocme()
-
游戏界面:
void DrawMap()
-
设置颜色:
void SetColor(int color_num)
-
更新界面:
void Updata()
游戏类
- 变量
int score; //得分
- 游戏暂停:
void Pause()
- 游戏计分:
int GetScore()
其他函数
- 光标移动控制:
void SetPos(int i, int j)
Part 4 游戏界面示意图
Github地址:我罗斯方块