Реверси - это элегантно простая игра. Я собираюсь использовать psuedo C # / Java langauge для объяснения некоторых понятий, но вы можете перенести их в Python.
Чтобы разбить его на самые простые компоненты, у вас есть две основные вещи:
Двумерный массив, представляющий игровое поле:
gameBoard[10,10]
И некоторая форма перечисления, которая хранит состояние каждой плитки на игровой доске:
enum tile
{
none,
white,
black
}
Для рендеринга игровой доски вы перебираете массив gameBoard, увеличивая смещение размера фигуры:
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
// The Piece to draw would be at gameBoard[i,j];
// Pixel locations are calculated by multiplying the array location by an offset.
DrawPiece(gameBoard[i,j],i * Width of Tile, j * width of tile);
}
}
Аналогично, разрешение щелчка мышью обратно в местоположение в массиве будет аналогичным, используйте местоположение мыши и смещение для расчета фактической плитки, на которой вы находитесь.
Каждый раз, когда плитка размещается, вы сканируете весь массив и применяете простой механизм, основанный на правилах, для определения того, какими должны быть новые цвета. (Это настоящий вызов, и я оставлю его на ваше усмотрение.)
ИИ может воспользоваться сканированием массива с помощью гипотетических ходов, сделать 10 или около того возможных ходов, а затем выбрать тот, который дает наилучший результат. Старайтесь не делать это умным, так как легко создать непревзойденного ИИ, если вы позволите ему разыграть всю игру в своей голове.
Когда в массиве больше нет свободных мест, вы заканчиваете игру.