2012-11-01 12 views
2

Мне поручено создать бардовскую игру, используя C# в университете.C# 1D обнаружение столкновения массива

Должно быть 2-4 игроков, каждый игрок бросает кости в свою очередь. Цель состоит в том, чтобы добраться до последнего квадрата на сетке.

Единственное релевантное правило в этом вопросе состоит в том, что не более одного игрока могут находиться на одной и той же площади одновременно.

Так, например

Оба игрока начинают в положении 0.

игрока (А) выбрасывает 1 = Игрок (А) на площади 1. Игрок (Б) выбрасывает 1 = игрока (В) «пропускает» над игроком (A) и приземляется на квадрат 2.

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

private static void PlayerTurn(int playerNo) 
     { 
     playerPositions[playerNo] = playerPositions[playerNo] + RollDice(); 
     // The selected player rolls the dice and moves x amount of squares 
     //(dependant on dice roll value) 
     } 

Это метод перемещения каждого игрока.

То, с чем я борюсь, - это следующий метод.

static bool RocketInSquare(int squareNo) 
     { 
     //TODO: write a method that checks through the 
     //rocket positions and returns true if there is a rocket in the given square 
     } 

Метод должен проверять наличие столкновений в массиве. Поэтому, если игрок (A) покатал 1 на первом рулоне, а игрок (B) набрал 1 на первом броске, мне нужно сделать игрока (B) «leapfrog» (A), чтобы перейти на квадрат 2.

В момент, когда игра просто запускается в консоли, если это помогает. Извините за формат этого вопроса, никогда не спрашивали здесь раньше.

Большое спасибо

ответ

1

Ну вам нужно просто проверить, если оба игрока разделяют ту же позицию, и если это так, «активным игроком» разрешено двигаться

if(playerpositions[otherPlayer] == playerpositions[currentPlayer]) 
    playerpositions[currentPlayer]++; 

один Так что если вам нужно сделать функцию, что это будет:

static bool RocketInSquare(int squareNo) 
{ 
    return playerpositions[0] == squareNo || 
      playerpositions[1] == squareNo || 
      playerpositions[2] == squareNo || 
      playerpositions[3] == squareNo; 
} 

А потом

int dice = RollDice(); 

if(RocketInSquare(playerPositions[playerNo] + dice)) 
{ 
    playerPositions[playerNo] += dice +1; 
} 
else 
{ 
    playerPositions[playerNo] += dice; 
} 
+0

Итак, у меня есть int currentplayer = playerNo Мне нужно сделать проверки до 3-х других игроков. Должен ли я сделать отдельную переменную для каждого игрока? Приветствия для ответа –

+0

Отредактированный пост. – CSharpie

+0

Хорошо, это замечательно. Приветствия за помощь помощник –

Смежные вопросы