Текстовые крестики и нолики

#java #arrays #if-statement #for-loop

#java #массивы #if-оператор #for-цикл

Вопрос:

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

  1. Имеют следующие классы: GameTest , Game , Board и Player (имеют два экземпляра этого)
  2. Используйте массив для доски.

Я был бы признателен, если бы у кого-нибудь были какие-либо предложения о том, как я мог бы улучшить или идеи о том, как это сделать.

Спасибо

Комментарии:

1. Это кажется разумным началом; что у вас есть до сих пор?

2. более или менее просто идея tbh. Я создал базовые классы, но не уверен в инициализации чего-либо в классе. Потому что мне может потребоваться передать параметр при создании экземпляра этого класса, например, board в классе Game. Так что не очень уверен, как это сделать. Пожалуйста, был бы признателен за пример для начала

3. Создайте ctor, который принимает параметр.

Ответ №1:

вероятно, это будет выглядеть примерно так:

  1. игрок должен быть ‘x’ или ‘o’ (или 0/1)
  2. доска представляет собой 1-мерный массив (0..8) или 2-мерный (3×3) массив int или char (0,1,2) или (‘_’, ‘x’,’o’)
  3. методы:
    • switchTurn()
    • currentTurn() (возвращает ‘x’ /’o’)
    • playMove(player, cell) — ячейка может быть одним целым числом (0 ..8) или 2d (0 ..2,0 ..2)
    • validMove() возвращает true
    • isWinner (игрок)
    • isDraw() (недопустимые ходы)

это должно дать вам приблизительное представление

Комментарии:

1. Спасибо за ваш ответ. Когда вы говорите, что игрок должен быть «x» или «o», означает ли это, что я должен создать два класса игроков, таких как PlayerX и playerO? Или, если у меня есть только один класс с именем Player, как бы я передал значение X или O каждому игроку? ваша помощь очень ценится…. Также я предполагаю, что эти методы будут входить в класс Player и вызываться из класса Game?

2. это действительно зависит от вас. у вас может быть player в качестве класса с полем «тип», которое равно x / o. вы можете поместить switchTurn / currentTurn в класс Game, validMove, isWinner, isDraw в класс board и playMove(доска, ячейка) в класс player, например. действительно зависит от вас