Processing 不出现在画布上的圆圈

Processing 不出现在画布上的圆圈,processing,mouseevent,Processing,Mouseevent,我正试图建立一个处理连接4游戏,遵循教程 我在4:05停下来检查我的代码,但我注意到了一些东西…我不知道为什么,但当我点击时,圆圈应该会弹出,但它们不是…有人能帮我吗?谢谢 以防万一,下面是代码: int h = 6; int w = 7; int bs = 100; int[][] board = new int[h][w]; int player = 1; void setup() { size(700, 600); ellipseMode(CORNER); } in

我正试图建立一个处理连接4游戏,遵循教程

我在4:05停下来检查我的代码,但我注意到了一些东西…我不知道为什么,但当我点击时,圆圈应该会弹出,但它们不是…有人能帮我吗?谢谢

以防万一,下面是代码:

int h = 6; 
int w = 7;
int bs = 100;
int[][] board = new int[h][w];
int player = 1;

void setup() {
    size(700, 600);
    ellipseMode(CORNER);

}

int nextSpace(int x){
    for (int y = h - 1; y >= 0; y--) if (board[y][x] == 0) return y;
    return -1;
}

void mousePressed(){
    int x = mouseX / bs; 
    int y = nextSpace(x);
    if (y >= 0){
        board[y][x] = player;
        player = player == 1 ? 2 : 1;
    }

}

void draw() {
    for (int j = 0; j < h; j++){
        for (int i = 0; i < w; i++){
            fill(255);
            rect(i * bs, j * bs, bs, bs);
            if (board[j][i] > 0){
                fill(board[j][i] == 1 ? 255 : 0, board[j][i] == 2 ? 255 : 0, 0);
                ellipse(i * bs, j * bs, bs, bs);
            
            }
        }       
    }
}

下次遇到此类问题时,请尝试使用系统方法来定义bug的位置:

你的绘图功能坏了吗?要检查它,请在黑板上放一些东西,看看它是否显示。例如,在设置中添加board[1][1]=1,您将看到一个圆圈出现,因此问题不在绘图中

那么,如果你点击屏幕,它会像预期的那样更新你的电路板吗?第一件事是添加一个简单的printlnClicked;在老鼠脸上。现在,您看到您的单击事件运行良好,因为每次单击时都会显示字符串,因此,如何获取x和y肯定是个问题

使用printlnx;和printlny;在鼠标中按下鼠标,以了解您的价值观。你们会注意到,你们并没有得到x的整数,你们得到的是十进制数

这就是你的问题:你不能访问board[1.543],这没有意义,所以你只需要保留mouseX/bs的整数部分。为此,您可以这样使用:

int x = int(mouseX / bs); 

您的草图现在运行良好。

下次遇到此类问题时,请尝试使用系统方法来定义您的错误所在:

你的绘图功能坏了吗?要检查它,请在黑板上放一些东西,看看它是否显示。例如,在设置中添加board[1][1]=1,您将看到一个圆圈出现,因此问题不在绘图中

那么,如果你点击屏幕,它会像预期的那样更新你的电路板吗?第一件事是添加一个简单的printlnClicked;在老鼠脸上。现在,您看到您的单击事件运行良好,因为每次单击时都会显示字符串,因此,如何获取x和y肯定是个问题

使用printlnx;和printlny;在鼠标中按下鼠标,以了解您的价值观。你们会注意到,你们并没有得到x的整数,你们得到的是十进制数

这就是你的问题:你不能访问board[1.543],这没有意义,所以你只需要保留mouseX/bs的整数部分。为此,您可以这样使用:

int x = int(mouseX / bs); 

您的草图现在运行良好。

链接到非现场资源是不够的,您必须在问题中添加相关代码。请阅读和。链接到非现场资源是不够的,您必须在问题中添加相关代码。请阅读和阅读。