Головоломка - PullRequest
       35

Головоломка

3 голосов
/ 12 декабря 2010

Мне дали задание решить головоломку Bubble Breaker.Есть две части игры.1. Пользовательский плеер 2. Центральный процессор.Я написал код для проигрывателя User, но понятия не имел, как будет играть процессор Cpu таким образом, чтобы игрок мог получить максимальный счет и полностью очистить игровое поле.Если кто-то может помочь мне с этим ??

, когда игра начинает свою загрузку, файл содержит целое число в диапазоне ч / б 1 и 3. 1 для красного цвета 2 для зеленого 3 для желтого

1111111111
2323333132
1131123222
2222222113
1111111111
1111111111
1111111111
1111111111

смежные цвета должны быть удалены.

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

Ответы [ 3 ]

2 голосов
/ 12 декабря 2010

Если вам просто нужен «хороший» результат вместо идеального, вы можете использовать методы Монте-Карло. Основная идея:

Произвольно выберите позицию, по которой нужно щелкнуть. Делайте это, пока нет возможности удалить любые шары. Запомните счет и очки, по которым вы щелкнули.

Сделайте это 10000 раз, и вы будете в порядке против большинства людей.

Если вам все еще нужно получить лучшего ИИ-игрока, вы можете взять максимальный счет, который вы набрали выше, в качестве нижнего предела. Затем вы оцените максимальное количество баллов, которое может быть достигнуто с определенной позиции, и, если это число меньше «лучшего случайного результата», вы можете отменить эту конкретную попытку.

0 голосов
/ 12 декабря 2010

Чтобы получить лучший результат, необходимо рассчитать количество возможностей.Факторы, которые влияют на такие возможности:

  1. сколько смежных пузырьков потребуется, чтобы взорваться?Это 3 пузыря подряд?4 пузыря подряд?5?

  2. еще один фактор - сколько форм образует ваш пузырь, чтобы взорваться?только горизонтальное образование?только по вертикали?это включает в себя диагональ?

  3. Третий фактор - это размер вашей сетки.Насколько он велик?

Так что это действительно даст огромное количество возможностей после учета этих факторов.

Но давайте попробуем проанализировать простой.Скажем, сетка 2x2 с горизонтальным и вертикальным формированием, взрывающаяся 2 пузырьками:

[a][b]
[c][d]

Возможности: ab, cd, ac, bd = 4 возможности.

Это уже даету тебя 4 возможности.

Таким образом, с сеткой 4x4, с вертикальным и горизонтальным образованием и 3 взрывающимися пузырями действительно сложатся огромные вычисления.

0 голосов
/ 12 декабря 2010

Вы можете рассматривать сетку как двумерный массив.

11...
23...

означает

arr[0][0]=1; 
arr[0][1]=1; 
arr[1][0]=2; 
arr[1][1]=3; 

И таким образом вы можете проверить наличие одного цвета:

//using arr[0][0] as the base point
if ( (arr[0][0])==(arr[0][1])) //look in your right
{
   //explode
}
if ( (arr[0][0])==(arr[1][0])) //look below
{
   //explode
}
if ( (arr[0][0])==(arr[1][1])) //look at lower right (diagonal)
{
   //explode
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...