Member 12825358 Ответов: 0

Незаконный ход в игре cluedo


Привет,
Я пишу игру Cluedo на java, но не уверен в своих алгоритмах, которые отслеживают движение игрока.
Я предполагаю, что этот код верен только в ситуации, когда игрок может сделать только один шаг по сетке в свой ход. Как бы вы трансформировали этот код, чтобы сделать его применимым к этой игре, где игроки могут двигаться столько же, сколько количество выпавших кубиков, и не нарушая правила(двигаясь по диагонали)?

Что я уже пробовал:

int current_x;
int current_y;

int xDiff = Math.abs(current_x - x_final);
int yDiff = Math.abs(current_y - y_final);
if(xDiff == yDiff){
// means a player cannot move diagonally
return false;
}else{
return true}

Richard Deeming

Чтобы предотвратить диагональные перемещения, вам просто нужно проверить это xDiff + yDiff равно числу прокатанных. Но это слишком упрощенно.

Вам также нужно будет проверить, что пользователь не перешел через край доски и что он не прошел через какие-либо стены.

И не забывайте, что Cluedo не основан на строгой сетке-каждая комната считается единым "пространством" и может иметь несколько дверей. Игрок, который начинает рядом с одной дверью и бросает 2, может войти в комнату и выйти через другую дверь, эффективно используя короткий путь через доску.

Member 12825358

Спасибо, ваше предложение сработало!
Для других ваших точек я создал 2d-массив int. Я дал всем комнатам одинаковые значения (то есть любому квадрату, попавшему в комнату, дается значение), коридорным квадратам одинаковые значения, и то же самое касается всех дверей комнаты. Что вы об этом думаете?

0 Ответов