我罗斯方块的实现

作业描述 详情
这个作业属于哪个课程 2020年面向对象程序设计
这个作业的要求 我罗斯方块
这个作业的目标 ①设计详解②选用的渲染方法③收集到的资料④ 游戏界面示意图
作业正文 我罗斯方块还没实现的努力实现
参考文献 俄罗斯方块C++的实现 /// C++【EasyX】俄罗斯方块 ///Windows控制台下绘制简单图形
成员 031903149肖若烨 031903150张晓蓉

一.游戏内容

基础内容与俄罗斯方块一样,不过双人对战版还需添加P2界面以及与P1之间消长与否的利弊关系。P1使用AD控制方块的左右移动,W转换方块朝向,S可以控制方块的下落速度。P2使用上下左右箭头,道理与之相通。
当一方玩家的一行填满后将消除这一行的方块,并且另一名玩家的底部会增加一行空行,当某一玩家的方块到达一定的高度时,游戏结束,另一方胜利。

只有一些零零碎碎的思路和不成文的代码。会有很多落下的东西。
网上看了点单人俄罗斯方块的资料和一些其他双人小游戏的代码,拼凑出的一点思路。

二. 系统需显示的内容

  1. 游戏的界面
  2. 分数的显示

三. 游戏设计

1.游戏的状态常量

enum STATUS
{
BEGIN,//游戏开始
RUNNING,//游戏进行中
FAIL,//游戏失败
PASS,//游戏成功
FAILING,//游戏失败界面
PASSING//游戏成功界面
};

2.游戏者类(每个游戏者都有一个独立的游戏区域)

         class PLAYER
{
	private:
		STATUS m_status;//游戏状态
		char* m_name;//游戏者名称
		char* m_keys;//按键
		
	public:
	PLAYER(char* name,char* keys);//构造函数 
	void Hit(char key);//游戏者的按键
	void Draw();//绘制该游戏者的游戏界面 
	
	private:
	void Init();						// 初始化当前游戏者的游戏信息
	void DrawFrame();					// 绘制游戏界面的外框
	void DrawRow(int baseY, int iTask);	// 绘制游戏界面中的一行任务
	void DrawPass();					// 绘制通过游戏后的界面
	void DrawFail();		 
		
};

3.方块类

class BLOCK{  
public:   
     int zt[10][21];     	//每个方格状态0未填充1已填充  
     int score,xh;      	//分数和消行  
     char scores[50],xhs[50];		//分数显示字符串,消行显示字符串      
    BLOCK(int x1,int y1,int index1);  
    BLOCK(BLOCK &a);  
    void displayBlock();    		//显示块   
    void movew(int movement);          //移动  
    void spin();           		 //旋转  
    void clearone(int i);   	//清除一行  
    void display();         		//输出信息  
    void initgame();  //初始化游戏
private:   
    int x,y,index;  
};  

4.渲染

Windows控制台下绘制简单图形

构造函数

PLAYER::PLAYER(char* name,char*keys)
{
	m_strName=name;
	m_keys=keys;
	Init();//初始化游戏者 
 }

初始化当前游戏者游戏信息

void PLAYER::Init()
{
	// 初始化任务
	m_iTask= 0;			// 从第一个任务开始
	m_status= BEGIN;		// 设置游戏初始状态
	m_failFrame = 0;		// 重置失败后的动画的帧计数
 
	// 初始化游戏界面
	DrawFrame();
}

绘制该游戏者的界面

void PLAYER::Draw()
{
	switch (m_status)
	{
		case PASSING:			// 游戏成功后的动画
			{
				m_status = PASS;
				DrawPass();
				break;
			}
		case BEGIN:				// 游戏初次开始
		case RUNNING:			// 游戏运行中
		{
                                  /*未实现的*/
		}
		case FAILING:			// 游戏失败后的动画
			DrawFail();
			break;
		case PASS:				// 游戏通过后的成绩显示
		case FAIL:				// 游戏失败后的成绩显示
			break;
	}
}

绘制游戏界面的画外框

void PLAYER::DrawFrame()
{
	// 画外框
	// 画姓名区
	// 画成绩区
	// 画控制区
}
posted @ 2020-05-06 15:26  AirBirdDD  阅读(203)  评论(0)    收藏  举报