С этой игрой я познакомился, когда играл…
С этой игрой я познакомился, когда играл в "Космических рейнджеров" (это было задание в одном из квестов). Игра показалась мне интересной, и я решил написать свою версию. При этом мне захотелось добавить возможность регулирования уровня сложности. Правила игры очень простые. Два игрока по очереди кладут в корзину шарики трех цветов (красные, синие и зеленые). Всего нужно положить по три шарика каждого цвета. Каждый игрок за один ход может положить один или несколько шариков только одного цвета. Например, два красных или три синих, или один зеленый и т. д. Выигрывает тот, кто кладет последний шарик.
Давайте разберем подробнее принцип выбора оптимального хода. Если в корзине нет шариков, то можно сделать девять различных ходов, во всех остальных случаях количество возможных ходов будет меньшим. Глубина анализа (т. е. количество просчитываемых ходов) будет задаваться текущим уровнем сложности. Допустим, она равна трем.
Это значит, что необходимо проверить все возможные наши ходы, далее просчитать все ходы игрока, а затем снова проанализировать, как мы можем после хода игрока. Для сохранения всех этих данных я использовал двумерный массив. Количество столбцов соответствует максимально возможному количеству ходов (девяти), а количество строк – глубине анализа (трем). Вы, наверное, заметили, что размер массива не позволяет сохранить информацию обо всех возможных ходах. Но это нам и не требуется, ведь мы хотим выбрать оптимальный ход на данный момент, а на следующем ходу мы проводим новый анализ. В массив мы будем записывать информацию о том, приводит данных ход к победе или нет. При этом в первой строке каждая ячейка соответствует возможному ходу.
Если ход возможен и приводит к победе (корзина заполнена) записываем в соответствующую ячейку "1", если после хода корзина не заполнена – "0", и "-127" если ход не возможен. Во второй и следующих строках записываем информацию только о лучших ходах. Т. е. просчитываем мы все возможные ходы, но информацию пишем только о лучшем из них.
Рис.1 Рассмотрим следующий пример. Допустим, корзина заполнена так, как показано на рис.1 (три зеленых шарика, один синий и один красный). В соответствии с приведенными правилами будет составлен следующий массив (первые 3 элемента каждой строки массива соответствуют красному цвету, вторые 3 – синему, третьи 3 – зеленому):
1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
Массив 1