Как отменить несколько шагов в игре Tic-Tac-Toe в C - PullRequest
1 голос
/ 17 мая 2019

Я хочу запрограммировать версию игры Tic-Tac-Toe, используя C, в которой у нас есть доска n × n, определяемая пользователем, а проигравший определяется первым, кто получил первые n символов X или O в строке или столбце и т.д ..

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

Например, если игрок 1 ввел «-3» в качестве индекса строки, игре необходимо вернуться обратно, как это было 3 шага раньше (если в игре уже было 3 шага), показать доску и дайте ход игроку 2.

Есть идеи, как я смогу создать такую ​​функцию, или хотя бы совет, как мне начать ее программировать?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

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

0 голосов
/ 17 мая 2019

идея, как я мог бы сделать такую ​​функцию или хотя бы совет, как бы я начал ее программировать?

Альтернатива отмена шагэто вместо того, чтобы вести историю (связанный список) всех активно.Воспроизведите список sans , последний из которых отменен.Менее эффективный, но менее сложный и менее подверженный ошибкам, позволяющий отменять сложные шаги, которые могут присутствовать в более сложных играх.Иногда «резервное копирование» сопровождается тонкими сложностями, когда предшествующее состояние действительно не полностью восстановлено.Сродни @ Tom Karzes @ David C. Rankin

В качестве бонуса у вас есть игровой рекорд.


Рассмотрите вашу игруимеет такие события, как:

  • Настройка по умолчанию
  • Выберите размер n.
  • Выберите X или O, чтобы идти первым
  • Сделать ход
  • Повернуть вид
  • Сохранить игру
  • Восстановить игру
  • Отменить последнюю команду <- теперь можно отменить больше, чем простопоследний "ход" </li>
  • и т. д.
...