我罗斯方块
这个作业属于哪个课程 | 2020年面向对象程序设计 |
---|---|
作业要求 | 我罗斯方块 |
作业目标 | 发布一篇博客,讲述你的设计,你选用的渲染方法,你收集到的资料,和你的游戏界面示意图,和。注意:请详细写出你需要的类,和类的成员函数与成员变量。 |
作业正文 | 如下 |
GitHub仓库 | 仓库地址 |
参考文献 | 【C实现俄罗斯方块】 |
设计者 | 031902124|谢翛然 |
031902114|林冠禧 | |
031902133|乐礼相 |
游戏玩法
游戏与俄罗斯方块玩法类似,再次基础上增加双人对战功能,己方每消去一行则对手增加一行(带有随机空格的不可消去行),直到有一方先死亡或达到某一特定分数。
左边玩家 | 右边玩家 | |
---|---|---|
控制键 | WSAD | ↑↓←→ |
说明 | W控制旋转 | ↑控制旋转 |
S控制快速下落 | ↓控制快速下落 |
类的设计
游戏大致需要四个类:方块类,玩家类,渲染类,游戏类
方块类
说明
方块类包括方块颜色,方块形状(四种),方块方向,方块翻转操作,方块随机生成
声明
class Block {
private:
int x, y;
int color;
int kind;
int direction;
public:
Block(int x, int y);//Block构造函数,随机生成砖块
int getX();//返回x坐标
int getY();//返回y坐标
int getColor();//返回砖块颜色
int getKind();//返回砖块种类
int changeDirection();//改变砖块朝向
int setXY(int x, int y);//改变方块坐标
};
玩家类
说明
玩家类包括姓名,得分,当前状态(死亡或存活)
声明
class Player {
private:
string name;
int score;
int state;
public:
Player(string name);//玩家构造函数
string getName();//获取玩家姓名
int getScore();//获取玩家当前得分
int getState();//玩家状态
void setName();//修改姓名
void setScore();//修改分数
void setState();//修改状态
};
渲染类
说明
渲染类包含游戏界面的绘制,显示游戏状态和时间
声明
class Draw {
private:
int currentTime;
public:
Draw();//绘制初始界面以及边框
void drawPlayer1();//绘制玩家1界面
void drawPlayer2();//绘制玩家2界面
void showTime();//展示游戏时间
void showState();//展示游戏状态
};
游戏类
说明
游戏类包括读入键盘指令并传入方块类进行操作,游戏状态(暂停、开始、结束),游戏状态初始化
还包括消除判定,得分判定,死亡判定
声明
class Game
{
private:
int state;//全局状态
int time;//当前游戏时间
public:
Game(int currentTime);//游戏构造函数,获取系统时间
void startNewGame();//开始新游戏
void pauseGame();//暂停游戏
void continueGame();//继续游戏
void getHandle();//获取玩家操作
void check();//得分,消除,死亡判定
void gameOver();//游戏结束
};