我罗斯方块设计

作业属于哪个课程 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();  //游戏结束 
 }; 

游戏界面示意图

posted @ 2020-05-06 16:13  BengLuo  阅读(265)  评论(0)    收藏  举报