武士与魔王游戏v1.0

武士与魔王游戏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版本利用结构体和函数对游戏进行实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新西兰做的饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值