2012-01-12 114 views
1

我有一个任务,我的架构类在MIPS汇编中实现31步步高游戏,迄今为止我做了很多,我一直在使用2个阵列来显示板,我使用0表示空字段和其他数字(例如13)以显示当前放置在该字段中的检查器的数量,有白色检查器(用正数表示),红色检查器用1-15的负数表示。但是当我问我的教授时,他告诉我他想要在每一步之后更新棋盘,它应该看起来像这样:(注意在比赛开始时,所有的棋子都放在棋子的末尾板,其起始字段)MIPS装配西洋双陆棋棋盘游戏故障..


       W1 
          W2 
          W3 
          W4 
          W5 
          W6 
          | 
          W15 

          R15 
          R14 
          R13 
          R12 
          R11 
          R10 
          | 
          R1 

和上面的板是应该掷骰子后进行更新, 这意味着Im去不得不使用某种形式的数组来表示和移动的那些 数字和字母。但我真的发现它在单个数组中实现动态整数和字符时很混乱。有什么建议么? 感谢论坛。

回答

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('|');  
}