我正在使用uppaal作为类,我想使用select语句在range中创建整数数组。
对于背景,我正在建模一个修改过的nim游戏,有3个玩家和3个堆,玩家可以从一个堆中挑选最多3个匹配,或从所有堆中选择相同数量的匹配(假设所有人都有足够的比赛。)
到目前为止,我显然已经工作(根据验证者的一些基本查询)与3名玩家的nim游戏,从单个堆中获取匹配,但我需要扩展玩家以便能够从所有堆中获取并且我我不想硬编码像heap1Taken,heap1TakenAmount,heap2Taken,heap2TakenAmount等变量: - )
答案 0 :(得分: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
数组更新堆。这允许玩家按照完整的规则进行游戏。