Я хочу создать игру Саймона Сайса, чтобы улучшить свои навыки программирования, это сложнее, чем я думал. Так что изначально я решил, что будет 50 уровней макс, поэтому я генерировать 50 случайных чисел между 1-4 и хранить их в массиве, я проверил это работает в консоли:Совет для повторения цикла для Simon Says в Android
for(int i = 0; i <50; i++){
random = randomGenerator.nextInt(4)+1;
array[i] = random;
System.out.println(Integer.toString(i)+" " + Integer.toString(array[i]));
}
Далее я вызываю метод, называемый игра, которая должна запускать игру, в этом методе у меня есть цикл, который выполняется 50 раз, он проверяет, является ли индекс i моего массива 1, 2, 3 или 4, затем окрашивает пронумерованную кнопку.
public void play(){
for(int i =ii; i<50; i++){
if(b1bool==false){
if(array[i] == 1){
//Set button to Blue
b1.setBackgroundColor(0xFF0000FF);
}
else if(array[i] == 2){
//SEt button to Yellow
b2.setBackgroundColor(0xFFFFFF00);
}
else if(array[i] == 3){
//SEt button to Red
b3.setBackgroundColor(0xFFFF0000);
}
else if(array[i] == 4){
//SEt button to Green
b4.setBackgroundColor(0xFF00FF00);
}
b1bool = true;
}
}
}
Я использую логическое значение, чтобы остановить цикл, и в тот момент, продолжая цикл путем прессования button1:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
b1.setBackgroundColor(0xffffffff);
b2.setBackgroundColor(0xffffffff);
b3.setBackgroundColor(0xffffffff);
b4.setBackgroundColor(0xffffffff);
b1bool=false;
ii++;
play();
break;
case R.id.button2:
if(b2bool == true)
{
}
break;
case R.id.button3:
if(b3bool == true)
{
}
break;
case R.id.button4:
if(b4bool == true)
{
}
break;
}
}
Я пришел к StackOverflow, потому что мой обычный способ решить программирования проблемы как правило, очень длинная извилистая и неэффективная вообще, мне нужно, чтобы вы испытали советы программистов о том, как решить проблему, когда вы дадите мне решение или часть решения, которое я хочу знать, как вы прибыли туда, чтобы я мог лучше изучить подход чем у меня сейчас.
Я думал о создании метода для каждого из 50 уровней и в нем код для запуска каждого уровня и называть это в цикле for 50 раз, это нехорошее решение, но пока единственный способ я может думать об этом. Любые советы высоко ценится.
Спасибо за ваш ответ. Я прочитал его и потратил много времени, пытаясь вырвать способ сделать это, но я как бы потерян. Дело в том, что ваш ответ имеет прекрасный смысл, я вижу в голове, почему делать это таким образом было бы наилучшим образом, мне просто не хватает опыта, чтобы сделать это до сих пор. Спасибо!! – deucalion0
Я отредактировал свой ответ с небольшой диаграммой, чтобы я дал больше ясности. – Gusdor
Спасибо, вы предоставили мне то, что я просил, советы о том, как разрабатывать и разрабатывать мое приложение! Я буду использовать это в качестве основы! – deucalion0