优秀高端网站建设企业,怎样自己做企业的网站,建设银行官方网站首页,wordpress 插件 手机版#xff08;假设有谁想要这个软件的话#xff0c;在评论中留一个邮箱吧。#xff09; 前几天好几次看到有朋友晒出玩2048刷高分的截图。我就想我能不能也做一个2048呢#xff1f;细致想了想2048游戏的规律#xff0c;发现事实上逻辑上非常easy#xff0c;也不用研究什么算… 假设有谁想要这个软件的话在评论中留一个邮箱吧。 前几天好几次看到有朋友晒出玩2048刷高分的截图。我就想我能不能也做一个2048呢细致想了想2048游戏的规律发现事实上逻辑上非常easy也不用研究什么算法于是我立即认为我能够非常快写出来。当天下午我就用了四个小时完毕了2048的基本功能。几天后认为不满足于是给我的2048加了存档、读档和后退一步的功能这样就更好刷分了呢 使用语言C# 平台Visual Studio 2012 Win Form。 怎样完毕2048的基本功能呢2048在每一次操作后16个方格的数字就有可能发生变化所以在我的程序里用一个4乘4的二维数组来存这16个值0表示没有数字。每一次操作直接改变数组的值。然后再把数组的值填到16个方格中。首先来看程序中几个全局的变量 public int[,] matrixValue new int[4, 4];//相应16个方格的数字0表示没有数字public bool isThereChanged false;//表示每一次按键后是否发生改变public int score 0;//此次游戏的分数public int maxScore 0;//记录最高分用于推断是否破纪录public ListstoreRecord dataStoreRecord new ListstoreRecord();//存储全部存档public Listint[,] history new Listint[,]();//存近期10步操作如今想一下玩2048的时候往一个方向滑动它是怎么改变16个方格的数字的。我把这个过程分解成三个步骤相应程序中的三个函数。我认为在软件开发过程中这样的模块化设计的思想是非常重要的。 下面是这三个函数三个步骤 public void addSameNumber(string command)//first step往指定方向叠加同样数字的相邻两格public void moveToEdge(string command)//Second step将全部有数字的格子往指定方向靠边移动
public void addAnNumber()//Third step在没有数字的格子中随机选择一个加入数字事实上凝视上已经说明了其目的。第一个函数会在指定方向上叠加相邻两个同样的数字相邻的意思是中间没有非0的数字也就是有可能两个同样数字中间两个空格。这样的情况下也要相机第二个函数是在实现了同样数字的叠加之后把全部数字往一个方向挪动第三个函数实现的是在一个操作过后16个方格状态有改变的时候随机给空格填入一个数字。 第一个函数仅仅贴出向上移动的代码 public void addSameNumber(string command)//first step往指定方向叠加同样数字的相邻两格{if (command up){for (int col 0; col 4; col){int firstOfSamePair -1;int previousIndex -1;for (int row 0; row 4; row){if (matrixValue[row, col] ! 0){if (matrixValue[row, col] firstOfSamePair){score matrixValue[row, col] * 2;changeYourScoreHandle();//刷新你的分数matrixValue[previousIndex, col] * 2;matrixValue[row, col] 0;firstOfSamePair -1;previousIndex -1;isThereChanged true;}else{firstOfSamePair matrixValue[row, col];previousIndex row;}}}}}//if第二个函数 public void moveToEdge(string command)//Second step将全部有数字的格子往指定方向靠边移动{if (command up){for (int col 0; col 4; col){int index 0;for (int row 0; row 4; row){if (matrixValue[row, col] ! 0){int temp matrixValue[row, col];matrixValue[row, col] matrixValue[index, col];matrixValue[index, col] temp;if (index ! row)isThereChanged true;index;}}}}第三个函数 public void addAnNumber()//Third step在没有数字的格子中随机选择一个加入数字{int emptyCount 0;for(int i 0; i 4; i){for(int j 0; j 4; j){if(matrixValue[i,j] 0)emptyCount;}}Random rand new Random();int temp rand.Next(emptyCount);emptyCount 0;for (int i 0; i 4; i){for (int j 0; j 4; j){if (matrixValue[i, j] 0){if (emptyCount temp)randomAddNumber(i, j);//往该位置加入数字emptyCount;}}}}其它的请看下篇文章《我的改进版20482》 转载于:https://www.cnblogs.com/liguangsunls/p/7244789.html