Сборка MIPS нарды настольная игра Trouble .. - PullRequest
1 голос
/ 12 января 2012

У меня есть задание для моего архитектурного класса, которое реализует игру в 31 нарды в сборке MIPS, я уже проделал большую работу, и я использовал 2 массива для отображения доски, я использовал 0 для обозначения пустых полей и другиецифры, например, 13, для отображения количества шашек, размещенных в данный момент в этом поле, имеются белые шашки (представленные с использованием положительных чисел), а красные шашки представлены отрицательными числами от 1 до 15.Но когда я спросил своего профессора, он сказал мне, что он хочет, чтобы доска обновлялась после каждого хода, и она должна выглядеть примерно так: (обратите внимание, что в начале игры все шашки располагаются в конце доскикоторый является начальным полем)


                             W1
                             W2
                             W3
                             W4
                             W5
                             W6
                             |
                            W15

                            R15
                            R14
                            R13
                            R12
                            R11
                            R10
                             |
                            R1

И вышеупомянутая доска должна обновляться после броска костей, что означает, что я собираюсь использовать какой-то массив для представления и перемещенияэти цифры и буквы.Но я действительно считаю, что вводить динамические целые и символы в одном массиве непонятно.Какие-либо предложения?Спасибо форуму.

1 Ответ

0 голосов
/ 13 января 2012

Вы правы, хранение обоих символов (R или W) и целочисленного значения в одном массиве будет очень трудным. Технически, вы уже храните полное представление всех стеков шашек в вашем массиве. Если вы думаете о знаковом бите в вашем целом числе как о цвете шашек, вы уже решили проблему. Вот пример:

-5 = R5
12 = W12
1  = W1
-9 = R9

Итак, вы видите, что уже храните цвет, но вместо символа вы используете бит знака. Теперь все, что вам нужно сделать, это определить, является ли число подписанным или нет, и отобразить соответствующий символ перед абсолютным значением числа.

for( i = 0 ; i < myArray.length ; i++ )
{
  if( myArray[i] != 0 )
  {
        if( myArray[i] > 0 ) print( 'W' );
    elseif( myArray[i] < 0 ) print( 'R' );

    print( abs( myArray[i] ) );
  }
  else print( '|' );    
}
...