【问题标题】:Checking grid for word search game检查单词搜索游戏的网格
【发布时间】:2013-01-25 05:01:55
【问题描述】:

我制作了这款拼图类游戏,到目前为止它运行良好。这里的这个方法是用于搜索 10x10 的网格来查看用户输入的单词是否正确。我遇到的问题是此代码仅适用于从左到右和从上到下出现的单词。现在我不指望做对角线,但我想让它以相反的顺序出现的单词也被系统接受。有人告诉我,您输入的单词必须翻转(反转)才能查看它是否正确匹配(这是有道理的。毕竟,您正在寻找一个反词)。那么我将如何实现这一目标?现在,我不太擅长编码,所以,如果你有时间,请写下我必须使用的代码。谢谢。

public static boolean wordSearch (char[][] table, String search)
       {
           int  ctr = search.length();
           String temp = ""; 

           // LEFT TO RIGHT / X-AXIS
           for (int row = 0; row < 10; row++) //Checks each row (x) one by one
           {
                   for (int a = 0; a <= (10 - ctr); a++)
                   {
                    StringBuilder s = new StringBuilder(10-ctr);//Does... something
                        for (int x = a; x <= (a+ctr-1); x++) //Checks every possibility in the row
                         {
                            s.append(table[row][x]);
                            temp = s.toString();
                            if (temp.equals(search))
                            {
                                return true;
                            }
                         }
                   }
           }
           // TOP TO BOTTOM / Y-AXIS
           for (int column = 0; column < 10; column++)
           {
                   for (int b = 0; b <= (10 - ctr); b++)
                   {
                    StringBuilder v = new StringBuilder(10-ctr);
                        for (int y = b; y <= (b+ctr-1); y++)//checks every possibility in grid
                         {
                            v.append(table[y][column]);
                            temp = v.toString();
                            if (temp.equals(search))
                            {
                                return true;
                            }
                         }
                   }
           }
            return false;//if word isn't in grid it returns as false, which then displays an error message
      }

【问题讨论】:

  • stackoverflow.com/questions/198199/… 向您展示了如何反转字符串 - 您是对的,这将是检查从右到左或从下到上的单词的最干净的方法。
  • 在以上链接提供的所有解决方案中,我最喜欢这个:#include &lt;algorithm&gt; std::reverse(str.begin(), str.end());
  • 以上是 C++ 答案。我已经用 Java 标签重新标记了这个问题,并将我原来的答案也修改为 Java。

标签: java search word wordsearch


【解决方案1】:

编辑 ... Java 版本!!! (我现在手头没有 Java 编译器,但我认为这是对的……)

在代码的第二行,我们计算反向字符串; 有成千上万种方法可以做到这一点,但这个方法是不言自明的(我假设你的字符串中没有空格......):

int ls = search.length();  // length of initial string
StringBuilder sb = new StringBuilder(); // temporary place to store growing string
for(int ii=ls-1;ii>=0; ii--) {
        sb.append(search.charAt(ii)); // build the string one character at a time
    }
hcraes = sb.toString(); // convert to "regular" string

现在,在你有线的每一点

if (temp.equals(search))

将该行更改为

if (temp.equals(search) || temp.equals(hcraes))

这应该可以解决问题。

【讨论】:

  • 什么是“std::reverse”?它似乎并不完全有效。它说这是一个非法的表达开始。你能澄清一下吗??
  • 这是 Java 还是 C++ ...也许我读你的代码太快了。乍一看,它可能是?但是 std:reverse() 是 C++。如果您需要 Java 答案,请告诉我。用语言标记您的问题可能很好......
  • 是的,对不起。我刚刚注册了这个。是的,我可能应该指定。它适用于 Java。
  • 好吧,难怪你会感到困惑。等一下……我给你Java版。
  • 非常感谢。真的,我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多