0

嘿,我试图让我的块根据它在数组中的位置移动,所以如果它在数组 [0] [0] 中并且我在屏幕上绘制它,我希望它在我将新块放入 [0 时移动][1] 并删除 [0][0] 中的内容,但我遇到问题可以帮忙吗?

package com.example.coloroblind;

import java.util.ArrayList;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.Log;
import android.view.View;

public class GameView extends View
{

    block array[][];
    int bottom, top;
    private float rectY = 10;
    private float rectX = 10;
    boolean start = false;
    boolean move = false;
    int w;// The width
    int h;// The hieght
    int x, y;
    // the x and y location of the block& index of the array

    // Needed for the block color
    private Paint paint;

    // Constructor
    public GameView(Context context)
    {
        super(context);
        paint = new Paint();
    }

    // Called back to draw the view. Also called by invalidate().
    @Override
    protected void onDraw(Canvas canvas)
    {
        // starts and initializes the array with the one block before going into the main program
        // sets the hight and width the size of the screen
        if (start == false) {
            w = this.getWidth() - 55;
            h = this.getHeight() - 55;
            bottom = h;
            top = 0;
            firstCreateBlockArray();// creates the first block
            start = true;
        }

        paint.setColor(Color.BLUE);

        for (int x = 0; x < w; x++) {
            for (int y = 0; y < h; y++) {
                if (array[x][y] != null)
                    canvas.drawRoundRect(array[x][y], 6, 6, paint);
                update(x, y);// this is suppose to move the array block
            }
        }

        // Delay
        try {
            Thread.sleep(300);
        } catch (InterruptedException e) {
        }

        invalidate(); // Force a re-draw
    }

    private void firstCreateBlockArray()
    {
        // Creates the array2d of blocks and sets to null
        array = new block[w][h];
        for (int x = 0; x < w; x++) {
            for (int y = 0; y < h; y++) {
                array[x][y] = null;
            }
        }
        int hori = (int) (Math.random() * w) + 1;
        array[hori][0] = new block(hori, 0);// sets the horizonatall of the block randomly

    }

    // suppose ot change position of the block in the array
    private void update(int x, int y)
    {
        // Detect collision and react

        if (y < bottom - 1) {
            array[x][y + 1] = array[x][y];
            // array[x][y]=null;
        }
    }
}
4

0 回答 0