战斗开始前,双方先对自己的武器排好使用顺序,然后再一件一件地按顺序使用。编号小的武器,排在前面。若有多支arrow,用过的排在前面。排好序后,攻击者按此排序依次对敌人一件一件地使用武器 有一个weapon[4]数组,分别是武器的数量,weapon[2]是没用过的arrow,weapon[3]是用过的arrow 如何实现函数c++
时间: 2024-02-18 09:00:16 浏览: 56
你可以使用以下的 C++ 代码实现该功能:
```c++
#include <iostream>
#include <utility>
#include <algorithm>
using namespace std;
void use_weapons(int weapons[4]) {
pair<int, int> weapon_indices[4] = {{weapons[0], 0}, {weapons[1], 1}, {weapons[2], 2}, {weapons[3], 3}};
sort(weapon_indices, weapon_indices+4);
for (auto& weapon_index : weapon_indices) {
int weapon = weapons[weapon_index.second];
if (weapon > 0) {
if (weapon_index.second == 2) {
weapons[weapon_index.second] -= 1;
cout << "使用了一支没用过的arrow" << endl;
} else if (weapon_index.second == 3) {
weapons[weapon_index.second] -= 1;
cout << "使用了一支用过的arrow" << endl;
} else {
weapons[weapon_index.second] -= 1;
cout << "使用了一件武器" << endl;
}
}
}
}
int main() {
int weapons[4] = {3, 2, 1, 4};
use_weapons(weapons);
return 0;
}
```
这个函数使用了 C++ STL 库中的 `pair` 和 `sort` 函数来对武器进行排序。使用 `pair` 来表示武器及其编号,然后使用 `sort` 函数按照武器编号从小到大排序,若武器编号相同,则按照是否为用过的arrow来排序。最后,使用一个循环依次使用武器并打印输出使用的信息。
阅读全文