Привет, сообщество stackoverflow,
Я решил начать изучать, как сделать Android Apps в Android Studio, и в качестве первого проекта я подумал, что было бы интересно сделать простую расчетную игру.
Сначала он генерирует случайную сумму, например 5 + 5. По сумме имеет 4 кнопки, на которых я хочу сгенерировать правильный ответ и три неправильных ответа. Игрок нажимает кнопку с правильным или неправильным ответом, и сумма и ответы снова генерируются.
// Generate wrong answers and convert
int wronganswer1 = (answ1) + 2;
String wronganswer1string = Integer.toString(wronganswer1);
int wronganswer2 = (answ1) - 2;
String wronganswer2string = Integer.toString(wronganswer2);
int wronganswer3 = (answ1) + 3;
String wronganswer3string = Integer.toString(wronganswer3);
//Add Text to the buttons
Button ansb1 = (Button)findViewById(R.id.answerbutton1);
ansb1.setText(answer);
Button ansb2 = (Button)findViewById(R.id.answerbutton2);
ansb2.setText(wronganswer1string);
Button ansb3 = (Button)findViewById(R.id.answerbutton3);
ansb3.setText(wronganswer2string);
Button ansb4 = (Button)findViewById(R.id.answerbutton4);
ansb4.setText(wronganswer3string);
Это заполняет текст на кнопках одним правильным ответом и тремя неправильными ответами. Проблема в том, что правильным ответом всегда будет кнопка вверху.
Мой вопрос в том, как переключать значения кнопок каждый раз, когда генерируется новая сумма. Поэтому правильный ответ не всегда будет на одной и той же кнопке.
Используйте массив для хранения ваших ответов.
String[] ans = new String[4];
int wronganswer1 = (answ1) + 2;
int wronganswer2 = (answ1) - 2;
int wronganswer3 = (answ1) + 3;
ans[0] = Integer.toString(answ1);
ans[1] = Integer.toString(wronganswer1);
ans[2] = Integer.toString(wronganswer2);
ans[3] = Integer.toString(wronganswer3);
Сохраните ссылки на Button
со List
.
List<Button> btns = new ArrayList<Button>(4);
btns.add((Button)findViewById(R.id.answerbutton1));
btns.add((Button)findViewById(R.id.answerbutton2));
btns.add((Button)findViewById(R.id.answerbutton3));
btns.add((Button)findViewById(R.id.answerbutton4));
Теперь, используйте Collections.shuffle()
для рандомизации Button
s
Collections.shuffle(btns);
и просто перебирайте List
чтобы задать ответы.
for (int i = 0; i < 4; i++) {
btns.get(i).setText(ans[i]);
}
Вы должны настроить рандомизированное на кнопках так, чтобы строки перехватили вычисления, чтобы было похоже, что (правильный ответ) # перейдите на кнопку #, неправильный ответ: # - # перейти к кнопке #
switch
для выбора правильного ответа, а затем распределить остальные ответы на кнопки слева