Правильное перемещение плиток для игры 2048 года
При попытке создать версию популярной игры 2048 для командной строки вы можете столкнуться с трудностями в реализации правильного перемещения плитки.
Проблема слияния плиток
Одна из проблем, которая может возникнуть, — это когда плитка проходит мимо другой плитки с тем же значением. Например, для следующей доски:
[2][2][4]
И игрок вводит «->», желаемый результат должен быть:
[0][4][4]
Однако ваш текущий подход может неправильно обрабатывать этот сценарий, что потенциально может привести к слиянию четверок и нежелательному результату:
[0][0][8]
Решение
Чтобы решить эту проблему, ваша логика объединения плиток должна учитывать направление движения игрока. Сканируйте плитки в направлении, противоположном движению, отдавая приоритет объединению плиток в этом направлении. Это гарантирует, что вы избежите объединения плиток, которые уже были объединены на предыдущей итерации.
Например, в приведенном выше сценарии начните сканирование с крайнего правого столбца и двигайтесь влево, объединяя любые четверки, с которыми вы столкнетесь. по пути, пока не дойдете до крайнего левого столбца.
Оптимизация кода
Ваш код содержит несколько дубликатов циклов для разных случаев движения. Чтобы повысить эффективность, рассмотрите возможность рефакторинга этих циклов в один цикл, обрабатывающий все случаи:
for i := 1; i < height; i { for j := 0; j < width; j { if board[i][j] == 0 { continue } switch input { case "d": updateBoardDown(board, i, j) case "u": updateBoardUp(board, i, j) [...] } } }
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3