2012-01-12 4 views
1

MIPS 어셈블리에서 31 주사위 놀이 게임을 구현하는 아키텍처 클래스에 대한 할당이 있습니다. 지금까지 많이 했었고 보드를 표시하기 위해 2 개의 배열을 사용했습니다. 0을 사용하여 빈 필드와 기타 숫자 (예 : 해당 필드에 현재 배치 된 체커의 수를 표시하는 숫자 13), 흰색 체커 (포스터 번호로 표시) 및 빨간색 체커는 1-15의 음수를 사용하여 나타냅니다. 하지만 교수님 께 물어 보니 매 이사마다 이사회가 업데이트되기를 원한다고 말하면서 다음과 같이 보일 것입니다. (게임 시작시 모든 체커가 팀의 끝에 배치됩니다. 시작 필드가 보드)MIPS 어셈블리 주사위 놀이 보드 게임 문제 ...


       W1 
          W2 
          W3 
          W4 
          W5 
          W6 
          | 
          W15 

          R15 
          R14 
          R13 
          R12 
          R11 
          R10 
          | 
          R1 

그리고 위의 보드, 주사위 롤 후 업데이트 될 임 대표하는 배열과 움직임의 어떤 종류를 사용해야 할 것 의미 을 생각한다 그 숫자는 입니다. 하지만 정말 동적 인 int 및 문자를 단일 배열에 구현하는 혼란 찾는. 어떤 제안? 감사 포럼.

답변

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