Есть несколько способов сделать это. Ради того, чтобы сохранить это как вашу собственную работу, я не буду публиковать код для вас, а буду ссылаться только на потенциальные решения и алгоритмы, которые вы можете использовать.
Первое, что вам нужно сделать, - это создать способ хранения state
доски. Поскольку доска маленькая (3x3)
, я бы просто использовал простую integer array
. Есть три возможных states
, я бы сказал, что Empty равен 0
, X равен 1
, а O равен 2
. Я бы назначил 0-2
верхней 3
, 3-5
средней, а 6-8
нижней. Чтобы упростить ситуацию, я мог бы написать функции get
и set
для этого array
, чтобы я мог
Например, написать set(X,Y,State)
, чтобы установить этот квадрат в это состояние или получить для получения это состояние. После того, как я настрою эту систему, мне нужно будет найти способ для себя выяснить, есть ли у кого-то она. Для этого я бы написал al oop, чтобы проверить каждый квадрат. Если квадрат пуст, тогда ничего не делайте, но если он имеет x
или o
, сохраните координаты как, скажем, x1,y1
, затем проверьте все соседние квадраты. Если какой-либо из соседних квадратов имеет такое же состояние, сохраните координаты как x2,y2
, в противном случае просто перейдите к следующему квадрату.
Наконец, проверьте, существует ли на доске какая-либо из следующих пар координат: (2*x2-x1,2*y2-y1)
и (2*x1-x2,2*y1-y2)
. Если они это сделают, то проверьте, совпадает ли состояние этого квадрата с первыми двумя. Если это так, то независимо от того, в каком состоянии находится этот квадрат, игрок выиграл.