2012-01-12 79 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('|');  
}