Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am currently making an android app which plays the puzzle game hashi. I am currently struggling to output the game grid. i want to output a 2d array like bellow-

1  0  0  0  1
0  2  0  0  2
2  0  3  0  1
0  0  0  0  0
0  0  2  0  2

however when i run the application in the emulator it outputs just a blank white screen.

main activity-

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new boardView(this));
    //sets the view to the board view to show the puzzle on open.
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}

game board class-

public class boardView extends View {

    public float IslandX;
    public float IslandY;
    public int islandDiameter;

    private Canvas canvas;

    public boardView(Context context) {
        super(context);
    }
    int gameBoard[][] = {{0, 1, 0, 0, 1}, {0, 2, 0, 0, 2}, {2, 0, 3, 0, 1}, {0, 0, 0, 0, 0}, {0, 0, 2, 0, 2}};
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)

    public void DrawBoard(Canvas canvas){
        Paint Island = new Paint();
        Island.setStyle(Paint.Style.FILL);

        Island.setStyle(Paint.Style.FILL);

        float stepX = canvas.getWidth() / 5.f;
        float stepY = canvas.getHeight() / 5.f;

        for (int i = 0; i < 5; i++) {
            for (int R = 0; R < 5; R++) {
                IslandX = i * stepX;
                IslandY = R * stepY;
                if (gameBoard[i][R] == 0) {
                    Island.setColor(Color.BLUE);
                    canvas.drawOval(IslandX, IslandY, 50, 50, Island);

                } else if (gameBoard[i][R] == 1) {
                    Island.setColor(Color.BLACK);
                    canvas.drawOval(IslandX, IslandY, 50, 50, Island);

                } else if (gameBoard[i][R] == 2) {
                    Island.setColor(Color.BLUE);
                    canvas.drawOval(IslandX, IslandY, 50, 50, Island);

                }


            }
        }

        }

}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
120 views
Welcome To Ask or Share your Answers For Others

1 Answer

To make your board visible, you have to move your code from Drawboard to the overwritten method onDraw and in the onCreate method, you have to call invalidate() on an instance of the class boardView, that calls the onDraw method to update the screen, if visible.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...