武士与魔王游戏v1.0
描述:
武士与魔王游戏
武士:
血量:5000
攻击力:50-200
敏捷:20%(有20%的几率魔王攻击无效)
暴击率:10%(有10%的几率攻击翻倍)
防御:50(对方攻击时血量少扣50点)
技能:
天外飞仙:本次攻击力+100
踏雪无痕:本次敏捷+30%
金钟罩:本次防御+100
吸血鬼:本次攻击的50%血量加给武士
魔王:
血量:8000
攻击力:100-150
防御:30
技能:
狮子吼:破防御40
大力王:攻击增加50
玩游戏的流程:
每一次都有的一个流程
前奏:武士的状态复原
1、武士选择技能,根据技能选择状态的改变
2、攻击魔王
3、判断一下,魔王血量小于等于0,退出游戏
前奏:魔王状态复原
4、魔王自动选择技能,根据技能改变状态
5、攻击武士
6、判断一下,如果武士血量小于等于0,退出游戏
题目分析:
利用struct定义武士和魔王,每次战斗后显示当前角色的信息。
代码如下:
#include<iostream>
#include<time.h>
using namespace std;
struct soldier
{
int blood;
int attack;
int fast;
int twice;
int defend;
};
struct devil
{
int blood;
int attack;
int defend;
};
void attack1(soldier &,devil &,int&);//武士攻击魔王
void attack2(devil &,soldier &);//魔王攻击武士
void show(soldier &,devil &);//显示游戏的信息
int main()
{
srand((unsigned int)time(NULL));
soldier cr;
cr.blood=5000;
devil king;
king.blood=8000;//血量初始值
while (1)
{
cr.attack=50;
cr.fast=2;
cr.twice=1;
cr.defend=50;
king.attack=100;
king.defend=30;
//第一阶段
cr.attack+=rand()%150+1;//攻击力初始化
if(rand()%10<1) cr.attack*=2;//暴击率叠加
cout<<"Please select your skill:"<<endl;
cout<<"1.天外飞仙:"<<endl;
cout<<"2.踏雪无痕:"<<endl;
cout<<"3.金钟罩:"<<endl;
cout<<"4.吸血鬼:"<<endl;
int select1;
cin>>select1;
switch (select1)
{
case 1:cr.attack+=100;cout<<"你选择了天外飞仙!"<<endl;break;
case 2:cr.fast+=3;cout<<"你选择了踏雪无痕!"<<endl;;break;
case 3:cr.defend+=100;cout<<"你选择了金钟罩!"<<endl;;break;
case 4:cout<<"你选择了吸血鬼!"<<endl;break;
default:
break;
}
attack1(cr,king,select1);
show(cr,king);
if(king.blood<0)
{
cout<<"soldiers win!"<<endl;
return 0;
}
//第二阶段
king.attack+=rand()%50+1;//攻击力初始化
cout<<"It's devil's turn!"<<endl;
int select2=rand()%2+1;
cout<<"devil select:"<<endl;
switch (select2)
{
case 1:cr.defend-=40;cout<<"1.狮吼功"<<endl;break;
case 2:king.attack+=50;cout<<"2.大力王"<<endl;break;
default:
break;
}
attack2(king,cr);
show(cr,king);
if(cr.blood<0)
{
cout<<"soldiers lose!"<<endl;
return 0;
}
}
return 0;
}
void attack1(soldier &a,devil &b,int &c)
{
b.blood-=(a.attack-b.defend);
if(c==4)a.blood+=(a.attack-b.defend)*0.5;
}
void attack2(devil &a,soldier &b)
{
if (rand()%10+1<=b.fast)
{
cout<<"魔王攻击无效!"<<endl;
return ;
}
b.blood-=(a.attack-b.defend);
}
void show(soldier &a,devil &b)
{
cout<<"士兵的血量是:"<<a.blood<<endl;
cout<<"士兵的攻击力是:"<<a.attack<<endl;
cout<<"士兵的敏捷是:"<<a.fast*10<<'%'<<endl;
cout<<"士兵的暴击率是:"<<a.twice*10<<'%'<<endl;
cout<<"士兵的防御是:"<<a.defend<<endl;
cout<<"魔王的血量是:"<<b.blood<<endl;
cout<<"魔王的攻击力是:"<<b.attack<<endl;
cout<<"魔王的防御是:"<<b.defend<<endl;
}
总结
v1.0版本利用结构体和函数对游戏进行实现。