gpt4 book ai didi

java - 二维阵列战舰放置随机船只

转载 作者:行者123 更新时间:2023-12-02 04:08:00 25 4
gpt4 key购买 nike

嗨,我刚刚开始创建战舰游戏,我想知道如何在我的二维数组中放置随机船只。这是二维数组的代码。

public class javaapplication24 {

public static void main(String[] args) {
int[][] table = new int[10][10];
int i,j,k;
for(i=0;i<table.length;i++){
for(j=0;j<table.length;j++){
System.out.print(table[i][j]+" ");
}
System.out.println();
}
}
}

最佳答案

您毫无疑问注意到的问题是,当每艘船被放置时,它排除了后续船可以放置的可能性。解决困难的最简单方法就是反复试验。首先编写一个函数,用于将给定大小的船随机放置在棋盘上的某个位置。使用嵌套循环放置船只。外循环可以是一个 for 循环,它迭代要放置的船只。内部循环可以是一个 while 循环(或者可能是一个 do 循环),它重复调用船舶放置函数来获取候选放置,然后检查它是否与先前的选择冲突,循环直到找到无冲突的放置。

就放置一艘船而言:

1)首先生成一个0或1的随机数来确定船是水平放置还是垂直放置

2) 然后选择一个随机数来确定它所在的行或列

3) 最后,为包含船舶的行或列中的第一个方格选择一个随机数。船舶的尺寸将输入此处。例如,如果长度为 3,则第一个方格只有 10-3 = 7 种可能的选择(假设标准 10x10 板)。

编辑时:@Manus 提出了一个很好的观点,即如果船只数量超过一定阈值,就会遇到困难。如果你在一个小棋盘上拥有大量的船只,那么(某些船只的)某些部分放置可能会排除其余船只的任何有效放置。我认为解决这个困难的唯一方法是使用回溯方法,在尝试放置船舶之前检查是否有足够的空间,如果没有,则重新访问之前船舶的放置位置,直到找到可行的方法。但是,检查是否存在任何有效位置所涉及的工作可以通过同时确定有效位置集的方式来完成,在这种情况下,您最好直接从该集中进行选择,而不是使用反复试验。我的方法本质上是一种快速而肮脏的方法来模拟 child 的游戏。如果您想要更灵活的游戏,您将需要更复杂的方法。

关于java - 二维阵列战舰放置随机船只,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068487/

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