2016-12-21 2 views
1

Хорошо, поэтому я очень новичок и программирую игру 4-го уровня. У меня все закодировано так, что два игрока могут играть друг против друга, но я хочу добавить функцию для воспроизведения компьютера.Подключить 4 к компьютеру

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

Вот что мой код для базовой структуры игры выглядит следующим образом:

{ 
    makeBoard(); 

    System.out.println("Choose 0 - 5 to pick which column to drop your piece!"); 
    System.out.println("R is red and Y is yellow."); 
    System.out.println("Player 1, you are red. Player 2, you are yellow."); 
    System.out.println("Good luck!"); 

    printBoard(); 

    boolean flag = true; 

    while(flag) 
    { 
     dropRed(); 
     printBoard(); 

     if(!redCheck()) 
     { 
      flag = false; 
      break; 
     } //check r 


     dropYellow(); 
     printBoard(); 


     if(!yellowCheck()) 
     { 
      flag = false; 
      break; 
     } //check y 

    } // closes while 

Любое руководство ценится, и просто дайте мне знать, если вы хотели бы видеть больше кода, спасибо!

+0

Хорошо, добро пожаловать в SO. Ваш вопрос непонятен. Post и http://stackoverflow.com/help/mcve Прочитайте http://stackoverflow.com/help/how-to-ask – vels4j

ответ

2

мне просто нужно использовать что-то же просто, как случайной функции

Тогда это может быть хорошей идеей, чтобы искать его в Java API общественности. Я свободен, действительно! https://docs.oracle.com/javase/8/docs/api/java/util/Random.html

Следующий шаг - решить, как найти свободное место.

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

Я бы предложил более подход OO-loke.

Это означает, что вы храните список (а не массив!) Доступных координат. Для этого вам нужен специальный класс (объект передачи данных DTO), который содержит значение X и значение Y.

Когда настоящий игрок делает свою очередь, вы удаляете его выбор из этого списка. (массивы не являются динамическими в Java)

Случайный игрок может использовать метод nextInt(LIMIT) в сочетании со списками size() getter, чтобы получить случайное значение из списка доступных позиций.

Каждый поворот сокращает список, а когда список пуст (который вы можете проверить с помощью метода empty()), этот маршрут завершен.

+0

спасибо! Я сейчас буду работать над API! –

0

Выберите «PvP/PvE» в начале и сохраните состояние (в приватную переменную) В рамках одного из методов drop вы можете проверить состояние, взять либо вход с консоли (игрока), либо сделать ПК, чтобы выбрать один.

Советы: Для того, чтобы сделать код более ясным: Мои моменты «WTF», которые являются лучшим способом измерить читаемость кода:

флаг: «Флаг указывает ... что-то ... Я думаю»

dropRed(): «drop dead haha ​​... omg Мне нужны каникулы ... эмм, на самом деле это не капля красного камня? Пока никто не выбрал место для капель?

! RedCheck(): «Почему он отрицает redcheck, но ниже он отрицает желтый чек, почему он не снимает! и переключает два метода? Флаг установлен в значение false, и цикл прерывается. Ооо, хорошо, redCheck() проверяет, победил ли игрок красный!'

// check r:' Ну, я красный, я думаю ... но он уже проверяет красный цвет в утверждении if, это важно? '

dropYellow(): «Ой хорошо, это всегда красный, затем желтый, после каждой капли, независимо от выпавшего цвета, он проверяет, если кто-то выиграл, и выходит из цикла»

yellowCheck(): «Хорошо, точно так же, как красный.

// закрывается во время: «Nooooo ***, Sherlock!»

Так что это небольшие вещи, которые нужно изменить, чтобы улучшить читаемость вашего кода. Например, переименуйте 'flag' в 'gameWon', dropRed() в playerRedsTurn(), redCheck() в hasPlayerRedWon(). Также удалите свои комментарии, утверждение в предложении if должно быть понятным без комментариев, а также «закрывает» пока устарело, если ваш код хорошо отформатирован.

Смежные вопросы