Unity3D:稀疏数组用于棋盘类游戏

大腿Plus Unity3D项目开发评论520阅读模式

当我们在做棋盘类游戏的时候常常会使用到二维数组去保存期盼数据,用于存档或等操作,但是如果棋盘上大部分没有棋子的情况下,会有很多值为0的数据,记录了很多没有意义的数据,这时候我们就可以使用稀疏数组,将棋盘中的数据记录下来。当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。如下图:

Unity3D:稀疏数组用于棋盘类游戏-图片1文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

1、我们首先先记录一下这个棋盘共有几行几列,有多少个不同的值。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

2、把具有不同的值的元素,它的行列值记录在一个小规模的数组中,从而缩小程序的规模。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

3、因此我们可以将这个棋盘,使用二维数组存为在[0,0] =15,[0,1]=15,[0,2]=2,[1,0]=1,[1,1] = 2,[1,2] = 1,通过这样的方式,第一排数据记录了这个棋盘有15*15这么大,有两个数,所以值为2,第二排数据记录在1行2列的位置有一个“1”的数据。 3、通过遍历这个二维数组,又可以将棋盘还原出来。文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

Unity3D:稀疏数组用于棋盘类游戏-图片2文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

代码实现如下:


打印结果如下:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

Unity3D:稀疏数组用于棋盘类游戏-图片3文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

将其中的数据总数提取出来的代码如下:


打印结果为:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

Unity3D:稀疏数组用于棋盘类游戏-图片4文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

创建一个稀疏数组,第一行存入棋盘与总数的信息,后面存入每个数据的信息,代码如下:


输出结果:文章源自大腿Plus-https://www.zhaoshijun.com/archives/1920

Unity3D:稀疏数组用于棋盘类游戏-图片5

还原稀疏数组,代码如下:


打印结果如下:

Unity3D:稀疏数组用于棋盘类游戏-图片6

源码 https://github.com/sy767854885/UnityCSharpDataStructure

具体项目中结合功能可自行提取使用

我的微信
微信扫一扫
weinxin
shijun_z
我的QQ
QQ扫一扫
weinxin
846207670
 最后更新:2023-11-3
大腿Plus
  • 本文由 大腿Plus 发表于 2023年10月30日 15:45:46
  • 转载请务必保留本文链接:https://www.zhaoshijun.com/archives/1920

发表评论