【求助】初学菜鸟,求助debug
processing吧
全部回复
仅看楼主
level 5
hellofoxxy 楼主
练手写的程序怎么也改不好了,帮忙看看到底哪里出错了[泪]
程序目标:mode=0时背景红色,此时点击左半部分,mode=1且背景变绿色,此时再点击右半部分,mode=2且背景变蓝色
bug:run后为红色,但是此时点击任何位置都会变绿色(mode=1),然后再怎么点击mode都不变了
编程见二楼
2015年11月20日 08点11分 1
level 5
hellofoxxy 楼主
int mode=0;
int x=mouseX;
void setup(){
size(400,400);
}
void draw(){
background(255);
Choose();
println(mode);
}
void Choose(){
if(mode==0){
background(255,0,0);
}
if(mode==1){
background(0,255,0);
}
if(mode==2){
background(0,0,255);
}
}
void mouseClicked(){
if(mode==0&&x<200){
mode=1;
}else if(mode==1&&x>=200){
mode=2;
}else{
}
}
2015年11月20日 08点11分 3
level 5
hellofoxxy 楼主
好吧,我表示其实是写初始选择程序出问题了[汗],忽视运行后窗口未经优化的渣排版,有问题的是以下程序,比上面的简化版稍微复杂一点,不过bug是一样的_(:з」∠)_
int mode=0;
int x=mouseX;
int y=mouseY;
int num,a,b;
void setup(){
size(400,400);
smooth();
}
void draw(){
background(255);
textSize(20);
Choose();
println(mode);
}
void Choose(){
if(mode==0){
fill(255);
rect(100,100,200,200);
rect(150,130,100,55);
rect(150,215,100,55);
fill(0);
text("1",180,175);
text("2",180,260);
}
if(mode==1){
fill(255);
rect(100,100,200,200);
rect(120,200,160,40);
rect(120,250,160,40);
fill(0);
text("a is "+a,120,133);
text("b is "+b,120,166);
text("a+b is "+(a+b),120,199);
text("flash",125,235);
text("OK",125,285);
}
if(mode==2){
fill(0);
text("Your choice is "+num,50,100);
text("a is "+a,80,150);
text("b is "+b,80,200);
text("a+b is "+(a+b),80,250);
}
}
void mouseClicked(){
if(mode==0&&x>=150&&x<=250&&y>=130&&y<=185){
mode=1;
num=1;
}
if(mode==0&&x>=150&&x<=250&&y>=215&&y<=270){
mode=1;
num=2;
}
if(mode==1&&x>=120&&x<=280&&y>=200&&y<=240){
if(num==1){
a=int(random(3,5));
b=int(random(7,9));
}
if(num==2){
a=int(random(7,10));
b=int(random(5,7));
}
}
if(mode==1&&x>=120&&x<=280&&y>=250&&y<=290){
mode=2;
}
}
2015年11月20日 09点11分 4
level 9
原因很简单,把 x=mouseX; y=mouseY;写进draw()函数里面就可以了,自己想想是为什么。
2015年11月20日 13点11分 6
[泪]语气好像老师,嘤嘤嘤,不过很感谢,我琢磨琢磨
2015年11月21日 05点11分
改进去显示错误
2015年11月23日 01点11分
level 5
hellofoxxy 楼主
按照楼上的其他都不改,把x=mouseX; y=mouseY;写进draw(),结果显示这个,int x,y还是全局变量
2015年11月23日 01点11分 7
好吧,我把x=mouseX; y=mouseY;写进了void mouseClicked(),结果就可以了
2015年11月23日 01点11分
level 9
有毒
2015年11月23日 12点11分 8
我是3.0.1,结果就不行
2015年11月23日 12点11分
level 9
真心有毒
2015年11月23日 13点11分 9
level 5
hellofoxxy 楼主
[泪][泪][泪]我重装试试
2015年11月24日 03点11分 10
1