Processing 不出现在画布上的圆圈
我正试图建立一个处理连接4游戏,遵循教程 我在4:05停下来检查我的代码,但我注意到了一些东西…我不知道为什么,但当我点击时,圆圈应该会弹出,但它们不是…有人能帮我吗?谢谢 以防万一,下面是代码: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
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);
您的草图现在运行良好。链接到非现场资源是不够的,您必须在问题中添加相关代码。请阅读和。链接到非现场资源是不够的,您必须在问题中添加相关代码。请阅读和阅读。