0

我正在使用 uppaal 作为一个类,我想使用 select 语句创建范围内的整数数组。

作为背景,我正在模拟一个修改过的 nim 游戏,有 3 个玩家和 3 个堆,其中一个玩家可以从单个堆中选择最多 3 个匹配项,或者从所有堆中选择相同数量的匹配项(假设有足够的所有这些都留下了匹配项。)

到目前为止,我显然已经在与 3 名玩家一起工作(根据验证者的一些基本查询)nim 游戏,从单个堆中获取匹配,但我需要扩展玩家以能够从所有堆中获取,我不希望硬编码变量,如 heap1Taken、heap1TakenAmount、heap2Taken、heap2TakenAmount 等 :-)

4

1 回答 1

0

我最终创建了一个数组int[0, MAX] beru[3];和两个函数,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_play到的转换playing,其中一种选择堆索引和数量,然后调用set_beru,另一种选择数量并调用beru_init。当然,他们都有确保此举合法的警卫。

当玩家处于playing状态时,他在通道上发出信号,游戏板使用beru数组更新堆。这允许玩家根据全套规则进行游戏。

于 2016-07-21T15:31:36.753 回答