0

クラスに uppaal を使用していますが、select ステートメントを使用して範囲内の整数の配列を作成したいと考えています。

背景として、私は 3 人のプレイヤーと 3 つのヒープを持つ修正された nim のゲームをモデル化しています。プレイヤーは 1 つのヒープから最大 3 つのマッチを選択するか、すべてのヒープから同じ数のマッチを選択できます (十分な数があると仮定します)。それらのすべてにマッチが残っています。)

これまでのところ、(ベリファイアのいくつかの基本的なクエリによると)単一のヒープから試合を取り、3人のプレイヤーとのnimゲームを実行しているようですが、すべてのヒープから取得できるようにプレイヤーを拡張する必要があり、そうしないことをお勧めしますheap1Taken、heap1TakenAmount、heap2Taken、heap2TakenAmount などの変数をハードコーディングする:-)

4

1 に答える 1

0

配列int[0, MAX] beru[3];と 2 つの関数を作成することにset_beruなりberu_initました。

void set_beru(int[0, MAX]& beru[3], int[0, 2] index, int[1, MAX] value){
    for (i : int[0, 2]){
        if (i == index){
            beru[i] = value;
        } else {
            beru[i] = 0;
        }
    }
}

void beru_init(int[0, MAX]& beru[3], int[1, MAX] init_value){
    for (i : int[0, 2]){
        beru[i] = init_value;
    }
}

ゲームのプレイヤーは、 からready_to_playplayingの 2 つの遷移が可能です。1 つはヒープ インデックスと量を選択してから を呼び出しset_beru、もう 1 つは量を選択して を呼び出しberu_initます。両方とももちろん、動きが合法であることを確認する警備員を持っています。

プレーヤーがそのplaying状態にある場合、プレーヤーはチャネルでシグナルを送信し、ゲーム ボードはberu配列を使用してヒープを更新します。これにより、プレイヤーは完全なルールセットに従ってプレイできます。

于 2016-07-21T15:31:36.753 に答える