Lua算法:保存井字棋的走法
2021-12-29 10:23:22
收藏:0
阅读:268
评论:1
我现在正在用 Lua 编程,试图制作人工智能。每次我运行代码时(现在我仅仅有Ai的移动代码),它会随机将一个点绘制在棋盘上,但它并没有保存之前的走法。这是一个完全空白的棋盘,只有一个位置被占据。有谁可以帮我吗?如果可以的话,我会非常感激!
function moves()
local Possible = {'1,1','1,2','1,3','2,1','2,2','2,3','3,1','3,2','3,3'}
math.randomseed(os.time())
math.random()
local AImove = Possible[math.random( #Possible )]
print('对手选择了',AImove)
--[[
从可能性中去除数字,只提供合法走法0
]]--
if AImove == '1,1' then
table.remove(Possible,1)
print("_ _ _")
print("_ _ _")
print("X _ _")
end
if AImove == '1,2' then
table.remove(Possible,2)
print("___")
print("X__")
print("___")
end
if AImove == '1,3' then
table.remove(Possible,3)
print("X _ _")
print("_ _ _")
print("_ _ _")
end
if AImove == '2,1' then
table.remove(Possible,4)
print("_ _ _")
print("_ _ _")
print("_ X _")
end
if AImove == '2,2' then
table.remove(Possible,5)
print("_ _ _")
print("_ X _")
print("_ _ _")
end
if AImove == '2,3' then
table.remove(Possible,6)
print("_ X _")
print("_ _ _")
print("_ _ _")
end
if AImove == '3,1' then
table.remove(Possible,7)
print("_ _ _")
print("_ _ _")
print("_ _ X")
end
if AImove == '3,2' then
table.remove(Possible,8)
print("_ _ _")
print("_ _ X")
print("_ _ _")
end
if AImove == '3,3' then
table.remove(Possible,9)
print("_ _ X")
print("_ _ _")
print("_ _ _")
end
end
moves()
原文链接 https://stackoverflow.com/questions/70517521
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你需要一个可以存储游戏状态的东西。我会给你一个非常简单和快速的例子,一个名为
board
的表格,它存储了 9 个字段以及一些函数,允许我们操作和显示棋盘。这应该会给你一个开始的粗略想法。
-- 我们的棋盘 local board = { } -- 检查棋盘上的一个字段 function board:check(row, col, str) board[row][col] = str self:print() end -- 将棋盘打印到屏幕上 function board:print() print("---------") for i,v in ipairs(self) do print("| " .. table.concat(v, " ") .. " |") end print("---------") end -- 初始化 / 清除棋盘 function board:init() for row = 1, 3 do board[row] = {} for col = 1, 3 do board[row][col] = " " end end board:print() end board:init() board:check(2,2,"X") board:check(1,3,"O")