1.首先选择一个随机数。
2.随机数对应于switch语句中的案例(琐事问题)。
3.案件的每个可能的答案都有onClick()。
4.选择正确的答案(并且它对应的onClick)
我希望骰子再次滚动并将游戏推进到下一个问题。
5.我的调试日志告诉我这个掷骰子的价值。但是,我无法在交换机中查看相应案例的视图。
`public class BeginGame extends Activity {
Random generator = new Random();
private static final String TAG = "MyActivity";
boolean dupe = true;
boolean done = false;
int intitializedQuestionValue = -2;
final int rows = 3;
final int columns = 25;
final int RIGHT = -2000;
final int WRONG = -1000;
int score = 0;
int num;
//define array of three rows and 25 columns
int[][] questionArray = new int [rows][columns];
int[] questionNumber = new int [25];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
final Button button0 = (Button) findViewById(R.id.button0);
final Button button1 = (Button) findViewById(R.id.button1);
final Button button2 = (Button) findViewById(R.id.button2);
final Button button3 = (Button) findViewById(R.id.button3);
final TextView text = (TextView) findViewById(R.id.TextView01);
//initialize "dice"
for (int i=0; i<25; i++){
questionNumber[i] = -1;
}
for(int i=0; i < columns; i++)
questionArray[0][i] = intitializedQuestionValue;
//set all questions to answered WRONG
for (int i=0; i <columns; i++)
questionArray[1][i] = WRONG;
rollDice();
loop: while (!done)
switch (num) {
case 0:
text.setText("press Virginia0:");
button0.setText("Alabama");
button0.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Toast.makeText(BeginGame.this, "fail", Toast.LENGTH_SHORT).show(); rollDice();
//questionArray[2][0]= score -2;
}
});
button1.setText("Mississippi");
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(BeginGame.this, "fail", Toast.LENGTH_SHORT).show(); rollDice();
//questionArray[2][0]= score - 2;
}
});
button2.setText("Philadelphia");
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Toast.makeText(BeginGame.this, "fail", Toast.LENGTH_SHORT).show(); rollDice();
//questionArray[2][0]= score -2;
}
});
button3.setText("Virginia");
button3.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Toast.makeText(BeginGame.this, "success", Toast.LENGTH_SHORT).show(); rollDice();
//questionArray[1][0]=RIGHT;
//questionArray[2][0]= score + 5;
}
});
break loop;
case 1:
text.setText("press alabama1:");
button0.setText("Alabama");
button0.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Toast.makeText(BeginGame.this, "success", Toast.LENGTH_SHORT).show(); rollDice();
}
});
button1.setText("Mississippi");
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
}
});
button2.setText("Philadelphia");
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
}
});
button3.setText("Virginia");
button3.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
}
});
break loop;
`
答案 0 :(得分:2)
你的程序不会以这种方式工作。你必须更多地了解android。
创建活动时会调用onCreate方法。即:当它出现在前面时。它在UI线程上执行:一个与用户交互但永远不应被阻止的线程。所以,你基本上是用你的循环来阻止UI线程(顺便说一下,num会改变吗?)。
您应该从onCreate方法中删除while循环。只需使用它来初始化您的活动,可能是数据结构,如问题和小部件及其听众。
现在为听众提供更多逻辑:单击按钮后,更改问题并刷新界面,以便显示新问题。这样做,直到没有其他问题要问。
永远不要阻止UI线程,将其释放,以便用户可以使用您的应用。