Вложенный цикл for внутри do while, чтобы держать ходы игрока в порядке.

Это начальная попытка создать счетчик ходов для простой пошаговой игры. Хотя в настоящее время это бесконечный цикл, мне любопытно, есть ли лучший или более элегантный способ сделать то, что я хочу сделать - поддерживать порядок ходов игроков на протяжении всей игры.

public class Main {
    public static void main(String args[]){

        int i;     // player turn counter
        int j = 6; // number of players created + 1

        do {
            for (i=1; i < j; i++){
                System.out.println("Player " + i);  // just for visualization
            }
        }while (true);
    }
}

Я очень новичок в java. Я обнаружил, что для базовых циклов for требуется +1, чтобы избежать подсчета -1 ниже.

Мое условие while будет чеком на победителя, скажем:

while(winner == false) 

or

while(!winner)

person Ja-oon Solo    schedule 05.12.2016    source источник
comment
На самом деле, while (!winner). Вам определенно не нужен while(winner = false), так как = является оператором присваивания.   -  person khelwood    schedule 05.12.2016
comment
= — оператор присваивания. Используйте == для сравнения.   -  person Pshemo    schedule 05.12.2016
comment
я отредактировал. Я не НАСТОЛЬКО новичок, я не уловил это, прежде чем нажать «Отправить». Спасибо @khelwood   -  person Ja-oon Solo    schedule 05.12.2016
comment
Вам нужно i <= j, если вы хотите, чтобы шестой игрок имел ход.   -  person 4castle    schedule 05.12.2016
comment
Я сделал это недавно, и это не дало мне результата, которого я хотел. Я просто попробовал еще раз, и это сработало. спасибо @4castle   -  person Ja-oon Solo    schedule 05.12.2016
comment
Подождите секунду, что вы хотите сделать, так это создать порядок игроков, а затем обновить этот порядок, когда один игрок меняет свою инициативу? Используйте отсортированный список и используйте одну итерацию внешней пузырьковой сортировки при изменении значения.   -  person Aziuth    schedule 06.12.2016


Ответы (2)


Ваш метод кажется лучшим сценарием прямо сейчас. Другие методы включают использование массивов, которые здесь только усложняют ситуацию. Хотя, чтобы сохранить вложенный цикл, вы можете просто добавить условие !winner в цикл for

for (i=1; i < j && winner == false; i++)
    {
        System.out.println("Player " + i);
        if(i==j)
            i=1;
    }

это будет работать так же хорошо и сохранит другой цикл.

person Yashovardhan99    schedule 05.12.2016
comment
Я пока не в массивах. Я добавил !winner в свой фрагмент кода и также отредактировал вопрос выше. ты @Yashovardhan - person Ja-oon Solo; 05.12.2016
comment
Обратите внимание, что теперь вам больше не нужен внешний цикл do while. - person Yashovardhan99; 06.12.2016
comment
Вы можете просто добавить условие if, чтобы проверить, когда i == j, а затем установить его обратно в 1 - person Yashovardhan99; 06.12.2016
comment
В моем первом случае было 216 символов, включая оператор if, который вы добавили. Во втором — 215 символов, а в вашем — 170 символов. Потрясающе, @Yashovardhan - person Ja-oon Solo; 07.12.2016

Это совершенно нормально, всего несколько наблюдений while(winner == false), так как одно = означает присваивание, а == означает сравнение.

person Aimee Borda    schedule 05.12.2016