Jim*_*mmy 6 java arrays multidimensional-array
首先,这不是作业;).我正试图从头开始创建一个wordsearch游戏并遇到障碍我需要一些指导.
我正在使用二维数组的字符来进行wordsearch的网格.我非常适合在水平方向放置这些数组中的单词,但我真的很想知道如何垂直地执行此操作.
这就是我到目前为止,你应该能够复制/粘贴它并运行它
import java.util.ArrayList;
import java.util.List;
public class WordGame
{
private static List<String> words = new ArrayList<String>();
private static int longestWordLength = 0;
private static int padSize = 4;
private static char[][] grid = null;
public static void main(String[] args)
{
initialiseWords();
workOutLongestWord();
setupGrid();
printIt();
}
private static void printIt()
{
for (int i = 0; i < grid.length; i++)
{
for (int j = 0; j < grid.length; j++)
{
System.out.print(grid[i][j]);
}
System.out.print("\n");
}
}
private static void setupGrid()
{
grid = new char[longestWordLength + padSize][longestWordLength + padSize];
for (int i = 0; i < grid.length; i++)
{
String w = (i >= words.size()) ? "?" : words.get(i);
for (int j = 0; j < grid.length; j++)
{
grid[i][j] = (j >= w.length()) ? '?' : w.charAt(j);
}
}
}
private static void workOutLongestWord()
{
for (String word : words)
{
if (word.length() > longestWordLength)
{
longestWordLength = word.length();
}
}
}
private static void initialiseWords()
{
words.add("monkey");
words.add("cow");
words.add("elephant");
words.add("kangaroo");
}
}
Run Code Online (Sandbox Code Playgroud)
打印出类似......的东西
monkey??????
cow?????????
elephant????
kangaroo????
????????????
????????????
????????????
????????????
????????????
????????????
????????????
????????????
Run Code Online (Sandbox Code Playgroud)
我需要在左/右手边随机填充它们,但我可以自己做.
问题:尝试将单词垂直放入二维数组中的有效方法是什么?我最初的想法是向下计算所需的单词长度,如果?找到除了a之外的其他任何东西,则打破,并继续这样做,直到我找到一个空格.但是,一旦我考虑到单词重叠,这种情况就不会很好.
有什么指针吗?
在实现“战舰”时,我在 C 中遇到了类似的问题。不同的船尺寸不同,不能让它们相交。
一旦你有了垂直的单词,你就需要检查你的水平单词是否也击中了它们。
我建议创建一个“Word”类,它是围绕 String 的一个精简类。您只需要跟踪以下内容即可。
然后,您创建一个方法来验证单词的位置。EG,整个单词必须在板上,并且没有碰撞。您可以通过一系列线段来模拟单词碰撞。这可以通过使用矩形到矩形碰撞算法来完成,其中一维几乎为 1。