2

私が作成しているテトリス ゲームの Java で文字列配列をどのように回転させますか。たとえば、文字列配列

[
"JJJJ",
"KKKK",
"UUUU"
]

になるだろう

[
"UKJ",
"UKJ",
"UKJ",
"UKJ"
]

このコードを使用して、char マトリックスで実行できます

public char[][] rotate(char[][] toRotate)
{
    char[][] returnChar = new char[toRotate[0].length][toRotate.length];
    for(int rows = 0; rows<toRotate.length; rows++)
    {
        for(int cols = 0; cols<toRotate[0].length; cols++)
        {
            returnChar[cols][toRotate.length-1-rows]=toRotate[rows][cols];
        }
    }
    return returnChar;
}
4

3 に答える 3

1

Java では文字列は不変であるため、いくつかのオプションがあります。

  1. それを文字列配列に戻す、rotate(char [][]) のラッパーを作成します。
  2. 関数を変更して、入力から文字列の新しい配列を作成します
  3. 最も効率的な形式でデータを保持し、必要な形式でデータを返すゲッターを持つデータ構造を作成します。

3は本質的にあなたが「すべき」ことです。Tetris ゲームでは、ゲーム フィールドのサイズのマトリックスを作成します (おそらくパディングされます)。

于 2012-11-29T22:31:02.097 に答える
1

配列文字列を使用することは、あなたがしたいことと似ています:

public static String[] rotate(String [] toRotate)
  {

      String [] returnChar = new String[toRotate[0].length()];
      String [] result = new String[toRotate[0].length()];
      Arrays.fill(returnChar, "");

      for(int rows = 0; rows<toRotate.length; rows++)
          for(int cols = 0 ; cols < toRotate[rows].length(); cols++)
              returnChar[cols] = returnChar[cols] + toRotate[rows].charAt(cols);

      for(int i = 0; i < returnChar.length; i++)
          result[i] =  new StringBuffer(returnChar[i]).reverse().toString();

      return result;
  }

arrayのすべてcharを調べ、この char ( ) を配列の各 Stringに連結します。StringtoRotatetoRotate[rows].charAt(cols)returnChar[cols]returnChar

于 2012-11-29T22:36:22.347 に答える
0

char[][]この関数は、関数を使用できるように文字列を変換する仕事をします。

  public static String[] rotateString(String[] toRotate) {
    char[][] charStrings = new char[toRotate.length][];
    for(int i = 0; i < toRotate.length; i++) {
      charStrings[i] = toRotate[i].toCharArray();
    }

    // This is YOUR rotate function
    char[][] rotatedStrings = rotate(charStrings);
    String[] returnStrings = new String[rotatedStrings.length];
    for(int i = 0; i < rotatedStrings.length; i++) {
      returnStrings[i] = new String(rotatedStrings[i]);
    }

    return returnStrings;
  }
于 2012-11-29T22:31:35.253 に答える