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-18 09:01:53 浏览: 75
这是一个 C++ 函数,实现了一个角色抢夺另一个角色的武器的逻辑。函数的参数是两个 csoldier 类型的指针,表示抢夺者和被抢夺者。函数中的变量 t 表示被抢夺者当前所持有的第一个武器,s 表示抢夺者所抢夺的武器数量。
函数实现的逻辑是,首先找到被抢夺者所持有的第一个武器,然后判断抢夺者是否可以将该武器全部抢夺到自己的身上。如果可以,则将该武器全部抢夺到自己的身上,并更新抢夺者和被抢夺者的武器数量及所持有的武器类型;如果不可以,则将能够抢夺的武器数量全部抢夺到自己的身上,并更新抢夺者和被抢夺者的武器数量及所持有的武器类型,并在需要的情况下继续抢夺被抢夺者所持有的第二个武器。
函数中的 out_weapen(t) 函数用来输出武器类型,但是这个函数的实现没有在代码中给出。
阅读全文