2

我有以下问题。

我正在尝试为 Android 编写俄罗斯方块游戏。因此,我需要在 GameView 上放置一个 Grid(一个自编码类,它扩展了 SurfaceVieW)。

不幸的是,我不知道如何在 GameView 上绘制网格。

我已经实现了一个 Grid 类,它设置行和列的宽度和高度。

我的网格课

    package com.example.tetris;

    import android.content.Context;
    import android.graphics.Paint;
    import android.widget.GridView;

    public class Grid extends GridView
{
    private int rowsWidth;
    private int columnsHeight;
    private int rowsNum;
    private int columnsNum;
    private Paint gridcolor;
    private GameView gameview;

    public Grid(Context context)
    {
        super(context);
    }

    public void drawGrid(GameView gameview)
    {
        this.gameview = gameview;

        rowsWidth = gameview.getWidth() / 10;

        rowsNum = gameview.getWidth() / rowsWidth;

        columnsHeight = gameview.getHeight()/rowsWidth;

        columnsNum = gameview.getHeight() / columnsHeight;

        setHorizontalSpacing(1);

        setColumnWidth(rowsWidth);
        setNumColumns(columnsNum);
    }


}

我的游戏视图类

    package com.example.tetris;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.GridView;

public class GameView extends SurfaceView {

    private SurfaceHolder surfaceHolder;

    private Tetriminos[] tetriminos[];

    private GridView grid;

    public GameView(Context context)
    {
        super(context);

        final GameLoopThread gameloop = new GameLoopThread(this); // warum er final erzwingt, ka

        surfaceHolder = getHolder();

        surfaceHolder.addCallback(new SurfaceHolder.Callback()
        {
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format,
                    int width, int height) {
                // TODO Auto-generated method stub      
            }

            @Override
            public void surfaceCreated(SurfaceHolder holder) {

                gameloop.setRunning(true);
                gameloop.start();
            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
                gameloop.setRunning(false);
            }
        });

    }

    protected void onDraw(Canvas canvas) {

        canvas.drawColor(Color.BLACK);
        drawBorders(canvas);
        // grid.drawGrid(this);

    }

    public boolean onTouchEvent(MotionEvent event) {

        return false;

    }

    public void drawBorders(Canvas canvas)
    {
        int borderwidth = 10;
        int screenWidth = getWidth();
        int screenHeight = getHeight();
        Paint bordercolor = new Paint();
        bordercolor.setARGB(255, 236, 27, 36);

        canvas.drawRect(0, 0, borderwidth, getHeight(), bordercolor);
        canvas.drawRect(0, getHeight()-borderwidth, getWidth(), getHeight(), bordercolor);
        canvas.drawRect(getWidth()-borderwidth, 0, getWidth(), getHeight(), bordercolor);
        canvas.drawRect(0, 0, getWidth(), borderwidth, bordercolor);
    }

}
4

0 回答 0