Golang Go语言中用 Go 撸了下 2048 的 AI

用 Go 把 2048 的 AI 撸了一遍,有兴趣的同学可以参考下。

算法用的 Expectimax,局面评估靠几个简单的权值矩阵,因为请求频繁,使用 websocket 来通信。2048 的网页前端是从别人的项目 fork 过来修改的,在 readme 上有说明。

https://github.com/xwjdsh/2048-ai


Golang Go语言中用 Go 撸了下 2048 的 AI

更多关于Golang Go语言中用 Go 撸了下 2048 的 AI的实战教程也可以访问 https://www.itying.com/category-94-b0.html

44 回复

太厉害了!

更多关于Golang Go语言中用 Go 撸了下 2048 的 AI的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


什么?你把我撸了?

卧槽。。

#2 哈哈哈哈

自古二楼出人才

二楼 2333333

不说歪楼的事,这个搞得很厉害

确实不错。

2 楼, 23333

谢谢。

请问你的 AI 是哪个部位?

果然二楼欢乐多

2 * 1024 ? 我还以为…

我试了几个服务器,都正常。你看看这个链接有没有帮助呢。

https://github.com/moby/moby/issues/16816

合格的二楼-.-

爆出 1024 之后速度好像会变慢很多?

是的,爆出 1024 和 2048 分别提升一个搜索深度,会导致速度变慢。

#2
自古二楼出人才

流弊,求待

小白围观

大佬你谦虚了。。

前面很快,后面( 1024 之后)开始吃力了,效率还有的提升。

是的,爆出 1024 和 2048 分别提升一个搜索深度,会导致速度变慢。代码上可以优化的地方有不少,谢谢支持。

好 diao

只玩到分数 71652

自古二楼欢乐多。。

局面评估上实现的比较粗糙,我也觉的跑起来不太稳定。

原来已经开源了。

为啥我的印象中 2048 这个游戏除了会刷出 2,还会刷出 4

开源的挺多的,我也参考了一些项目。大多是 js 实现的,服务端实现的少一些。

是会刷出 4 的。10%出 4,90%出 2,这个是前端里 js 的逻辑,没有改过。

http://ovolve.github.io/2048-AI/

跟这个用的同一算法么?

这个项目我读过,作者用的算法是 minimax 结合剪枝,expectimax 是基于其的一个变种,在局面评估上,他考虑的方面很多,表现很好。

厉害了。。学习中

早上来办公室看 github 吓一跳,原来被大佬翻牌了。

给大佬跪了。。。

在Go语言中实现2048游戏的AI是一个既有趣又富有挑战性的项目。2048的AI设计通常涉及启发式搜索算法,如深度优先搜索(DFS)、广度优先搜索(BFS),或者更高级的算法如A*、蒙特卡洛树搜索(MCTS)等。下面是一些关于如何在Go中实现2048 AI的简要建议:

  1. 游戏状态表示:首先,你需要一个数据结构来表示2048的游戏状态,通常是一个4x4的二维数组。

  2. 评估函数:为了指导搜索过程,你需要一个评估函数来估算给定游戏状态的好坏。这通常基于当前游戏板上的数字总分、空位数量、最大块的值等因素。

  3. 搜索算法:对于简单的实现,DFS或BFS可能就足够了。然而,为了获得更好的性能,你可以考虑使用A*或MCTS等算法。这些算法能够更有效地探索可能的移动,并基于评估函数的结果来选择最佳移动。

  4. 优化:在实现基本的AI后,你可以尝试通过剪枝、缓存中间结果、优化评估函数等方式来提高AI的性能。

  5. 测试与调试:在实现过程中,不断地测试和调试你的AI是非常重要的。你可以通过让AI与随机玩家、其他简单AI或你自己对战来评估其性能。

总之,用Go语言实现2048的AI是一个很好的编程练习,它不仅能帮助你深入理解Go语言的特性,还能让你学习到如何设计和实现启发式搜索算法。祝你项目顺利!

回到顶部