嘿,我试图让我的块根据它在数组中的位置移动,所以如果它在数组 [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;
}
}
}