如何在UPPAAL中选择整数数组?

时间:2015-11-25 19:24:55

标签: arrays uppaal

我正在使用uppaal作为类,我想使用select语句在range中创建整数数组。

对于背景,我正在建模一个修改过的nim游戏,有3个玩家和3个堆,玩家可以从一个堆中挑选最多3个匹配,或从所有堆中选择相同数量的匹配(假设所有人都有足够的比赛。)

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

1 个答案:

答案 0 :(得分:0)

我最终创建了一个数组int[0, MAX] beru[3];和两个函数set_beruberu_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,其中一个选择堆索引和一个数量,然后调用set_beru,另一个选择一个金额并致电beru_init。他们都有守卫,以确保此举是合法的。

当玩家处于playing状态时,他会在频道上发出信号并且游戏板会使用beru数组更新堆。这允许玩家按照完整的规则进行游戏。