Треки
/
Crystal
Crystal
/
Вправи
/
Стан гри у хрестики-нулики
Стан гри у хрестики-нулики

Стан гри у хрестики-нулики

Середня

Вказівки

У цій вправі ми реалізуємо програму, яка визначає стан гри в хрестики-нулики. (Можливо, цю гру також знають як «noughts and crosses» або «Xs and Os».)

Гра відбувається на полі 3×3. Гравці по черзі ставлять X та O на поле. Гра закінчується, коли один гравець перемагає, поставивши три свої позначки в рядок, стовпець або по діагоналі поля, або коли все поле заповнене.

У цій вправі ми припускаємо, що першим ходить X.

Наше завдання - визначити, у якому стані перебуває задана гра.

Є 3 можливі стани гри:

  • Гра триває: ongoing.
  • Гра закінчилася нічиєю: draw.
  • Гра закінчилася перемогою: win.

Якщо задане поле неправильне, киньте відповідну помилку.

Поле вважається неправильним, якщо виконуються такі умови:

  • Задане поле не можна отримати, якщо ходи робити в правильному порядку (памʼятаємо, що першим ходить X).
  • Гру продовжували після того, як вона вже закінчилася.

Приклади

Гра триває

   |   |
 X |   |
___|___|___
   |   |
   | X | O
___|___|___
   |   |
 O | X |
   |   |

Нічия

   |   |
 X | O | X
___|___|___
   |   |
 X | X | O
___|___|___
   |   |
 O | X | O
   |   |

Перемога

   |   |
 X | X | X
___|___|___
   |   |
   | O | O
___|___|___
   |   |
   |   |
   |   |

Неправильне поле

Неправильний порядок ходів
   |   |
 O | O | X
___|___|___
   |   |
   |   |
___|___|___
   |   |
   |   |
   |   |
Продовження гри після перемоги
   |   |
 X | X | X
___|___|___
   |   |
 O | O | O
___|___|___
   |   |
   |   |
   |   |

Реалізація

У цій вправі нам дано два enum. Обидва типи enum потрібно використати як повернені значення методу state через union. Докладніше про enum і union можна прочитати в довідковій документації Crystal:

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Crystal Exercism

Час розпочати Стан гри у хрестики-нулики?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Crystal, а також 26 концепцій142 вправи та справжнє наставництво від людей, і все це безкоштовно.