2

私は潜んでいて、ここでたくさんの素晴らしい情報フォームを見つけましたが、ここ数日、私は立ち往生していて、私の問題に関する助けを見つけることができなかったので、ID 投稿を考えました.

宿題があり、配列の内容を一番下の行にドロップダウンさせる必要があります。グリッドを回転させても、アイテムは一番下の行にドロップダウンし、一番下の行からオブジェクトを食べると、その列の上にあるすべてのものもドロップダウンするはずです。

どんな助けでも大歓迎です。

これは何が起こるべきかのデモビデオです:

http://youtu.be/CB07vN-C_-Y

これは私がこれまでに持っているものです:

`public class Assignment
{
// This method should return a *new copy* of
// the 2D cell matrix, with entries rotated clockwise
// The original matrix should not be changed
public static int[][] rotateClockwise(int[][] cells)
{  
    int w = cells.length;
    int h = cells[0].length;   
    int[][] matrix = new int[h][w];
    for (int i = 0; i < h; ++i) 
    {
        for (int j = 0; j < w; ++j) 
        {
            matrix[i][j] = cells[j][h - i - 1];
        }
    }
    return matrix;
}

// This method should return a *new copy* of
// the 2D cell matrix, with entries rotated anti-clockwise
// The original matrix should not be changed
public static int[][] rotateAnticlockwise(int[][] cells)
{
    int w = cells.length;
    int h = cells[0].length;
    int[][] matrix = new int[h][w];
    for (int i = 0; i < h; ++i) 
    {
        for (int j = 0; j < w; ++j) 
        {
            matrix[i][j] = cells[w - j - 1][i];
        }
    }
    return matrix;
}

// This method should return a *new copy* of the array, except
// that if there is a 0 that has a non-zero in the preceding
// slot in the array, then those two entries should be swapped
// See ProgrammingProject.pdf for an example
// The original array should not be changed
public static int[] dropOne(int[] column)
{  
            return column; // this will compile but gives the wrong result
}

}`
4

2 に答える 2

0
for(int i  = 0; i < arrayWidth; i++) {
   boolean reachedZero = false;
   for( int j = 0; j < arrayHeight; j++) {
      if(array[i][j] == 1 && reachedZero == true) {
         while( j >=0 && array[i][j - 1] == 0) {
            array[i][j-1] = array[i][j];
            array[i][j] = 0;
            j--;
            reachedZero = false;
         }
         j--; // Maybe an error here, it's late
      if( array[i][j] == 0) {
      reachedZero = true;
      }
   }
}

これは、/ learnprogramming sub-redditの素敵なredditor(RankWeis)によって投稿されました。 http://www.reddit.com/r/learnprogramming/comments/126597/java_help_needed_on_adding_a_gravity_effect_to/

于 2012-10-27T15:18:11.580 に答える
0

Queue<Icon> col = new LinkedList<Icon>()列を;としてモデル化します。の概要はこちらQueue<Segment>、 の完全な例はこちらにありQueue<Bauble>ます。peek()キューの先頭 (一番下) でできます。空の場合remove()は、列から 1 ブロック離れてadd()末尾 (上部) に移動します。

補遺: このから始めて、 を削除しgetGray()、レイアウトを に変更しますnew GridLayout(0, 1)。次に、代わりにshuffle(list)、キューを循環させます。

于 2012-10-27T12:17:50.203 に答える