【C++】2048游戏系列---总览篇

2048游戏编程具体思路和实现(总览稿)

(更新中……)
参考博客:https://blog.csdn.net/qq_39151563/article/details/104283217
由于放在一篇会导致篇幅太长,所以分成了几篇。(可能有个10篇吧=.=)

目前写完的:


本篇介绍游戏背景和游戏流程图,具体功能部分仅涉及环境准备。


一、游戏背景

2048试玩

二、 游戏流程图

  • 游戏的本质是根据玩家键盘(或其他)输入的值对一个 4 * 4 的二维矩阵进行移动、合并、检查等操作。

三、具体的功能实现

  • 编译环境:Dev C++ 和 EGE图形库(网上自己搜索一下,有详细的安装流程的)

  • 编程语言:C++

  • 丰富的图形只是数据的映射,编程语言只是思想实例化的工具,关键还是在于数据处理

  • 环境准备

    • 定义数据:

      • 4*4矩阵
      • 空格数
      • 方向
      #include <iostream>
      using namespace std;
      
      int grid[4][4];// 4*4矩阵
      int EmptyBlock = 16;//空格数
      int dir;//方向
      
      int main()
      {
          
          return 0;
      }
      
    • 调试函数(为了方便给 grid 赋了初值)

      1. 打印函数-PrintGrid()

        !要注意一点:二维数组遍历的时候图形上是(j, i)对应到数组取值上是grid[i][j]

        这一点要是不注意会在后面的代码翻大车!!!

        打印函数说明

      2. 计算空格函数-CalculateEmpty()

      #include <iostream>
      using namespace std;
      
      int grid[4][4]= {{0,1,2,3},
      				 {0,1,2,3},
      				 {0,1,2,3},
      				 {0,1,2,3},};// 4*4矩阵
      int EmptyBlock = 16;//空格数
      int dir;//方向
      
      //1. 打印函数-PrintGrid()
      void PrintGrid()
      {
      	for(int i=0; i<4; i++)//行 
      	{
      		for(int j=0; j<4; j++)//列 
      		{
      			cout << grid[i][j] << "\t"; 
      		}
      		cout << endl;
      	}
      	cout<< endl;
      }
      //2. 计算空格函数-CalculateEmpty()
      int CalculateEmpty()
      {
      	int cnt = 0;
      	for(int i=0; i<4; i++)
      		for(int j=0; j<4; j++)
      			if(grid[i][j]==0)	cnt++;
      	return cnt;
      }
      
      int main()
      {
          PrintGrid();
          cout << "EmptyBlock = " << CalculateEmpty() << endl;
          return 0;
      }
      
      打印函数和计算空格函数调试

    根据流程图可以把其分为以下几个模块:

    • 1-根据 dir 的值对 grid 进行操作
    • 2-键盘输入
    • 3-在随机位置添加数值
    • 4-游戏结束检测

接下来几篇稿子就是实现具体功能了,一步一步来吧!

四、优化

1、用图片替代数字

2、加入计分模块

3、重构代码,用类封装

五、进阶

1.加入AI

六、总结

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值