#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
struct Character {
string name;
int hp;
int attack;
};
// 初始化角色
void initCharacter(Character& character, const string& name, int hp, int attack) {
character.name = name;
character.hp = hp;
character.attack = attack;
}
// 角色攻击
void attack(Character& attacker, Character& target) {
int damage = attacker.attack;
target.hp -= damage;
cout << attacker.name << "对" << target.name << "造成了" << damage << "点伤害!" << endl;
}
int main() {
srand(static_cast<unsigned>(time(nullptr)));
// 初始化玩家角色
Character player1, player2;
initCharacter(player1, "玩家1", 100, 20);
initCharacter(player2, "玩家2", 100, 20);
cout << "欢迎来到1v1格斗游戏!" << endl;
cout << "玩家1:" << player1.name << ",HP:" << player1.hp << ",攻击力:" << player1.attack << endl;
cout << "玩家2:" << player2.name << ",HP:" << player2.hp << ",攻击力:" << player2.attack << endl;
// 游戏循环
while (player1.hp > 0 && player2.hp > 0) {
// 玩家1攻击玩家2
attack(player1, player2);
if (player2.hp <= 0) { // 玩家2死亡
cout << player2.name << "被击败了!" << endl;
break;
}
// 玩家2攻击玩家1
attack(player2, player1);
if (player1.hp <= 0) { // 玩家1死亡
cout << player1.name << "被击败了!" << endl;
break;
}
cout << "当前状态:" << endl;
cout << "玩家1:" << player1.name << ",HP:" << player1.hp << endl;
cout << "玩家2:" << player2.name << ",HP:" << player2.hp << endl;
cout << endl;
}
cout << "游戏结束!" << endl;
return 0;
}
这段代码是一个1v1格斗游戏的示例,通过控制台显示玩家的属性和攻击结果。代码逻辑比较简单。
首先,我们定义了一个结构体Character
,用于表示角色的属性,包括名称(name
)、生命值(hp
)和攻击力(attack
)。
接着,我们实现了两个函数initCharacter
和attack
。initCharacter
用于初始化角色的属性,attack
用于进行攻击操作。attack
函数中,攻击者造成的伤害直接减少目标角色的生命值,并在控制台输出攻击信息。
在主函数中,我们使用initCharacter
函数初始化了两个玩家角色player1
和player2
的属性。然后,进入游戏循环,每轮循环中玩家1先攻击玩家2,然后玩家2进行反击。如果其中一方生命值降至0或以下,游戏结束。
最后,在游戏循环中,我们通过控制台输出当前的角色状态,即各自的名称、生命值和攻击力。
希望对您有所帮助!如果有任何其他问题,请随时提问。