C语言实现随机战斗,c语言 自动战斗小程序

c语言 自动战斗小程序

#include

#include

#include

#include

int main()

{char name1[10],name2[10]; //名字

int a1,b1,c1,a2,b2,c2; //角色12的攻击防御回复数值

int xue1,xue2,c,jia1=0,jia2=0; //血量,护甲

xue1=100;//玩家的基础血量

xue2=100;

printf("请输入角色1的名字,按回车确认\n");

gets(name1);//获得玩家的名字

t1:printf("好,请输入您的攻击力,防御力,恢复力 格式为 数字空格数字空格数字,如6 2 2,注意三个数值相加必须为10\n");

scanf("%d %d %d",&a1,&b1,&c1);//获得玩家的能力值

if(a1+b1+c1!=10)//判断能力值输入是否符合规则

{printf("错误,请重新输入\n");

goto t1;

}

printf("请输入角色2的名字,按回车确认\n");

while((c=getchar())!=EOF&&c!='\n');

gets(name2);

t2:printf("好,请输入您的攻击力,防御力,恢复力 格式为 数字空格数字空格数字,如6 2 2,注意三个数值相加必须为10\n");

scanf("%d %d %d",&a2,&b2,&c2);

if(a2+b2+c2!=10)

{printf("错误,请重新输入\n");

goto t2;

}

srand(time(0));//随机先手

c=rand()%2+1;

printf("现在基本属性如下\n");//显示基本信息

puts(name1);

printf("攻击=%d 防御=%d 回复=%d\n",a1,b1,c1);

puts(name2);

printf("攻击=%d 防御=%d 回复=%d\n",a2,b2,c2);

k:puts(name1);

printf("HP %d/100 ",xue1);

if(jia1==0)

printf("无护甲\n");//判断有无护甲

else

printf("有护甲\n");

puts(name2);

printf("HP %d/100 ",xue2);

if(jia2==0)

printf("无护甲\n");

else

printf("有护甲\n");

if(c==1)//角色行动方转换

c=2;

else

c=1;

Sleep(1000);

printf("行动阶段\n");

if(c==1)//判断行动方

{

int p;

srand(time(0));//根据玩家输入的能力值随机行动方式

p=rand()%10+1;

if(p>=1&&p<=a1)

goto ta1;// 攻击

if(p>a1&&p<=a1+b1)

goto tb1;//防御

if(p>a1+b1&&p<=10)

goto tc1;//加血

Sleep(1000);

}

if(c==2)

{

int p;

srand(time(0));

p=rand()%10+1;

if(p>=1&&p<=a2)

goto ta2;

if(p>a2&&p<=a2+b2)

goto tb2;

if(p>a2+b2&&p<=10)

goto tc2;

Sleep(1000);

}

ta1:

if(jia2==0)//判断有无护甲

{

srand(time(0));

xue2-=rand()%15+10;//随机造成伤害

puts(name1);

printf("攻击了\n");

puts(name2);

printf("造成 %d 的伤害\n",rand()%15+10);

if(xue1<0||xue2<0) goto f;//判断是否死亡

Sleep(1000);

system("cls");

goto k; //回到显示信息阶段,循环行动

}

else//如果有护甲

{

srand(time(0));

if(rand()%10+1>=1&&rand()%10+1<4)//判断概率

{

puts(name1);

printf("攻击了\n");

puts(name2);

puts(name2);

printf("完全抵挡了攻击\n");//40%概率抵挡伤害

jia2=0;//护甲消失

Sleep(1000);

system("cls");

goto k;

}

else

{

xue2-=(rand()%15);

puts(name1);

printf("攻击了\n"); //60%概率抵挡部分伤害

puts(name2);

puts(name2);

printf("格挡了部分攻击,但仍受到 %d 的伤害\n",(rand()%15));

jia2=0;

if(xue1<0||xue2<0) goto f;//判断死亡

Sleep(1000);

system("cls");

goto k;

}

}

ta2:

if(jia1==0)//相同,角色2的攻击阶段

{

srand(time(0));

xue1-=rand()%15+10;

puts(name2);

printf("攻击了\n");

puts(name1);

printf("造成 %d 的伤害\n",rand()%15+10);

if(xue1<0||xue2<0) goto f;

Sleep(1000);system("cls");

goto k;

}

else

{

srand(time(0));

if((rand()%10+1)>=1&&(rand()%10+1)<4)

{

puts(name2);

printf("攻击了\n");

puts(name1);

puts(name1);

printf("完全抵挡了攻击\n");

jia1=0;

Sleep(1000);system("cls");

goto k;

}

else

{

xue1-=(rand()%15);

puts(name2);

printf("攻击了\n");

puts(name1);

puts(name1);

printf("格挡了部分攻击,但仍受到 %d 的伤害\n",(rand()%15));

jia1=0;

if(xue1<0||xue2<0) goto f;

Sleep(1000);system("cls");

goto k;

}

}

tb1://防御

{

jia1=1;//有护甲

puts(name1);

printf("获得了护甲\n");

Sleep(1000);

system("cls");

goto k;

}

tb2:

{

jia2=1;

puts(name2);

printf("获得了护甲\n");

Sleep(1000);system("cls");

goto k;

}

tc1://角色2的护甲阶段

{

xue1+=10;

puts(name1);

printf("使用了回复药,回复18点生命。\n");

Sleep(1000);

system("cls");

goto k;

}

tc2:

{

xue2+=10;

puts(name2);

printf("使用了回复药,回复18点生命。\n");

Sleep(1000);system("cls");

goto k;

}

f:printf("结束战斗\n");//结束战斗阶段

if(xue1<0)//角色1死亡

{

puts(name1);

printf("落败\n");

system("pause");

}

if(xue2<0)//角色2死亡

{

puts(name2);

printf("落败\n");

system("pause");

}

}

就看着能简化下不

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值