Java две циклы, затем измените состояние

Я пытаюсь запустить этот цикл дважды, затем измените состояние на 1. (state = 1;). это возможно?

public void mousePressed() {
 if (state == 0) {
 for (int i = 0; i < 6; i++) {
 if (mouseX >= cards[i].x && mouseX <= cards[i].x + cards[i].WIDTH && mouseY >= cards[i].y && mouseY <= cards[i].y + cards[i].HEIGHT) {
 cards[i].flip();
 }
 }
state = 1;
}

Теперь, когда я запускаю этот цикл, он запускается только один раз и меняет форму состояния 0 (состояние == 0) на 1. Мой вопрос: могу ли я сделать этот цикл дважды (нажмите мышью 2 раза), затем измените состояние с 0 на 1 (состояние = 1;).

заранее большое спасибо. любая помощь будет оценена по достоинству.

2 ответа

Я понимаю, что вы хотите изменить состояние 1 во втором выполнении mousePressed. Вам нужно разделить ваше состояние. Один из способов - ввести новую переменную состояния (пусть first ее вызовет), которая используется для различения state == 0 до и после первого щелчка мыши:

private boolean first = true;
public void mousePressed() {
 if (state == 0) {
 for (int i = 0; i < 6; i++) {
 if (mouseX >= cards[i].x && mouseX <= cards[i].x + cards[i].WIDTH && mouseY >= cards[i].y && mouseY <= cards[i].y + cards[i].HEIGHT) {
 cards[i].flip();
 }
 }
 if (first) {
 first = false;;
 } else {
 state = 1;
 // perhaps reset first?
 }
 }
}

Второй подход заключается в том, чтобы позволить state взять третье значение, которое будет обрабатываться так же, как и состояние 0 во всем остальном в вашей логике. (Понятно, что у вас бы были состояния 0 и 0 '.)


Не 100% уверены, что вы спрашиваете, это что-то вроде этого:

public void mousePressed() {
 state = 0; /* Assuming it is global */
 while (state < 2) {
 for (int i = 0; i < 6; i++) {
 if (mouseX >= cards[i].x && mouseX <= cards[i].x + cards[i].WIDTH && mouseY >= cards[i].y && mouseY <= cards[i].y + cards[i].HEIGHT) {
 cards[i].flip();
 }
 state++;
 }
}

Это вызовет цикл 2 раза для каждого mousePressed. переключатель, if на while

licensed under cc by-sa 3.0 with attribution.