用C++编写一个模拟战争的游戏
时间: 2024-06-09 10:09:57 浏览: 112
好的,我可以为您提供一个简单的模拟战争的游戏代码,代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_ARMY_SIZE 100
typedef struct {
char name[20];
int health;
int attack;
int defense;
} soldier;
typedef struct {
char name[20];
int size;
soldier army[MAX_ARMY_SIZE];
} army;
void initialize_soldier(soldier *s, char *name, int health, int attack, int defense) {
strcpy(s->name, name);
s->health = health;
s->attack = attack;
s->defense = defense;
}
void initialize_army(army *a, char *name, int size) {
strcpy(a->name, name);
a->size = size;
srand(time(NULL));
for (int i = 0; i < a->size; i++) {
int health = rand() % 100 + 50;
int attack = rand() % 10 + 1;
int defense = rand() % 10 + 1;
initialize_soldier(&a->army[i], "Soldier", health, attack, defense);
}
}
int attack_soldier(soldier *attacker, soldier *defender) {
int attack_damage = attacker->attack - defender->defense;
if (attack_damage < 0)
attack_damage = 0;
defender->health -= attack_damage;
return attack_damage;
}
void battle(army *a1, army *a2) {
printf("Battle between %s and %s\n", a1->name, a2->name);
while (a1->size > 0 && a2->size > 0) {
int attacker_index, defender_index;
// Randomly select attacker and defender from each army
if (rand() % 2 == 0) {
attacker_index = rand() % a1->size;
defender_index = rand() % a2->size;
} else {
attacker_index = rand() % a2->size;
defender_index = rand() % a1->size;
}
soldier *attacker = &a1->army[attacker_index];
soldier *defender = &a2->army[defender_index];
// Attack and determine damage
int damage = attack_soldier(attacker, defender);
// Check if defender is dead and remove from army
if (defender->health <= 0) {
printf("%s was killed by %s!\n", defender->name, attacker->name);
for (int i = defender_index; i < a2->size-1; i++) {
a2->army[i] = a2->army[i+1];
}
a2->size--;
} else {
printf("%s attacked %s and dealt %d damage!\n", attacker->name, defender->name, damage);
}
}
if (a1->size > 0) {
printf("%s wins!\n", a1->name);
} else {
printf("%s wins!\n", a2->name);
}
}
int main() {
army a1, a2;
initialize_army(&a1, "Army 1", 10);
initialize_army(&a2, "Army 2", 10);
battle(&a1, &a2);
return 0;
}
```
这个游戏模拟了两支军队之间的战斗。每个军队都由一定数量的士兵组成,每个士兵都有自己的生命值、攻击值和防御值。在每个回合中,两个军队中的士兵会随机选择攻击和防御,并计算攻击造成的伤害。如果防守者死亡,则他将从军队中消失。
这只是一个简单的示例,您可以根据自己的需求修改代码。