gpt4 book ai didi

matlab - 如何在战舰游戏中放置船只?

转载 作者:行者123 更新时间:2023-12-02 09:30:45 25 4
gpt4 key购买 nike

我必须创建 10X10 板和 5 艘船,每艘船的长度分别为 2,3,3,4,5。船只不应相互重叠,它们应位于网格 (10x10) 内,并且只能是垂直或水平的。

我已经研究了近两天,到目前为止我唯一能做的就是在 10x10 板上制作 4 艘水平且重叠的船,长度分别为 2,3,4,5。

所以我坚持的部分如下:1)我将船只设置在网格内,但它们是重叠的。2)我可以制作4艘船,每个长度为2、3、4、5,但不能制作3艘船出现两次。3)我只能水平排列,不能垂直排列。我希望船随机垂直或水平。

所以我编写的代码如下:

{

matrix = zeros(10,10);
row = randi(size(matrix, 1),1,1); %row number
col = randi(size(matrix, 2),1,1); %column number

for i=2:5
while col(1,1)+i-1>10 % Checking if it is within grid
row = randi(size(matrix, 1),1,1); %row number
col = randi(size(matrix, 2),1,1); %column number
end
matrix(row,col:col+i-1)=i;
row = randi(size(matrix, 1),1,1); %row number
col = randi(size(matrix, 2),1,1); %column number


end
matrix

}

我无法想出任何解决方案。我非常感谢您提前提供的帮助。

最佳答案

如果我没记错的话,您遇到的是方法问题,而不是编码本身。

我建议您为每艘船使用一个标志(船舶 ID),并在 10x10 矩阵中给定船舶占据的每个位置上输入该 ID(所有其他位置均为 0,例如)。

现在放置一艘船:

从 10x10 矩阵的空闲点中随机选择一个点(x,y 坐标)。让该坐标代表我们试图放置的船的一端。现在船只能以 4 种可能的方式放置(从所选坐标开始的 4 个方向上/下/左/右)。对于 4 种可能的方式中的每一种,检查(取决于船的长度)是否:

a) 飞船适合且不会超出 10x10 矩阵

b) 船舶不与占用地点重叠

如果 4 个方向中的 1 个或多个都满足,则随机选择一个并放置船舶。否则,在一个虚拟的 10x10 矩阵中,将这个未占用的点标记为不能用于放置当前船舶的点,并随机选择另一个未占用的点(这仍然是合理的,即在我们的虚拟矩阵中没有标记为不可能)。

关于matlab - 如何在战舰游戏中放置船只?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com