我罗斯方块设计
| 作业属于哪个课程 | 2020福大面向对象程序设计 |
|---|---|
| 作业要求 | 我罗斯方块 |
| 作业地址 | 我罗斯方块游戏设计 |
| 代码位置 | 项目地址 |
| 小组成员 | 031902602 陈志良、031902601 陈帅、031902629 杨寓荃 |
| 参考资料 | 编写俄罗斯方块思路 |
| MFC双人版俄罗斯方块 | |
| 渲染入门,使用C++编写基本的渲染器 | |
| 新手向C++俄罗斯方块教程 |
我罗斯方块游戏设计
题目内容
我罗斯方块是由 weg 博士游玩了 8888 小时的俄罗斯方块后研发的新游戏,具有上手快,竞技性强等优点,不氪金,不搞战力,一切凭技术公平对战。下面是我罗斯方块的一个标准文档,weg 博士想请你为他实现一个我罗斯方块。
-
语言要求
C++ -
游戏内容
基础内容与俄罗斯方块一样。
俄罗斯方块
区别在于,我罗斯方块是同屏幕,双人对战游戏,双方一人使用 wasd ,一人使用上下左右控制,当一名玩家消去一行,就会让另一名玩家最底下增加随机一行。 -
详细
以玩家一为例,AD 控制方块左右移动,W 转换方块朝向,S 快速下落,使得方块落到底端。当玩家方块填满一整行时,会消除这行方块,然后使得玩家二的方块底部随机增加一行带空格的。玩家二同理。当一名玩家方块高度达到一个高度时就会结束游戏,该玩家失败。 -
方块种类
![]()
-
提示
1.游戏需要一个主循环,代码示例如下:
while(1){
update();
}
2.你可能需要以下类,方块类(分别代表 4 种方块种类),玩家类(代表每一个玩家),渲染类(封装渲染需要的函数),游戏类(管理整个函数)
3.渲染方法不限制,无论是控制台、绘图还是游戏引擎。但必须使用 cpp 编写代码。
4.注意不同方块的共性和特性。
5.使用git进行协作。
- 组队人数
2-3人 - 博客要求
在5.6作业结束前发布一篇博客,讲述你的设计,你选用的渲染方法,你收集到的资料,和你的游戏界面示意图,和。注意:请详细写出你需要的类,和类的成员函数与成员变量。
PS:博客请附带上项目的 github 地址。
设计思路
该游戏规则与俄罗斯一样,不过多了双人对战模式。
在双人对战模式下:我方每消去一行,对方底下就要随机生成一行。
我从从方块类、玩家类、渲染类、游戏类,四个类来考虑游戏的基础功能。
- 方块类:主要是对方块的基础操作,包括基础速度、随机出现、旋转、加速、左右移动、消行、增行等;
- 玩家类:主要是每一个玩家对应的键盘操作,wasd、↑↓←→对应游戏的功能实现、调整难度难度;
- 渲染类:主要是染色、边框界面,5种方5种颜色的设置,边框界面的大小、数量,界面元素等;
- 游戏类:主要是管理整个游戏,包括游戏的模式选择、开始、结束、终止、暂停、判定结束、计分等。
方块类
class Block
{
private:
void roundBlock(); //随机生成方块
int positionX[4], positionY[4]; //方块的坐标
bool collisionDetection(); //检测是否碰撞到边框
bool check; //检测方块是否结束进程
int val; //方块下落速度
public:
void myLeft(); //左移
void myRight(); //右移
void myUp(); //顺时针旋转90度
int myDown(); //加速下落
};
玩家类
class Player
{
private:
char key; //用来存储按键信息
void eliminateRow(); //判断是否能消行并更新分值
public:
void addition(); //对方增加一行
void level(); //难度调整
};
渲染类
class Render
{
private:
void Paint(); //绘制界面
void Update(); //更新界面
public:
int height; //界面高
int width; //界面宽
int size; //界面大小
int color; // 界面颜色
char map[80][100]; //界面信息
void next_piece(); //显示下一个方块的种类
void Score(); //显示得分
};
游戏类
class Game
{
private:
bool check; //检测游戏是否结束进程
int score; //用于计分
public:
void mystart(); //游戏开始
void myStop(); //游戏暂停
bool myover(); //判断是否结束
void gameOver(); //游戏结束
};
游戏界面示意图



浙公网安备 33010602011771号