7X7个格子的初始棋盘不出现同行或同列的3个一样的道具lua代码
时间: 2024-05-13 22:14:09 浏览: 19
以下是一个简单的 lua 代码实现:
```
-- 生成一个 7x7 的棋盘
local board = {}
for i = 1, 7 do
board[i] = {}
end
-- 道具类型为 1, 2, 3
local props = {1, 2, 3}
-- 随机放置道具
for i = 1, 7 do
for j = 1, 7 do
-- 获取当前位置的行、列、宫格编号
local row = math.ceil(i / 3)
local col = math.ceil(j / 3)
local block = (row - 1) * 3 + col
-- 获取当前位置所在行、列、宫格已有的道具
local rowProps = {}
local colProps = {}
local blockProps = {}
for k = 1, 7 do
if board[i][k] ~= nil then
table.insert(rowProps, board[i][k])
end
if board[k][j] ~= nil then
table.insert(colProps, board[k][j])
end
end
for m = (row - 1) * 3 + 1, row * 3 do
for n = (col - 1) * 3 + 1, col * 3 do
if board[m][n] ~= nil then
table.insert(blockProps, board[m][n])
end
end
end
-- 获取当前位置可用的道具
local availableProps = {}
for _, prop in ipairs(props) do
if not table.contains(rowProps, prop) and not table.contains(colProps, prop) and not table.contains(blockProps, prop) then
table.insert(availableProps, prop)
end
end
-- 随机放置一个可用的道具
if #availableProps > 0 then
local index = math.random(1, #availableProps)
board[i][j] = availableProps[index]
end
end
end
```
该代码的实现思路如下:
1. 生成一个 7x7 的空棋盘。
2. 定义道具类型为 1, 2, 3。
3. 遍历棋盘上的每个位置,依次判断其所在行、列、宫格已有的道具。
4. 根据已有的道具,筛选出当前位置可用的道具。
5. 随机放置一个可用的道具。如果当前位置没有可用的道具,则不放置道具。
在代码中,我使用了一个辅助函数 `table.contains`,用于判断一个元素是否在一个表中。以下是 `table.contains` 的实现:
```
function table.contains(tab, val)
for _, v in ipairs(tab) do
if v == val then
return true
end
end
return false
end
```
该函数接受一个表和一个值,返回这个值是否在表中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)