package tictactoe;

import processing.core.PApplet;


public class TicTacToe extends PApplet {

    int cols = 3;
    int rows = 3;
    int h;
    int w;


    public static void main(String[] args) {
        PApplet.main("tictactoe.TicTacToe");

    }

    public void setup() {
        //Organization for size of columns and rows
        w = width / cols;
        h = height / rows;
    }

    public void settings() {
        size(300, 300);

    }


    public void draw() {
        //Draw a tic-tac-toe grid
        background(255);
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                stroke (0);
                noFill();
                rect(i*w, j*h, w, h);

            }
        }





        }
    public class GridSquare{
        //Game state (x's and o's), variables, etc.
        public float x;
        public float y;
        public float w;
        public float h;
        public int state;
        public void drawTurn() {
            if (state == 0) {
                ellipse(x+w/2,y+h/2,w,h);

            }
            if (state == 1) {
                line(x,y,x+w,y+h);
                line(x+w,y,x,y+h);


            }


        }
        //Trouble understanding Grid Detection

        void onClick(int clickedX, int clickedY, int turn) {
            if (clickedX > x && clickedX < x + w && clickedY > y && clickedY < y + h) {

        }
    }
    }
}


我在理解网格检测if语句时遇到麻烦。由于在GridSquare类中定义参数x,y,w和h时都带有分号,这是否意味着这些变量都等于0?在那种情况下,if语句是否不检查click x整数是否大于0,而click x小于0(x)+ 0(w)?还是我错了,代表代码的变量是先前在代码中定义的吗?

最佳答案

如果您考虑同时进行多个游戏(GridSquares),每个游戏都有一个边框,并且每个游戏都绘制在同一面板上,则可能更容易理解。检查只是确定面板中的单击是否对该游戏有效(GridSquare)。如果同时进行多个游戏,则每个游戏的x和y值将有所不同;想象两个游戏并排放置,第一个可能有(x = 0,y = 0),但第二个游戏至少要有300个单位(可能是像素),并给出值(x = 300,y = 0)。

08-17 15:29