Я изучаю разработку Android и пытаюсь создать простую игру для игры в Монти Холл.Создание двух одинаковых случайных чисел, а другое -
В принципе, у вас есть три двери на выбор, а одна дверь имеет машину за ней, а у каждого из двух других есть коза за ней.
Я сделал цикл while с условием, чтобы три случайных числа не были равны 0 (что означает коза) или не будет иметь больше, чем на переменной со значением 1 (автомобиль).
Но когда я запускаю программу и перехожу к этой операции, она застрянет на черном экране без ошибки , как будто она находится в бесконечном цикле.
Правильно ли логика в цикле do while?
public class Game extends Activity{
ImageView image1, image2, image3;
int[] images={R.drawable.gaot1, R.drawable.eleanormustang};
Random r = new Random();
int i1 = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gameactivity);
picClicked();
}
public void picClicked() {
do {
i1 = r.nextInt(2 - 0) + 0;
i2 = r.nextInt(2 - 0) + 0;
i3 = r.nextInt(2 - 0) + 0;
} while ((i1 & i2 &i3) ==0 || ((i1 & i2) & (i1 & i3) & (i2 & i3)) ==1);
image1 = (ImageView) findViewById(R.id.ImageView1);
image2 = (ImageView) findViewById(R.id.ImageView2);
image3 = (ImageView) findViewById(R.id.ImageView3);
image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//image1.setImageResource(R.drawable.gaot1);
image1.setImageResource(images[i1]);
}
});
image2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
image2.setImageResource(images[i2]);
}
});
image3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
image3.setImageResource(images[i3]);
}
});
}
}
Почему бы не создать случайное число от 1 до 3, а затем назначить эту дверь машине, а две другие козе? Это полностью исключает цикл while и делает логику намного легче отслеживать и отлаживать. –
@JasonMArcher Ya, знаю, что это имеет смысл :) – AMS91
Иногда получение кода, отформатированного на веб-сайте, может быть сложным. Но здесь, на SO, вам просто нужен 4-сегментный отступ. :) – JasonMArcher