Недавно я наткнулся на игру 2048. Вы объединяете подобные плитки, перемещая их в любом из четырех направлений, чтобы сделать "большие" плитки. После каждого перемещения новый фрагмент появляется в случайном пустом месте со значением либо 2
, либо 4
. Игра заканчивается, когда все поля заполнены, и нет движений, которые могут объединять плитки, или вы создаете плитку со значением 2048
.
Во-первых, мне нужно следовать четко определенной стратегии достижения цели. Итак, я подумал о написании программы для нее.
Мой текущий алгоритм:
while (!game_over) {
for each possible move:
count_no_of_merges_for_2-tiles and 4-tiles
choose the move with a large number of merges
}
То, что я делаю, в какой-то момент, я попытаюсь объединить плитки со значениями 2
и 4
, то есть, я стараюсь как можно меньше иметь 2
и 4
плитки. Если я попробую так, все остальные плитки автоматически объединяются, и стратегия кажется хорошей.
Но, когда я на самом деле использую этот алгоритм, я добираюсь до 4000 очков до окончания игры. Максимальные баллы AFAIK составляют чуть более 20 000 очков, что намного больше, чем мой текущий балл. Есть ли лучший алгоритм, чем выше?