jerryxjr1220 发表于 2017-3-6 16:02:08

python小练习(076):带AI的2048小游戏

本帖最后由 jerryxjr1220 于 2017-3-7 08:43 编辑

之前的小练习编写过一个2048小游戏,今天在原来游戏的基础上添加AI(人工智能),让计算机自己可以判断怎么移动。

思路:
2048小游戏每一步其实都有最优策略,即“使每一步的空白格尽可能多,而格子中的数字尽可能大”,在最优决策的前提下,可以让计算机模拟走2~3步,(2步是4*4的16种情况,3步是4*4*4的64种情况,模拟再多没有意义,因为每一步产生的随机数会不同),然后根据所有的结果,判断哪一步是最优策略,然后就走这一步。每一步都依次循环。
******************** 2 0 4 8 ********************
Total Step: 322
Last step: d
---------------------------------------------
|          |          |          |          |
|   4      |   64   |   2      |   8      |
|          |          |          |          |
---------- + -------- + -------- + ----------
|          |          |          |          |
|   2      |   16   |   512    |   16   |
|          |          |          |          |
---------- + -------- + -------- + ----------
|          |          |          |          |
|   2      |   64   |   32   |   4      |
|          |          |          |          |
---------- + -------- + -------- + ----------
|          |          |          |          |
|   2      |   256    |   2      |   4      |
|          |          |          |          |
---------------------------------------------

电脑自己玩的结果(我目前是模拟了2步,16种情况,取最优解),基本上每局至少可以取到512,还有不少看运气成分。

用pyinstaller打包了exe文件,可以直接运行。

全自动化版本源代码:
**** Hidden Message *****

手动控制AI版本:按“I”由计算机自动走一步。
**** Hidden Message *****

jerryxjr1220 发表于 2017-3-6 16:35:46

程序还有优化的空间,目前我使用的策略是:
剩余空格>最大值>最大值的数量。
当最大值比较小的时候完全是没问题的(比如小于512),但是当大于512以后,每一步就必须要非常小心,不然就可能前功尽弃。
还有就是当2个1024相遇,下一步就绝对是组合,不用再考虑剩余空格了,这一点也必须要优化。
{:10_254:}

qq498002064 发表于 2017-3-6 17:00:14

来看看

...公子 发表于 2017-3-6 19:11:10

{:5_91:}大神就喜欢AI

新手·ing 发表于 2017-3-6 19:39:53

谢谢

新手·ing 发表于 2017-3-6 19:40:37

你真是 非人哉
太厉害了

小甲鱼的二师兄 发表于 2017-3-6 20:40:53

厉害了~()~

jerryxjr1220 发表于 2017-3-6 21:27:45

...公子 发表于 2017-3-6 19:11
大神就喜欢AI

单做游戏的话,没啥意思,要玩就要玩点有技术含量的啊{:10_279:}
其实象棋或者围棋(AlphaGo)的AI设计思路都是一样的,整体的AI系统就是由"遍历系统"(搜索所有可行解),"模拟系统"(模拟所有可行解取得所有局面),"局面评估系统"(评估所有局面找到最优解,现在谷歌用的是深度神经网络系统)构成的。
如果我们也有一套可靠的系统,加上牛逼的硬件系统(普通电脑的运算能力不足以支持这么复杂的系统),那么开发我们自己的AlphaGo也是可行的。

WylLy 发表于 2017-3-6 21:43:54

好厉害,学习学习

...公子 发表于 2017-3-6 22:54:51

{:5_91:}了解,复杂AI和简单AI原理上都差不多,但是复杂AI的实现还是很麻烦的,不但是硬件的性能,软件的算法、优化等等都很麻烦。菜鸡表示还在膜拜中!

当回首遇上转身 发表于 2017-5-2 20:54:30

默默献上膝盖{:10_336:}

鹰搏空 发表于 2017-5-27 18:13:36

{:5_106:}

P先生 发表于 2017-6-26 09:50:55

樗散 发表于 2017-11-23 22:01:25

学习一下

sideboyd 发表于 2017-11-24 11:58:12

1111111111

strawberry626 发表于 2017-12-8 15:04:40

急切需要学习

小可爱呀! 发表于 2017-12-10 12:08:50

哈哈

超级乐乐gogogo 发表于 2017-12-11 11:04:20

回复

yyf900524 发表于 2017-12-11 16:46:33

厉害了

oneoo 发表于 2017-12-28 22:45:56

{:5_91:}
页: [1] 2 3
查看完整版本: python小练习(076):带AI的2048小游戏