1

Mips/Mars アーキテクチャでこれを実装する方法を見つけようとして、私は多くの問題を抱えています。

戦艦ゲームを作成し、100 int を保持できる配列としてボードを保存しています。

プレイヤーの配列をループして、ボードをユーザーに表示するために、各「セル」に格納されている情報をグラフィック データに変換する必要があります。

私の問題は、ユーザーに表示される文字が、配列の各セルの値に基づいているという事実に起因しています。

値が 0 (空) の場合 - '[ ]' を出力し、1 (推測して空) の場合 - '[O]' を出力し、2 (推測してヒット) の場合 - '[X]' を出力します。

そのため、配列内の各セルをループ処理するときに、値を確認して適切な印刷関数に分岐する必要があります。

私の問題は、print ステートメントに分岐した場合、分岐ステートメントがあった場所に戻るにはどうすればよいかということです。

擬似コード:

Looping through array, 'ArrayCell' = value at current array location
branch if equal ArrayCell, 0, print empty
branch if equal ArrayCell, 1, print miss
branch if equal ArrayCell, 2, print hit
increment array

print empty:
print then jump back to loop
print miss:
print then jump back to loop
print hit:
print then jump back to loop

配列内の現在の位置を保持するために、印刷後に分岐ステートメントに戻るにはどうすればよいでしょうか?

どうもありがとう!

4

2 に答える 2

2

increment array演算子の上とprint empty、 、print miss、およびprint hitの最後にjラベルを付けます。

例:

   Looping through array, 'ArrayCell' = value at current array location
    branch if equal ArrayCell, 0, print empty
    branch if equal ArrayCell, 1, print miss
    branch if equal ArrayCell, 2, print hit

   LBL_Increment:
    increment array

   loop


    print empty:
    print
    j LBL_Increment
    print miss:
    print
    j LBL_Increment
    print hit:
    print
    j LBL_Increment
于 2011-12-05T02:46:07.943 に答える
2

これには本当に関数呼び出しを使用する必要があります。

   Looping through array, 'ArrayCell' = value at current array location
    if equal ArrayCell, 0, JAL empty
    if equal ArrayCell, 1, JAL miss
    if equal ArrayCell, 2, JAL hit

   LBL_Increment:
    increment array

   loop


   empty:
    print " "
    JR $RA    // return to the instruction after the "JAL empty" instruction.
   miss:
    print "miss"
    JR $RA
   hit:
    print "hit"
    JR $RA
于 2011-12-06T20:24:58.030 に答える