MIPS组装步步高棋盘游戏麻烦..

时间:2012-01-12 13:49:31

标签: assembly mips

我的架构类的任务是在MIPS程序集中实现31步步高游戏,到目前为止我做了很多,我一直使用2个数组来显示板,我使用0表示空字段和其他数字例如13显示当前放置在该字段中的检查器数量,有白色检查器(使用正数表示),红色检查器使用1-15的负数表示。 但是当我问我的教授时,他告诉我他希望每次移动后都要更新电路板,它应该是这样的:(请注意,在游戏开始时,所有的检查器都放在电路板的末端这是起始领域)


                             W1
                             W2
                             W3
                             W4
                             W5
                             W6
                             |
                            W15

                            R15
                            R14
                            R13
                            R12
                            R11
                            R10
                             |
                            R1

上面的棋盘应该在骰子滚动后更新, 这意味着我将不得不使用某种数组来表示和移动它们 数字和字母。但我真的发现在单个数组中实现动态整数和字符会让人感到困惑。有什么建议? 谢谢论坛。

1 个答案:

答案 0 :(得分:0)

你是对的,存储两个字符(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( '|' );    
}