void w_snatch_weapon(csoldier *p, csoldier *q) { //bool flag = true; int t = 0, s = 0; while (q->weapon[t] == 0)++t; if (10 - p->weapen_amount <= q->weapon[t]) { p->weapon[t] += 10 - p->weapen_amount; s += 10 - p->weapen_amount; p->weapen_amount = 10; q->weapen_amount -= s; q->weapon[t] -= s; return; } else { p->weapon[t] += q->weapon[t]; s += q->weapon[t]; p->weapen_amount += q->weapon[t]; q->weapon[t] -= s; q->weapen_amount -= s; if (t == 2 && q->weapon[3] > 0) { t = 3; if (10 - p->weapen_amount <= q->weapon[t]) { p->weapon[t] += 10 - p->weapen_amount; s += 10 - p->weapen_amount; p->weapon[t] -= 10 - p->weapen_amount; p->weapen_amount -= 10 - p->weapen_amount; p->weapen_amount = 10; } else { p->weapon[t] += q->weapon[t]; s += q->weapon[t]; q->weapen_amount -= q->weapon[t]; p->weapen_amount += q->weapon[t]; q->weapon[t] = 0; } } cout << s << ' '; out_weapen(t); return; } }
时间: 2023-06-15 18:08:18 浏览: 106
Python库 | vigilant_crypto_snatch-2.1.0-py3-none-any.whl
这段代码实现了一个抢夺武器的函数,函数名为 w_snatch_weapon,参数是两个指向 csoldier 类型对象的指针 p 和 q。
函数中的主要逻辑是这样的:首先找到 q 手中第一个有武器的位置,然后判断 p 手中是否还有可用的武器位置。如果没有,直接返回。如果有,就把 q 手中的武器抢过来,分两种情况:
1.抢过来的武器数量等于 p 剩余可用武器数量。这种情况下,把 q 手中的对应武器数量减去抢过来的数量,并将所有抢过来的武器放到 p 手中。
2.抢过来的武器数量小于 p 剩余可用武器数量。这种情况下,把 q 手中的对应武器全部抢过来,并将 p 剩余的可用武器数量增加相应的数量。如果抢过来的武器是第三个位置上的武器,并且 q 手中还有第四个位置上的武器,则抢夺第四个位置上的武器,直到 p 手中没有可用武器位置或者 q 手中没有武器为止。
函数中的 out_weapen 函数不在这个代码块中,我无法确定它的实现。
阅读全文