C语言小游戏:英雄打恶龙救公主
题目:编写一个小游戏,组团打boss,创建两位英雄hero1,hero2,英雄包含生命值HP与攻击力,创建一个boss,同样包含生命值与攻击力。属性范围自定义。
进行回合制PK,打印出PK过程。使用(sleep)
英雄方人员全部倒下,打印:游戏失败,是否继续。
boss倒下,打印:恭喜你勇士,成功打败恶龙,你将获得公主的爱慕。
/*******************************
题目:编写一个小游戏,组团打boss,创建两位英雄hero1,hero2,英雄包含生命值HP与攻击力,创建一个boss,同样包含生命值与攻击力。属性范围自定义。
进行回合制PK,打印出PK过程。使用(sleep)
英雄方人员全部倒下,打印:游戏失败,是否继续。
boss倒下,打印:恭喜你勇士,成功打败恶龙,你将获得公主的爱慕。
*******************************/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
struct Quality //属性
{
int health; //生命值
int attack; //攻击力
};
void game(void)
{
while(1)
{
//初始化结构体并赋值
struct Quality hero1; //英雄1
struct Quality hero2; //英雄2
struct Quality boss; //恶龙
printf("请输入英雄1的属性(生命值,攻击力):");
scanf("%d,%d", &hero1.health, &hero1.attack);
printf("请输入英雄2的属性(生命值,攻击力):");
scanf("%d,%d", &hero2.health, &hero2.attack);
printf("请输入恶龙的属性(生命值,攻击力):");
scanf("%d,%d", &boss.health, &boss.attack);
int i = 1;
while(1)
{
printf("\n第%d回合:\n", i);
/*******************英雄发动攻击*******************/
if(boss.health > 0 && hero1.health>0 && hero2.health>0) //两名英雄与恶龙都存活,两英雄同时攻击恶龙
{
boss.health -= (hero1.attack+hero2.attack);
if(boss.health<0)
boss.health=0;
printf("英雄1与英雄2攻击恶龙,恶龙共遭到%d点伤"
"害剩余%d生命值\n", hero1.attack+hero2.attack, boss.health);
if(boss.health == 0)
printf("恶龙阵亡\n");
}
else if(boss.health>0 && hero1.health>0 && hero2.health==0) //英雄1与恶龙存活,英雄1攻击恶龙
{
boss.health -= hero1.attack;
if(boss.health<0)
boss.health=0;
printf("英雄1攻击恶龙,恶龙遭到%d点伤害剩余%d生命值\n", hero1.attack, boss.health);
if(boss.health == 0)
printf("恶龙阵亡\n");
}
else if(boss.health>0 && hero1.health==0 && hero2.health>0)//英雄2与恶龙存活,英雄2攻击恶龙
{
boss.health -= hero2.attack;
if(boss.health<0)
boss.health=0;
printf("英雄2攻击恶龙,恶龙遭到%d点伤害剩余%d生命值\n", hero2.attack, boss.health);
if(boss.health == 0)
printf("恶龙阵亡\n");
}
sleep(3);
/*******************恶龙发动攻击****************/
int flag = 0; //定义标志位flag
srand(time(0));
flag = rand()%2; //flag生成0-1的随机数
if(boss.health>0 && hero1.health>0 && hero2.health>0) //BOSS与两个英雄都活着,BOSS随机攻击任一英雄
{
if(flag == 0) //flag标志为0时攻击英雄1
{
hero1.health -= boss.attack;
if(hero1.health<0)
hero1.health=0;
printf("恶龙攻击英雄1,英雄1遭到%d点伤害剩"
"余%d生命值\n", boss.attack, hero1.health);
if(hero1.health == 0)
printf("英雄1阵亡\n");
}
else if(flag == 1) //flag标志位1时攻击英雄2
{
hero2.health -= boss.attack;
if(hero2.health<0)
hero2.health=0;
printf("恶龙攻击英雄2,英雄2遭到%d点"
"伤害剩余%d生命值\n", boss.attack, hero2.health);
if(hero2.health == 0)
printf("英雄2阵亡\n");
}
}
else if(boss.health>0 && hero1.health==0 && hero2.health>0) //BOSS和英雄2活着,英雄1已阵亡
{
hero2.health -= boss.attack;
if(hero2.health<0)
hero2.health=0;
printf("恶龙攻击英雄2,英雄2遭到%d点伤"
"害剩余%d生命值\n", boss.attack, hero2.health);
if(hero2.health == 0)
printf("英雄2阵亡\n");
}
else if(boss.health>0 && hero1.health>0 && hero2.health==0) //BOSS和英雄1活着,英雄2已阵亡
{
hero1.health -= boss.attack;
if(hero1.health<0)
hero1.health=0;
printf("恶龙攻击英雄1,英雄1遭到%d点伤"
"害剩余%d生命值\n", boss.attack, hero1.health);
if(hero1.health == 0)
printf("英雄1阵亡\n");
}
sleep(1);
/********************结局判断********************/
if((hero1.health>0||hero2.health>0) && boss.health==0) //至少一名英雄存活,恶龙阵亡
{
printf("\n恭喜你勇士,成功打败恶龙,你将获得公主的爱慕。\n");
return ;
}
else if(hero1.health==0 && hero2.health==0 && boss.health>0) //恶龙存活,两名英雄阵亡
{
printf("\n游戏失败,是否继续。\n");
char str[4] = {0};
scanf("%s", str);
if(strcmp(str, "否") == 0)
return ;
if(strcmp(str, "是") == 0)
break;
}
sleep(3); //打印时间间隔
i++;
}
}
return ;
}
int main(void)
{
game();
return 0;
}
结果演示:
英雄击败恶龙效果:
恶龙击败英雄效果: