• 我罗斯方块


    这个作业属于哪个课程 面向对象程序设计2020
    这个作业的要求在哪里 我罗斯方块
    这个作业的目的 实现游戏我罗斯方块,熟悉面向对象编程方法
    作业正文 我罗斯方块
    项目地址 我罗斯方块
    其他参考文献
    小组成员 041901328

    一.游戏内容

    基础内容与俄罗斯方块一样。
    俄罗斯方块
    区别在于,我罗斯方块是同屏幕,双人对战游戏,双方一人使用 wasd ,一人使用上下左右控制,当一名玩家消去一行,就会让另一名玩家最底下增加随机一行。
    详细
    以玩家一为例,AD 控制方块左右移动,W 转换方块朝向,S 快速下落,使得方块落到底端。当玩家方块填满一整行时,会消除这行方块,然后使得玩家二的方块底部随机增加一行带空格的。玩家二同理。当一名玩家方块高度达到一个高度时就会结束游戏,该玩家失败。

    二.设计

    (设计不完整,缺陷很大,正在修补)

    1.游戏界面类

    class gamewindow                  
    {
    public:
    	//void Map_initialize();         //       地图初始化函数
    	//画方框
    	void Map_frame(HDC hdc)			
    	{
    		HDC Fhdc = CreateCompatibleDC(hdc);	//创建兼容性DC
    		HBITMAP hbitmap=CreateCompatibleBitmap(hdc, 900, 650);//创建一张纸
    		SelectObject(Fhdc, hbitmap);//关联起来
    		Rectangle(Fhdc, 140, 0, 440, 600);
    		Rectangle(Fhdc, 460, 0, 760, 600);
    		Rectangle(Fhdc, 0, 0, 140, 600);
    		Rectangle(Fhdc, 440, 0, 460, 600);
    		Rectangle(Fhdc, 760, 0, 900, 600);
    		BitBlt(hdc, 0, 0, 900, 650, Fhdc, 0, 0, SRCCOPY);
    		DeleteObject(hbitmap); 
    		DeleteDC(Fhdc);//释放dc;
    	}
    	int window_size1[20][10] = { 0 };//      游戏界面的尺寸
    	int window_size2[20][10] = { 0 };
    	//绘制方块
    	void Print_block1(HDC Fhdc,int a[][10])
    	{
    		int i = 0, j = 0;
    		for (i = 0; i < 20; i++)
    		{
    			for (j = 0; j < 10; j++)
    			{
    				if (a[i][j] == 1)
    				{
    					Rectangle(Fhdc, 140+30*j, 30*i, 140+30*j+30, 30*i+30);
    				}
    			}
    		}
    	}
    	void Print_block2(HDC Fhdc, int a[][10])
    	{
    		int i = 0, j = 0;
    		for (i = 0; i < 20; i++)
    		{
    			for (j = 0; j < 10; j++)
    			{
    				if (a[i][j] == 1)
    				{
    					Rectangle(Fhdc, 460 + 30 * j, 30 * i, 460 + 30 * j + 30, 30 * i + 30);
    				}
    			}
    		}
    	}
    	//创建随机块
    	void Block_CR()
    	{
    		srand((unsigned int)time(NULL));
    		int n = rand() % 7;
    		 block block1;
    		int i = 0, j = 0;
    		switch (n)
    		{
    		case 0:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape1[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape1[i][j];
    				}
    			}
    			break;
    		case 1:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape2[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape2[i][j];
    				}
    			}
    			break;
    		case 2:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape3[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape3[i][j];
    				}
    			}
    			break;
    		case 3:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape4[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape4[i][j];
    				}
    			}
    			break;
    		case 4:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape5[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape5[i][j];
    				}
    			}
    			break;
    		case 5:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape6[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape6[i][j];
    				}
    			}
    			break;
    		case 6:
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size1[i][j + 3] = block1.block_shape7[i][j];
    				}
    			}
    			for (i = 0; i < 2; i++)
    			{
    				for (j = 0; j < 4; j++)
    				{
    					window_size2[i][j + 3] = block1.block_shape7[i][j];
    				}
    			}
    			break;
    		}
    	}
    private:
    }; 
    

    2.方块类

    class block
    {
    public:
    	void Block_falling();       //      方块下落函数
    	void Block_speed();         //      方块加速函数函数
    	void Block_move();          //      方块左右移动函数
    	void Block_changeshape();   //      方块变形控制函数
    	int block_shape1[2][4] = { 1,1,0,0,
    				   0,1,1,0 };
    	int block_shape2[2][4] = { 0,1,1,0,
    				   1,1,0,0 };
    	int block_shape3[2][4] = { 0,0,1,0,
    				   1,1,1,0 };
    	int block_shape4[2][4] = { 1,0,0,0,
    				   1,1,1,0 };
    	int block_shape5[2][4] = { 0,1,0,0,
    				   1,1,1,0 };
    	int block_shape6[2][4] = { 1,1,0,0,
    				   1,1,0,0 };
    	int block_shape7[2][4] = { 1,1,1,1,
    				   0,0,0,0 };
    
    
    };
    
    

    3.玩家类

    class player                    //玩家类
    {
    public:
        int score;                  //玩家分数
        void player_initialize();   //玩家初始化函数;
    private:
        string name;                //玩家名称
    };
    

    4.游戏引擎类

    class gameengine                 //      游戏引擎类
    {
    public:
        void Game_begin();          //       游戏开始函数
        void Creat_block_random();  //       随机生成方块函数
        bool Judge_bottom();        //       判断方块是否触底函数
        bool Judge_top();           //       判断方块是否触顶
        bool Judge_delete();        //       判断是否可以消行
        void Block_delete();        //       消行函数
        void Block_add();           //       增行函数
    private:
    
    };
    

    三.渲染方法

    用win32窗口来作为游戏的界面,在二维数组对应的图形界面画出方块。

    四.游戏界面示意图(原始版本)

  • 相关阅读:
    java编程继承的第一原则
    Java基本语法总结
    java 语言实现的随机数生成算法
    java实现微公众平台自定义菜单
    使用Java调用谷歌搜索
    Java 语言实现的随机数生成算法
    浅谈Java中的instanceof关键字
    Java 编程基础 类和继承总结
    异常封装提高Java代码质量
    CSS-font
  • 原文地址:https://www.cnblogs.com/wangmou-233-1024-com/p/12823118.html
Copyright © 2020-2023  润新知