设计思路:
用简单的结构体来封装角色的 名称 和 血量 ,初始两角色血量均为100。
将随机产生的1~10数字作为角色该回合的 攻击值 ,并逐回合 减扣血量 。
记录回合数,并返回对局结果。
全部代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define N 15
typedef struct man{
char name[N];
int blood;
}MAN;
int main()
{
MAN man1,man2;
man1.blood=100;
man2.blood=100;
srand(time(0));
int n=1;
int gongji;
printf("角色1的姓名:");
scanf("%s",&man1.name);
printf("角色2的姓名:");
scanf("%s",&man2.name);
do{
gongji=1+rand()%10;
printf("————————————————\n");
printf("第%d回合 ",n);
if(n%2==0){
man1.blood-=gongji;
printf("%s攻击\n",man1.name);
}
else{
man2.blood-=gongji;
printf("%s攻击\n",man2.name);
}
if(man1.blood<=0){
man1.blood=0;
}
else if(man2.blood<=0){
man2.blood=0;
}
printf("\n%s的剩余血量为%d\n%s的剩余血量为%d\n\n",man1.name,man1.blood,man2.name,man2.blood);
n++;
Sleep(1000);
}while((man1.blood>0)&&(man2.blood>0));
printf("\n经历%d回合的战斗\n",n-1);
if(man1.blood<=0){
printf("%s获胜!\n",man2.name);
}
else if(man2.blood<=0){
printf("%s获胜!\n",man1.name);
}
return 0;
}