我有一些需要帮助的代码。我对这段代码的计划很简单。我有3个buttons
,分别是yellowBar
,greenBar
和redBar
。我还有3张颜色分别为黄色,绿色和红色的图像。我想做的是,当我启动我的应用程序时,我拥有的图像将随机弹出,而无论出现哪种颜色,我都应该能够单击具有相应颜色的按钮。我也有时间,所以基本上我想尽可能正确地单击,但是我的代码只运行一次。我的时间继续减少,但是这段代码只运行一次。如何解决此问题,以便它将继续弹出随机彩色图像,直到时间用完?
while(gameTime > 0){
colorNum = new Random();
colorNumber = colorNum.nextInt(2);
switch (colorNumber){
case 0: colors.setDisplayedChild(0);
break;
case 1: colors.setDisplayedChild(1);
break;
case 2: colors.setDisplayedChild(2);
break;
}
colors.setVisibility(View.VISIBLE);
yellowBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 0){
points ++;
score.setText(String.valueOf(points));
}
}
});
greenBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 1){
points ++;
score.setText(String.valueOf(points));
}
}
});
redBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 2){
points++;
score.setText(String.valueOf(points));
}
}
});
}
最佳答案
更好的解决方案是呈现图形的onClick事件。
按下按钮时,检查答案是否正确,然后渲染图形。
现在像现在那样使用while循环是错误的,因为图形将一直渲染(无论是否按下按钮)
基本上(这不是解决方案,而是基于您的代码的准则):
public void initialize(){
yellowBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 0){
points ++;
score.setText(String.valueOf(points));
updateColors();
}
}
});
greenBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 1){
points ++;
score.setText(String.valueOf(points));
updateColors();
}
}
});
redBar.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(colorNumber == 2){
points++;
score.setText(String.valueOf(points));
updateColors();
}
}
});
}
}
public void updateColors(){
colorNum = new Random();
colorNumber = colorNum.nextInt(2);
switch (colorNumber){
case 0: colors.setDisplayedChild(0);
break;
case 1: colors.setDisplayedChild(1);
break;
case 2: colors.setDisplayedChild(2);
break;
}
colors.setVisibility(View.VISIBLE);
}