一种2048游戏自动“玩游戏”算法的实现

更新时间:2009-03-28

1 2048游戏简介

2048游戏是一款数字益智游戏。游戏背景是在4*4的方格内,玩家通过不断上下左右移动,在16个方格内,拼出“2048”数字方格。游戏的规则为:游戏开始时随机出现两个数字2的格子,玩家向上下左右一个方向移动,所有数字格子向该方向靠拢,剩余的空白格子随机出现一个2或4,相同数字相撞会合并,然后经过不断的上下左右移动,不断的合并最终合成2048这个数字就算成功

创办“粮食银行”,不仅切实提高了农民的收益,还实现了政府多年倡导的“粮食不落地”精神,更推进了农村土地集约化和规模化发展,为落实强农、惠农、富农政策,实现乡村振兴提供了有益的实践参考。“粮食银行”属于新生事物,还需逐步加强管理和完善,在运营过程中相关部门不能缺位,必须制定合理可行的办法来防范风险。与此同时,也期待“粮食银行”能遍地开花,造福广大农民。

2 自动游戏功能的原理

2.1 数据结构

建立二维数组map[4][4]用来记录每一个格子的数字,二维数组map[i][J]表示第i行第j列格子中的数字,初始化数组中所有的格子数字为0。

2.2 游戏局面评价指标与实现

(1)单调性。单调性指方块从左到右、从上到下均遵从递增或递减。一般来说,越单调的格局越好。首先将数组map中的每一项取以2为底的对数。先计算横向的单调性,即每一行的单调性。首先从每一行的第一列的数字开始(map[i][J]),向后寻找最近第一个非零数字map[i][jj],然后判断两个数的大小,用小的数字减去大的数字,并记录结果,然后将jj的值赋给j(跳过其中的空白格子),向后寻找非零数字格子,用小的减去大的,将结果相加保存。依次计算第一到第四行的所有结果。纵向计算单调性与横向类似,即计算每一列的单调性。

(2)平滑性。平滑性是指每个方块与其直接相邻方块数值的差,其中差越小越平滑,一般认为越平滑的格局越好。同样将数组map中的每一项取以2为底的对数。然后遍历数组map中每一个格子,如果map[i][J]为零,则跳过循环继续下一次。如果map[i][J]不为零,则向下、右寻找最近的非空格子map[i][jj]和map[ii][J],计算map[i][J]和向下和向右非空格子数字相减的绝对值,并记录。

(5)局面得分。将上述四个指标分别计算后,再乘以各指标对应的不同权值,作为当前局面的得分。

物理试卷讲评课的创意设计不足,导致教学缺失表现为“五缺”:一是讲评目标缺失,评讲没有方向性;二是教学补偿缺乏,导致错误的巩固纠正不足;三是自主纠错缺位,学生自我反思不够;四是缺少方法提炼,没有形成方法体系;五是缺少自我反思,对错题缺乏深层次的认知归因。

(4)空格子数目。即为16个方格中没有数字的方格的数目,通过遍历二维数组map,并记录其中数字为0的格子的数目。

The number of dissected lymph nodes was used as an indicator of oncological clearance.

(3)最大值。最大值即所有数字格子中数值最大的数值,通过遍历数组map,比较大小即可得到。

大部分应用型本科院校已根据自身的专业特色,建立了相对成熟的校企合作机制。而电子商务实践的教学改革,正好可以利用这一优势,搭建适合电子商务课程的实践平台,以企业的实践工作和社会发展趋势为导向,为学生提供更接地气的学习环境。应用型本科院校还可以聘请创新创业培训团队的企业讲师做学生的“场外指导”,将工作实践第一线的内容搬到教学实践中,帮助学生制订工作计划,拟订工作任务,以小组为单位展开竞赛,能够极大地提高教学效果。

2.3 游戏最佳移动方向的实现

在max节点搜索中,分为叶结点和非叶结点的处理方法。

确定最佳移动方向的算法采取格局树,max节点表示游戏玩家,min节点表示电脑,在随机空白位置出现2或4。在树中采用a-b(alpha-beta)剪枝,a表示搜索到当前节点时已知最好选择的下界,即max节点可以做出的最好选择,b表示从这个节点往下搜索最坏结局的上界,即min节点可做出的最好选择(max节点为最坏选择)。当b小于a时会进行剪枝,表示从此处开始不论最终结局是哪一个,其上限价值也要低于已知的最优解,也就是说已经不可能此处向下找到更好的解,则回溯到父节点继续搜索。

对于叶结点,即当前搜索深度大于等于最深搜索深度时,遍历上下左右,然后计算移动后各局面分数。如果计算出的分数大于a,即当前最好选择大于传入的最好选择的值,则把分数的值赋给a,并修改最佳移动方向。再选择下一个方向进行移动后计算分数,四个方向遍历完毕后,记录最佳方向,并将最好的a、b的值返回。

对于非叶结点,上下左右遍历后,再向下对min节点搜索,将搜索得到的a、b的值记录。如果min节点b大于父节点a,则将min节点b赋给父节点的a,说明电脑做出最好选择的分数大于当前可做出的最好选择,则更新最好选择的值,并修改最佳移动方向。最后再判断a>=b,若成立,则如果向这个方向移动,则min节点做出最坏选择,由此向下移动的局面分数不会超过b,即不会超过已有最好选择,则进行剪枝,不再向下计算,跳出循环,将最佳方向和a、b的值返回。若不成立,再选择下一个方向移动计算分数,四个方向遍历后,记录最佳方向,将最好的a、b的值返回。

在min节点搜索中,在每一个空格子中赋值2,即考虑电脑随机在空白格子出2的情况(本算法中只考虑最差位置出2的情况)。赋值之后,再向下搜索max节点,搜索最佳移动方向。如果向下搜素的a小于b,则说明min节点可以做出更差的选择,将a赋给b,更新b的值。更新b的值后,再判断a>=b,若成立,则剪枝并返回当前a、b,否则的话,将赋值2的格子恢复为零,再将数字2赋给下一个空白格子,寻找使当前局面变得最差时的局面(即电脑完美出现2)。最后经过深度搜索、计算、递归后,决定最佳移动方向。

3 自动游戏算法结果统计

表1

  

最大数字1024204840968192出现次数3057121实验总次数100权值分布平滑性=0.1 单调性=1.5空格数=2.7 最大值=1

表2

  

最大数字512102420484096出现次数2325115实验总次数100权值分布平滑性=0.1 单调性=1 空格数=2.7 最大值=1

分析:该算法基本上能使得2048及以上数字的概率在65%以上,当单调性所分配的权值为1.5时,合成2048及以上数字的概率达到70%。通过不断的调整各评价指标所占的权值,可以提高合成2048及以上数字的概率。

 
许子明
《科技风》 2018年第16期
《科技风》2018年第16期文献
100%安全可靠
7X18小时在线支持
支付宝特邀商家
不成功全额退款