C++ 小游戏:战斗之旅

news2024/11/23 22:15:38

一、游戏名称:战斗之旅

游戏规则

  1. 角色选择:玩家可以选择不同的角色,每个角色都有不同的属性和技能。
  2. 商城:玩家可以访问商城购买不同的装备,包括武器和回复物品。
  3. 战斗:玩家可以与其他角色进行战斗。在战斗中,玩家可以选择攻击、使用物品或加点技能。
  4. 技能加点:玩家可以使用技能点提升生命、攻击力、防御力或余额。成功提升技能将增强角色能力。

游戏流程

  1. 开始游戏:玩家选择角色并进入游戏。
  2. 商城:玩家可以访问商城购买装备,提升角色能力。
  3. 战斗:玩家可以与其他角色进行战斗,通过策略和装备选择来击败对手。
  4. 技能加点:玩家可以使用技能点提升角色属性,增强角色实力。

游戏目标

玩家的目标是通过购买装备、提升角色能力和战斗来提升自己的角色,并最终击败其他角色,成为最强的战士。

二、程序编写:

1. 基础设置

1.1 清屏函数

        我这里用的是Linux系统

void Clear_screen(void){
	//system("cls")	;		//Windows系统:	
	system("clear")	;		//Linux/Unix系统:
	//system("clear")	;		//macOS系统:		
}

1.2 平衡调整区域


#define Blood_max 		100
#define skill_min		10 	//最初技能值
#define skill_ix 		20 	//技能上限 ,后面添加会有失败可能

#define	attack_init		3	//最初伤害
#define money_init		299	//最初的金币

#define Defensive_init	10 	//最初护盾
#define artillery_min	30 	//大炮伤害最小时
#define artillery_ix	60 

2. 角色配置:

2.1 人物数据显示名称

void init_ZT(void){	//显示人物所有数据
	cout<<"名  字      血量	武器名			攻击力	防御力	技能	余额	ID	"<<endl;
}

2.2 角色类


//角色
class role{
public:
	int  Blood				;	//血量 
	int  balance			;	//余额
	int  attack 			;	//攻击力
	int  Defensive 			;	//防御力
	int  skill				;	//技能	可用于+防御力,攻击力,回复血量,技能值
	int  number				;	//角色ID
	char role_name[20]		;	//角色名
	char equip_name[20]		;	//武器名
	char Defensive_name[20]	;	//防御武器名

	//自定义值
	role(int y, int a,int r ,int h, int n, int b)
	{
		balance		=	y;
		attack		=	a;
		Defensive	=	r;
		skill		=	h;
		number 		= 	n;
		Blood		= 	b;
	}
	role(void)
	{
		balance		=	0;
		attack		=	0;
		Defensive	=	0;
		skill		=	0;
		number 		= 	0;
		Blood		= 	0;
	}

	//行为
	void state(){
		cout<<role_name		<<"  ##  "<<Blood	<<"  ##  	"<<equip_name		<<"			"<<attack	<<"	"<<Defensive	<<"	"<<skill	<<"	"<<balance	<<"	"<<number	<<endl;
	}
};

2.3 初始化角色信息


// 初始化角色信息
void init_role(role* r, const char* name, int n) {
    // 设置角色名
    strcpy(r->role_name, name);
	
	//初始化武器名
    strcpy(r->equip_name, "拳  头");

    // 设置角色属性
    r->balance 		= 	money_init;
    r->attack 		=  	attack_init;
    r->Defensive 	= 	Defensive_init;
    r->skill 		= 	skill_min;
    r->number 		= 	n;
    r->Blood 		= 	Blood_max;

}

2.4 创建角色


//创建角色
role soldier	;		//小兵
role marshal	;		//元帅
role Monon		;		//魔龙
role player		;		//玩家
role player_2	;		//玩家2

2.5 显示所有角色


void role_news(void){
	cout<<"********************** 角色信息 *************************"<<endl;
	init_ZT();	//显示人物所有数据名称
	cout<<"######################################################"<<endl;
	soldier.state();
	marshal.state();
	Monon.state();
	player.state();
	player_2.state();
	/*
	cout<<soldier.role_name		<<"##"<<soldier.equip_name		<<"	"<<soldier.attack	<<"	"<<soldier.Defensive	<<"	"<<soldier.skill	<<"	"<<soldier.balance	<<"	"<<soldier.number	<<endl;
	cout<<marshal.role_name		<<"##"<<marshal.equip_name		<<"	"<<marshal.attack	<<"	"<<marshal.Defensive	<<"	"<<marshal.skill	<<"	"<<marshal.balance	<<"	"<<marshal.number	<<endl;
	cout<<Monon.role_name		<<"##"<<Monon.equip_name		<<"	"<<Monon.attack		<<"	"<<Monon.Defensive		<<"	"<<Monon.skill		<<"	"<<Monon.balance	<<"	"<<Monon.number		<<endl;
	*/
	cout<<"######################################################"<<endl;

3. 装备配置:

3.1 装备类


//装备属性
class Equipment_attributes
{	
public:
	char name[20];
	int attack 		;	//攻击力
	int Defensive 	;	//防御力
	int price		;	//价格
	int reply		;	//回血能力
	int number		;	//物品编号
	//自定义值
	Equipment_attributes(int y, int a,int r ,int h, int n)
	{
		attack		=	y;
		Defensive	=	a;
		reply		=	r;
		price		=	h;
		number		=	n;
	}
	//默认值
	Equipment_attributes(void)
	{
		attack		=	0;
		Defensive	=	0;
		reply		=	0;
		price		=	0;
		number		=	0;
	}

	void state(void){
	cout<<name		<<"	"<<attack		<<"	"<<Defensive		<<"	"<<reply		<<"	"<<price		<<"	"<<number		<<endl;

	}
};

3.2 创建装备


//攻击性武器	1-100;
Equipment_attributes fist		(attack_init  	,0,0, 	0	,1);			//装备:拳头 		编号 = 1
Equipment_attributes knife		(5  			,0,0, 	10	,2);			//装备:刀 			编号 = 2
Equipment_attributes sword		(10 			,0,0, 	30	,3);			//装备:剑 			编号 = 3
Equipment_attributes Crossbow	(15 			,0,0, 	40	,4);			//装备:弓弩 		编号 = 4
Equipment_attributes pistol		(30 			,0,0, 	300	,5);			//装备:手枪		编号 = 5
Equipment_attributes artillery	(artillery_min	,0,0,  	500	,6);			//装备:大炮		编号 = 6

//回复性武器	101-200;
Equipment_attributes bandage		(0, 0, 5,    5 , 101);			//装备:绷带 			编号 = 101
Equipment_attributes beverage		(0, 0, 10,   10, 102);			//装备:饮料 			编号 = 102
Equipment_attributes Painkillers	(0, 0, 15,   15, 103);			//装备:止痛药			编号 = 103
Equipment_attributes First_aid_kit	(0, 0, 50,   50, 104);			//装备:急救包			编号 = 104
Equipment_attributes Medical_kit	(0, 0, 100, 100, 105);			//装备:医疗箱			编号 = 105

3.3  初始化装备名称


//初始化装备名字
void init_Equipment_name(){
	strcpy(fist.name,		"拳  头");				//装备:拳头 		编号 = 1
	strcpy(knife.name,		"小  刀");				//装备:刀 			编号 = 2
	strcpy(sword.name,		"大  剑");				//装备:剑 			编号 = 3
	strcpy(Crossbow.name,	"弓  弩");		//装备:弓弩 		编号 = 4
	strcpy(pistol.name,		"手  枪");			//装备:手枪		编号 = 5
	strcpy(artillery.name,	"大  炮");		//装备:大炮		编号 = 6

	strcpy(bandage.name,		"绷  带");			//装备:绷带 			编号 = 101
	strcpy(beverage.name,		"饮  料");			//装备:饮料 			编号 = 102
	strcpy(Painkillers.name,	"止痛药");			//装备:止痛药			编号 = 103
	strcpy(First_aid_kit.name,	"急救包");			//装备:急救包			编号 = 104
	strcpy(Medical_kit.name,	"医疗箱");			//装备:医疗箱			编号 = 105
	return;
}

4. 商城显示:


void mall(void){
	cout<<"********************** 商城 *************************"<<endl;
	cout<<"商  品	攻击力	防御力	回复	价格	编号	"<<endl;
	cout<<"######################################################"<<endl;

	fist.state();
	knife.state();
	sword.state();
	Crossbow.state();
	pistol.state();
	artillery.state();
	cout<<endl;
	bandage.state();
	beverage.state();
	Painkillers.state();
	First_aid_kit.state();
	Medical_kit.state();
	/*
	cout<<fist.name		<<"	"<<fist.attack		<<"	"<<fist.Defensive		<<"	"<<fist.reply		<<"	"<<fist.price		<<"	"<<fist.number		<<endl;
	cout<<knife.name	<<"	"<<knife.attack		<<"	"<<knife.Defensive		<<"	"<<knife.reply		<<"	"<<knife.price		<<"	"<<knife.number		<<endl;
	cout<<sword.name	<<"	"<<sword.attack		<<"	"<<sword.Defensive		<<"	"<<sword.reply		<<"	"<<sword.price		<<"	"<<sword.number		<<endl;
	cout<<Crossbow.name	<<"	"<<Crossbow.attack	<<"	"<<Crossbow.Defensive	<<"	"<<Crossbow.reply	<<"	"<<Crossbow.price	<<"	"<<Crossbow.number	<<endl;
	cout<<pistol.name	<<"	"<<pistol.attack	<<"	"<<pistol.Defensive		<<"	"<<pistol.reply		<<"	"<<pistol.price		<<"	"<<pistol.number	<<endl;
	cout<<artillery.name<<"	"<<artillery.attack	<<"	"<<artillery.Defensive	<<"	"<<artillery.reply	<<"	"<<artillery.price	<<"	"<<artillery.number	<<endl;

	cout<<bandage.name			<<"	"<<bandage.attack		<<"	"<<bandage.Defensive		<<"	"	<<bandage.reply		<<"	"<<bandage.price		<<"	"<<bandage.number		<<endl;
	cout<<beverage.name			<<"	"<<beverage.attack		<<"	"<<beverage.Defensive		<<"	"<<beverage.reply		<<"	"<<beverage.price		<<"	"<<beverage.number		<<endl;
	cout<<Painkillers.name		<<"	"<<Painkillers.attack	<<"	"<<Painkillers.Defensive	<<"	"<<Painkillers.reply	<<"	"<<Painkillers.price	<<"	"<<Painkillers.number	<<endl;
	cout<<First_aid_kit.name	<<"	"<<First_aid_kit.attack	<<"	"<<First_aid_kit.Defensive	<<"	"<<First_aid_kit.reply	<<"	"<<First_aid_kit.price	<<"	"<<First_aid_kit.number	<<endl;
	cout<<Medical_kit.name		<<"	"<<Medical_kit.attack	<<"	"<<Medical_kit.Defensive	<<"	"<<Medical_kit.reply	<<"	"<<Medical_kit.price	<<"	"<<Medical_kit.number	<<endl;
	*/
	cout<<"######################################################"<<endl;
	return;
}

5. 游戏界面:

5.1 攻击处理函数

        这里面原本大炮伤害100太高,为平衡游戏体验,所以此处将大炮伤害改为随机。

//攻击处理函数
void attack_main(role* p1, role* p2){
	Clear_screen();		//清屏
	int sc = p1 -> attack;
	int order = 1;
		cout<<p1 -> role_name <<"  用  "<<p1 -> equip_name << "  向  " <<p2 -> role_name<<"   发起了进攻"<<endl<<endl;

		if(strcmp(p1 -> equip_name, artillery.name) == 0){	//如果是大炮的话
			sc = sc + rand() % artillery_ix;	//生成随机伤害
		}
		
		//先效果判定
		//先攻击护甲
		p2 -> Defensive = p2 -> Defensive - sc;
		//如果护甲破损,剩余伤害直击生命
		if(p2 -> Defensive < 0){
			cout<<p2 -> role_name <<"受到了 <<<<<  "<<p1 -> role_name<<" 攻击的 "<< (- p2 -> Defensive)<<"点伤害   "<<endl<<endl;
			p2 -> Blood		= p2 -> Blood + p2 -> Defensive;
			p2 -> Defensive = 0;
		}
		else
			cout<<p2 -> role_name <<"挡住了 |||  "<<p1 -> role_name<<" 的 "<< sc <<" 点伤害"<<endl<<endl;
		cout<<"输入任意值";
		cin>>order;
	return;
}

5.2 返回对应物品编号的所以属性


Equipment_attributes* goods(int i){
		//获取相应物品的属性
		switch(i){
			case 1:{
				return &fist;
				break;
			}
			case 2:{
				return &knife;
				break;
			}
			case 3:{
				return &sword;
				break;
			}
			case 4:{
				return &Crossbow;
				break;
			}
			case 5:{
				return &pistol;
				break;
			}
			case 6:{
				return &artillery;
				break;
			}
			case 101:{
				return &bandage;
				break;
			}
			case 102:{
				return &beverage;
				break;
			}
			case 103:{
				return &Painkillers;
				break;
			}
			case 104:{
				return &First_aid_kit;
				break;
			}
			case 105:{
				return &Medical_kit;
				break;
			}
			//未购买装备
			default: return &fist;
		}
}

5.3 查看是否有此购物编号


//用于查看是否有此购物编号
int goods_number(int i){
		//获取相应物品的属性
		switch(i){
			case 1:{
				return fist.number;
				break;
			}
			case 2:{
				return knife.number;
				break;
			}
			case 3:{
				return sword.number;
				break;
			}
			case 4:{
				return Crossbow.number;
				break;
			}
			case 5:{
				return pistol.number;
				break;
			}
			case 6:{
				return artillery.number;
				break;
			}
			case 101:{
				return bandage.number;
				break;
			}
			case 102:{
				return beverage.number;
				break;
			}
			case 103:{
				return Painkillers.number;
				break;
			}
			case 104:{
				return First_aid_kit.number;
				break;
			}
			case 105:{
				return Medical_kit.number;
				break;
			}
			//未购买装备
			default: return -1;
		}
}

5.4 购买并使用商品


//购买并使用商品
int shop(role* p){
	int en = -1;
	int order = 1;
	while(order != 0){
		int GD = 1;
		while(GD){
			Clear_screen();	//清屏
			mall();	//显示所有装备

			init_ZT();	//显示人物所有数据名称
			p -> state();	//显示所有数据
			cout<<"输入物品编(0退出):";
			cin>>order;
			if(order == 0){
				GD = 0;
				en = -1;	//直接退出,购买失败
				break;
			}

			if(goods_number(order) == -1) {
				Clear_screen();
				cout<<"输入编号无效:	任意键继续:";
				cin>>order;
				GD = 1;	//退出输入
			}
			else GD = 0;	//输入值有效
		}

		if(GD == 0){	//输入值有效
			Equipment_attributes* p3;	//保存要购买商品的所有信息
			p3 = goods(order);	//获取信息
			
			if(p -> balance < p3 -> price){
				cout<<endl<<endl<<"您的余额不足"<<endl<<"任意键继续 (0退出):";
				cin>>order;
			}
			else{	//买得起
				en = 1;		//表示购买成功
				order = 0;  //退出
				p -> balance = p -> balance - p3 ->price;	//付钱
				Clear_screen();	//清屏
				cout<<endl<<"购买成功!!!"<<endl<<endl;
				cout<<p -> role_name<<"得到了如下提升"<<endl<<endl;
				if(p3 -> attack != 0){
					p -> attack 		= p3 -> attack	;//跟新攻击伤害
					strcpy(p -> equip_name, p3 -> name)	;//跟新武器名字
					cout<<"装备武器"<<p3 -> name <<"伤害变为 --》》 "<<p3 -> attack <<endl;
				}
				if(p3 -> reply != 0){
					int Blood_cnt;
					Blood_cnt = p -> Blood;	//保存未使用时血量
					p -> Blood 		= p -> Blood + p3 -> reply	;//回血
					if(p -> Blood > 100) p -> Blood = Blood_max;		//最高血量
					cout<<endl<<"使用了"<<p3 -> name <<"回复了"<<p -> Blood - Blood_cnt <<endl;
				}
			}
		}
	}
				if(en == 1){	//购买成功
					cout<<"任意键继续 :";
					cin>>order;
				}
				else{	//购买失败
					//和界面交换一起,使得结果是保持原样
					cout<<"  购买失败   "<<endl;
					cout<<"任意键继续:";
					cin>>order;
					//p3 = p1; p1 = p2; p2 = p3;
				}
	return en;	//购买失败
}

5.5 技能加点

技能原本是直接加,但技能到80+,玩家就比较无敌了,所以也改成了随机。


int main_skill(role* p){
	int en = -1;
	int order = 1;
	while(order != 0){
		Clear_screen();	//清屏
		cout<<"********	技能加点	*************"<<endl;
		cout<<"说明:可使用此数据增加以下数值 ---  技能大于等于 40 升级技能(2) 有1/2失败"<<endl;
		cout<<"退出:0		生命:1"<<endl;
		cout<<"技能:2		攻击:3"<<endl;
		cout<<"防御:4:	余额:5"<<endl;
 		init_ZT();	//显示人物所有数据名称
		p -> state();
		cout<<"请输入您的选择(0退出):";
		cin>>order;

		cout<<endl<<endl;
		switch(order){
			case 1:{
				cout<<"您的生命由:"<<p -> Blood<<"  提升到了";
				p -> Blood = p -> Blood + p -> skill;		//技能+点
				cout<<p -> Blood<<endl;
				break;
			}
			case 2:{
				int skill_n = 1;
				if(rand() % 2 == 0 && p -> skill >= skill_ix) skill_n = 0;

				if(skill_n == 1){
					cout<<"您的技能由:"<<p -> skill<<"  提升到了";
					p -> skill = p -> skill + p -> skill;		//技能+点
					cout<<p -> skill<<endl;
				}
				else{
					cout<<"您的技能点提升失败"<<endl;
					cout<<"任意键继续";
					cin>>order;
					return 1;
				}
				break;
			}
			case 3:{
				cout<<"您的攻击力由:"<<p -> attack<<"  提升到了";
				p -> attack = p -> attack + p -> skill;		//技能+点
				cout<<p -> attack<<endl;
				break;
			}
			case 4:{
				cout<<"您的防御力由:"<<p -> Defensive<<"  提升到了";
				p -> Defensive = p -> Defensive + p -> skill;		//技能+点
				cout<<p -> Defensive<<endl;
				break;
			}
			case 5:{
				cout<<"您的余额由:"<<p -> balance<<"  提升到了";
				p -> balance = p -> balance + p -> skill;		//技能+点
				cout<<p -> balance<<endl;
				break;
			}
			default:	en = -1;//技能为加点
		}
		if(order > 0 && order <= 5)//成功加点 
		{
			en = 1;
			break;	//退出循环
		}
		cout<<"输入任意值继续 (0)退出";
		cin>>order;
	}
	
				if(en == 1){
					cout<<"加点成功  "<<endl;
					cout<<"任意键继续";
					cin>>order;
				}
				else{
					cout<<"加点失败  "<<endl;
					cout<<"任意键继续";
					cin>>order;
				}

	return en;	//未使用技能
}

5.6 成败判定

//判断是否击败对方
int success(role* p){
	if(p -> Blood <= 0) return 1;	//死亡
	else return -1;
}

5.7 战斗主界面


//战斗界面		rj != 0;时是单人模式
void battle(role* p1, role* p2, int rj) {
	int order = 1;
	role* p3;
	while(order != 0){
		Clear_screen();	//清屏

		//胜利判定	因为所有操作都是由于1发出,所以只需要判定P2
		if(success(p2) == 1){
			cout<<"恭喜 "<<p1 -> role_name << "击败"<< p2 ->role_name<<endl;
			cout<<"游戏结束		"<<p1 -> role_name<<"	胜利"<<endl;
			cout<<"任意键继续 (0退出):";
			cin>>order;
			return;
		}

		cout<<"########## 战斗 ###########"<<endl;
		cout<<"退出游戏		0		攻击	1"<<endl;
		cout<<"使用物品		2		技能	3"<<endl<<endl;
		//交换游戏回合
		p3 = p1; p1 = p2; p2 = p3;
		
		init_ZT();	//显示人物所有数据名称
		p1	->	state();
		p2	->	state();

		cout<<endl<<p1 -> role_name <<"------>>>>>>"<<p2 -> role_name<<endl;
		cout<<endl;
		cout<<"当前是 "<<p1 -> role_name<<" 的回合"<<endl<<endl;
		cout<<p1 -> role_name<<"请输入您的指令:";
		cin>>order;

		switch(order){
			case 1:{
				attack_main(p1,p2);	//进行攻击处理
				break;
			}
			case 2:{
				if(shop(p1) == 1){	//购买成功
				}
				else{	//购买失败
					//和界面交换一起,使得结果是保持原样
					p3 = p1; p1 = p2; p2 = p3;
				}
				break;
			}
			case 3:{
				if(main_skill(p1) == 1){
					cout<<"加点成功  "<<endl;
					cout<<"任意键继续 (0退出游戏):";
					cin>>order;
				}
				else{
					cout<<"加点失败  "<<endl;
					cout<<"任意键继续 (0退出游戏):";
					cin>>order;
				}
				break;
			}
		}
	}


	return;	
}

5.8 游戏界面(只有双人模式)

        本次并未实现单人游戏,人机还没时间写,欢迎大佬们改良。


//游戏界面
void interface(void){
	int order = 1;
	while(order != 0){
		Clear_screen();	//清屏
		cout<<"########## 游戏界面 ###########"<<endl;
		cout<<"双人mode		1"<<endl;
		cout<<"单人mode		2"<<endl;
		cout<<"(0退出)请选择mode:";
		cin>>order;


		if(order == 1){
			battle(&player,&player_2, 0);	//双人模式
		}
		//单人模式
		else if(order == 2){

		}
	}
	return ;
}

6. 主函数

int main()
{
	init_Equipment_name();	//初始化武器名

    srand(time(NULL));	//初始化随机数

	//mall();
	int order;
	while(1){
		//创建英雄
		init_role(&soldier	, "小  兵", 1);
		init_role(&marshal	, "元  帅", 2);
		init_role(&Monon  	, "魔  龙",101);
		init_role(&player 	, "玩 家1", 0);
		init_role(&player_2 , "玩 家2", 1000);

		Clear_screen();	//清屏
		cout<<"########## 主页 ###########"<<endl;
		cout<<"查看商城:1		查看角色:2"<<endl;
		cout<<"进入游戏:3"<<endl;
		cout<<"请输入您的选择:";
		cin>>order;	//输入命令
		Clear_screen();	//清屏

		switch(order){
			case 1:	{
				mall();
				cout<<"任意值退出:";
				cin>>order;
				break;
			}

			case 2:	{
				role_news();
				cout<<"任意值退出:";
				cin>>order;
				break;
			}

			case 3:{
				interface();//游戏界面
				break;
			}
		}
	}

	return 0;
}

三、总代码:

#include "iostream"
#include <stdlib.h>
#include <string.h>
#include <time.h>



using namespace std;
#define Blood_max 		100
#define skill_min		10 	//最初技能值
#define skill_ix 		20 	//技能上限 ,后面添加会有失败可能

#define	attack_init		3	//最初伤害
#define money_init		299	//最初的金币

#define Defensive_init	10 	//最初护盾
#define artillery_min	30 	//大炮伤害最小时
#define artillery_ix	60 

void Clear_screen(void){
	//system("cls")	;		//Windows系统:	
	system("clear")	;		//Linux/Unix系统:
	//system("clear")	;		//macOS系统:		
}


/角色配置
/**************************************************/
void init_ZT(void){	//显示人物所有数据
	cout<<"名  字      血量	武器名			攻击力	防御力	技能	余额	ID	"<<endl;
}

//角色
class role{
public:
	int  Blood				;	//血量 
	int  balance			;	//余额
	int  attack 			;	//攻击力
	int  Defensive 			;	//防御力
	int  skill				;	//技能	可用于+防御力,攻击力,回复血量,技能值
	int  number				;	//角色ID
	char role_name[20]		;	//角色名
	char equip_name[20]		;	//武器名
	char Defensive_name[20]	;	//防御武器名

	//自定义值
	role(int y, int a,int r ,int h, int n, int b)
	{
		balance		=	y;
		attack		=	a;
		Defensive	=	r;
		skill		=	h;
		number 		= 	n;
		Blood		= 	b;
	}
	role(void)
	{
		balance		=	0;
		attack		=	0;
		Defensive	=	0;
		skill		=	0;
		number 		= 	0;
		Blood		= 	0;
	}

	//行为
	void state(){
		cout<<role_name		<<"  ##  "<<Blood	<<"  ##  	"<<equip_name		<<"			"<<attack	<<"	"<<Defensive	<<"	"<<skill	<<"	"<<balance	<<"	"<<number	<<endl;
	}
};

// 初始化角色信息
void init_role(role* r, const char* name, int n) {
    // 设置角色名
    strcpy(r->role_name, name);
	
	//初始化武器名
    strcpy(r->equip_name, "拳  头");

    // 设置角色属性
    r->balance 		= 	money_init;
    r->attack 		=  	attack_init;
    r->Defensive 	= 	Defensive_init;
    r->skill 		= 	skill_min;
    r->number 		= 	n;
    r->Blood 		= 	Blood_max;

}


//创建角色
role soldier	;		//小兵
role marshal	;		//元帅
role Monon		;		//魔龙
role player		;		//玩家
role player_2	;		//玩家2

void role_news(void){
	cout<<"********************** 角色信息 *************************"<<endl;
	init_ZT();	//显示人物所有数据名称
	cout<<"######################################################"<<endl;
	soldier.state();
	marshal.state();
	Monon.state();
	player.state();
	player_2.state();
	/*
	cout<<soldier.role_name		<<"##"<<soldier.equip_name		<<"	"<<soldier.attack	<<"	"<<soldier.Defensive	<<"	"<<soldier.skill	<<"	"<<soldier.balance	<<"	"<<soldier.number	<<endl;
	cout<<marshal.role_name		<<"##"<<marshal.equip_name		<<"	"<<marshal.attack	<<"	"<<marshal.Defensive	<<"	"<<marshal.skill	<<"	"<<marshal.balance	<<"	"<<marshal.number	<<endl;
	cout<<Monon.role_name		<<"##"<<Monon.equip_name		<<"	"<<Monon.attack		<<"	"<<Monon.Defensive		<<"	"<<Monon.skill		<<"	"<<Monon.balance	<<"	"<<Monon.number		<<endl;
	*/
	cout<<"######################################################"<<endl;
}

/*****************************************************************************************/













/*********************	装备配置	**************************/

//装备属性
class Equipment_attributes
{	
public:
	char name[20];
	int attack 		;	//攻击力
	int Defensive 	;	//防御力
	int price		;	//价格
	int reply		;	//回血能力
	int number		;	//物品编号
	//自定义值
	Equipment_attributes(int y, int a,int r ,int h, int n)
	{
		attack		=	y;
		Defensive	=	a;
		reply		=	r;
		price		=	h;
		number		=	n;
	}
	//默认值
	Equipment_attributes(void)
	{
		attack		=	0;
		Defensive	=	0;
		reply		=	0;
		price		=	0;
		number		=	0;
	}

	void state(void){
	cout<<name		<<"	"<<attack		<<"	"<<Defensive		<<"	"<<reply		<<"	"<<price		<<"	"<<number		<<endl;

	}
};


//攻击性武器	1-100;
Equipment_attributes fist		(attack_init  	,0,0, 	0	,1);			//装备:拳头 		编号 = 1
Equipment_attributes knife		(5  			,0,0, 	10	,2);			//装备:刀 			编号 = 2
Equipment_attributes sword		(10 			,0,0, 	30	,3);			//装备:剑 			编号 = 3
Equipment_attributes Crossbow	(15 			,0,0, 	40	,4);			//装备:弓弩 		编号 = 4
Equipment_attributes pistol		(30 			,0,0, 	300	,5);			//装备:手枪		编号 = 5
Equipment_attributes artillery	(artillery_min	,0,0,  	500	,6);			//装备:大炮		编号 = 6

//回复性武器	101-200;
Equipment_attributes bandage		(0, 0, 5,    5 , 101);			//装备:绷带 			编号 = 101
Equipment_attributes beverage		(0, 0, 10,   10, 102);			//装备:饮料 			编号 = 102
Equipment_attributes Painkillers	(0, 0, 15,   15, 103);			//装备:止痛药			编号 = 103
Equipment_attributes First_aid_kit	(0, 0, 50,   50, 104);			//装备:急救包			编号 = 104
Equipment_attributes Medical_kit	(0, 0, 100, 100, 105);			//装备:医疗箱			编号 = 105


//初始化装备名字
void init_Equipment_name(){
	strcpy(fist.name,		"拳  头");				//装备:拳头 		编号 = 1
	strcpy(knife.name,		"小  刀");				//装备:刀 			编号 = 2
	strcpy(sword.name,		"大  剑");				//装备:剑 			编号 = 3
	strcpy(Crossbow.name,	"弓  弩");		//装备:弓弩 		编号 = 4
	strcpy(pistol.name,		"手  枪");			//装备:手枪		编号 = 5
	strcpy(artillery.name,	"大  炮");		//装备:大炮		编号 = 6

	strcpy(bandage.name,		"绷  带");			//装备:绷带 			编号 = 101
	strcpy(beverage.name,		"饮  料");			//装备:饮料 			编号 = 102
	strcpy(Painkillers.name,	"止痛药");			//装备:止痛药			编号 = 103
	strcpy(First_aid_kit.name,	"急救包");			//装备:急救包			编号 = 104
	strcpy(Medical_kit.name,	"医疗箱");			//装备:医疗箱			编号 = 105
	return;
}

void mall(void){
	cout<<"********************** 商城 *************************"<<endl;
	cout<<"商  品	攻击力	防御力	回复	价格	编号	"<<endl;
	cout<<"######################################################"<<endl;

	fist.state();
	knife.state();
	sword.state();
	Crossbow.state();
	pistol.state();
	artillery.state();
	cout<<endl;
	bandage.state();
	beverage.state();
	Painkillers.state();
	First_aid_kit.state();
	Medical_kit.state();
	/*
	cout<<fist.name		<<"	"<<fist.attack		<<"	"<<fist.Defensive		<<"	"<<fist.reply		<<"	"<<fist.price		<<"	"<<fist.number		<<endl;
	cout<<knife.name	<<"	"<<knife.attack		<<"	"<<knife.Defensive		<<"	"<<knife.reply		<<"	"<<knife.price		<<"	"<<knife.number		<<endl;
	cout<<sword.name	<<"	"<<sword.attack		<<"	"<<sword.Defensive		<<"	"<<sword.reply		<<"	"<<sword.price		<<"	"<<sword.number		<<endl;
	cout<<Crossbow.name	<<"	"<<Crossbow.attack	<<"	"<<Crossbow.Defensive	<<"	"<<Crossbow.reply	<<"	"<<Crossbow.price	<<"	"<<Crossbow.number	<<endl;
	cout<<pistol.name	<<"	"<<pistol.attack	<<"	"<<pistol.Defensive		<<"	"<<pistol.reply		<<"	"<<pistol.price		<<"	"<<pistol.number	<<endl;
	cout<<artillery.name<<"	"<<artillery.attack	<<"	"<<artillery.Defensive	<<"	"<<artillery.reply	<<"	"<<artillery.price	<<"	"<<artillery.number	<<endl;

	cout<<bandage.name			<<"	"<<bandage.attack		<<"	"<<bandage.Defensive		<<"	"	<<bandage.reply		<<"	"<<bandage.price		<<"	"<<bandage.number		<<endl;
	cout<<beverage.name			<<"	"<<beverage.attack		<<"	"<<beverage.Defensive		<<"	"<<beverage.reply		<<"	"<<beverage.price		<<"	"<<beverage.number		<<endl;
	cout<<Painkillers.name		<<"	"<<Painkillers.attack	<<"	"<<Painkillers.Defensive	<<"	"<<Painkillers.reply	<<"	"<<Painkillers.price	<<"	"<<Painkillers.number	<<endl;
	cout<<First_aid_kit.name	<<"	"<<First_aid_kit.attack	<<"	"<<First_aid_kit.Defensive	<<"	"<<First_aid_kit.reply	<<"	"<<First_aid_kit.price	<<"	"<<First_aid_kit.number	<<endl;
	cout<<Medical_kit.name		<<"	"<<Medical_kit.attack	<<"	"<<Medical_kit.Defensive	<<"	"<<Medical_kit.reply	<<"	"<<Medical_kit.price	<<"	"<<Medical_kit.number	<<endl;
	*/
	cout<<"######################################################"<<endl;
	return;
}
/**************************************************************************/




/********游戏界面*************************************/
//攻击处理函数
void attack_main(role* p1, role* p2){
	Clear_screen();		//清屏
	int sc = p1 -> attack;
	int order = 1;
		cout<<p1 -> role_name <<"  用  "<<p1 -> equip_name << "  向  " <<p2 -> role_name<<"   发起了进攻"<<endl<<endl;

		if(strcmp(p1 -> equip_name, artillery.name) == 0){	//如果是大炮的话
			sc = sc + rand() % artillery_ix;	//生成随机伤害
		}
		
		//先效果判定
		//先攻击护甲
		p2 -> Defensive = p2 -> Defensive - sc;
		//如果护甲破损,剩余伤害直击生命
		if(p2 -> Defensive < 0){
			cout<<p2 -> role_name <<"受到了 <<<<<  "<<p1 -> role_name<<" 攻击的 "<< (- p2 -> Defensive)<<"点伤害   "<<endl<<endl;
			p2 -> Blood		= p2 -> Blood + p2 -> Defensive;
			p2 -> Defensive = 0;
		}
		else
			cout<<p2 -> role_name <<"挡住了 |||  "<<p1 -> role_name<<" 的 "<< sc <<" 点伤害"<<endl<<endl;
		cout<<"输入任意值";
		cin>>order;
	return;
}

Equipment_attributes* goods(int i){
		//获取相应物品的属性
		switch(i){
			case 1:{
				return &fist;
				break;
			}
			case 2:{
				return &knife;
				break;
			}
			case 3:{
				return &sword;
				break;
			}
			case 4:{
				return &Crossbow;
				break;
			}
			case 5:{
				return &pistol;
				break;
			}
			case 6:{
				return &artillery;
				break;
			}
			case 101:{
				return &bandage;
				break;
			}
			case 102:{
				return &beverage;
				break;
			}
			case 103:{
				return &Painkillers;
				break;
			}
			case 104:{
				return &First_aid_kit;
				break;
			}
			case 105:{
				return &Medical_kit;
				break;
			}
			//未购买装备
			default: return &fist;
		}
}

//用于查看是否有此购物编号
int goods_number(int i){
		//获取相应物品的属性
		switch(i){
			case 1:{
				return fist.number;
				break;
			}
			case 2:{
				return knife.number;
				break;
			}
			case 3:{
				return sword.number;
				break;
			}
			case 4:{
				return Crossbow.number;
				break;
			}
			case 5:{
				return pistol.number;
				break;
			}
			case 6:{
				return artillery.number;
				break;
			}
			case 101:{
				return bandage.number;
				break;
			}
			case 102:{
				return beverage.number;
				break;
			}
			case 103:{
				return Painkillers.number;
				break;
			}
			case 104:{
				return First_aid_kit.number;
				break;
			}
			case 105:{
				return Medical_kit.number;
				break;
			}
			//未购买装备
			default: return -1;
		}
}

//购买并使用商品
int shop(role* p){
	int en = -1;
	int order = 1;
	while(order != 0){
		int GD = 1;
		while(GD){
			Clear_screen();	//清屏
			mall();	//显示所有装备

			init_ZT();	//显示人物所有数据名称
			p -> state();	//显示所有数据
			cout<<"输入物品编(0退出):";
			cin>>order;
			if(order == 0){
				GD = 0;
				en = -1;	//直接退出,购买失败
				break;
			}

			if(goods_number(order) == -1) {
				Clear_screen();
				cout<<"输入编号无效:	任意键继续:";
				cin>>order;
				GD = 1;	//退出输入
			}
			else GD = 0;	//输入值有效
		}

		if(GD == 0){	//输入值有效
			Equipment_attributes* p3;	//保存要购买商品的所有信息
			p3 = goods(order);	//获取信息
			
			if(p -> balance < p3 -> price){
				cout<<endl<<endl<<"您的余额不足"<<endl<<"任意键继续 (0退出):";
				cin>>order;
			}
			else{	//买得起
				en = 1;		//表示购买成功
				order = 0;  //退出
				p -> balance = p -> balance - p3 ->price;	//付钱
				Clear_screen();	//清屏
				cout<<endl<<"购买成功!!!"<<endl<<endl;
				cout<<p -> role_name<<"得到了如下提升"<<endl<<endl;
				if(p3 -> attack != 0){
					p -> attack 		= p3 -> attack	;//跟新攻击伤害
					strcpy(p -> equip_name, p3 -> name)	;//跟新武器名字
					cout<<"装备武器"<<p3 -> name <<"伤害变为 --》》 "<<p3 -> attack <<endl;
				}
				if(p3 -> reply != 0){
					int Blood_cnt;
					Blood_cnt = p -> Blood;	//保存未使用时血量
					p -> Blood 		= p -> Blood + p3 -> reply	;//回血
					if(p -> Blood > 100) p -> Blood = Blood_max;		//最高血量
					cout<<endl<<"使用了"<<p3 -> name <<"回复了"<<p -> Blood - Blood_cnt <<endl;
				}
			}
		}
	}
				if(en == 1){	//购买成功
					cout<<"任意键继续 :";
					cin>>order;
				}
				else{	//购买失败
					//和界面交换一起,使得结果是保持原样
					cout<<"  购买失败   "<<endl;
					cout<<"任意键继续:";
					cin>>order;
					//p3 = p1; p1 = p2; p2 = p3;
				}
	return en;	//购买失败
}

int main_skill(role* p){
	int en = -1;
	int order = 1;
	while(order != 0){
		Clear_screen();	//清屏
		cout<<"********	技能加点	*************"<<endl;
		cout<<"说明:可使用此数据增加以下数值 ---  技能大于等于 40 升级技能(2) 有1/2失败"<<endl;
		cout<<"退出:0		生命:1"<<endl;
		cout<<"技能:2		攻击:3"<<endl;
		cout<<"防御:4:	余额:5"<<endl;
 		init_ZT();	//显示人物所有数据名称
		p -> state();
		cout<<"请输入您的选择(0退出):";
		cin>>order;

		cout<<endl<<endl;
		switch(order){
			case 1:{
				cout<<"您的生命由:"<<p -> Blood<<"  提升到了";
				p -> Blood = p -> Blood + p -> skill;		//技能+点
				cout<<p -> Blood<<endl;
				break;
			}
			case 2:{
				int skill_n = 1;
				if(rand() % 2 == 0 && p -> skill >= skill_ix) skill_n = 0;

				if(skill_n == 1){
					cout<<"您的技能由:"<<p -> skill<<"  提升到了";
					p -> skill = p -> skill + p -> skill;		//技能+点
					cout<<p -> skill<<endl;
				}
				else{
					cout<<"您的技能点提升失败"<<endl;
					cout<<"任意键继续";
					cin>>order;
					return 1;
				}
				break;
			}
			case 3:{
				cout<<"您的攻击力由:"<<p -> attack<<"  提升到了";
				p -> attack = p -> attack + p -> skill;		//技能+点
				cout<<p -> attack<<endl;
				break;
			}
			case 4:{
				cout<<"您的防御力由:"<<p -> Defensive<<"  提升到了";
				p -> Defensive = p -> Defensive + p -> skill;		//技能+点
				cout<<p -> Defensive<<endl;
				break;
			}
			case 5:{
				cout<<"您的余额由:"<<p -> balance<<"  提升到了";
				p -> balance = p -> balance + p -> skill;		//技能+点
				cout<<p -> balance<<endl;
				break;
			}
			default:	en = -1;//技能为加点
		}
		if(order > 0 && order <= 5)//成功加点 
		{
			en = 1;
			break;	//退出循环
		}
		cout<<"输入任意值继续 (0)退出";
		cin>>order;
	}
	
				if(en == 1){
					cout<<"加点成功  "<<endl;
					cout<<"任意键继续";
					cin>>order;
				}
				else{
					cout<<"加点失败  "<<endl;
					cout<<"任意键继续";
					cin>>order;
				}

	return en;	//未使用技能
}


//判断是否击败对方
int success(role* p){
	if(p -> Blood <= 0) return 1;	//死亡
	else return -1;
}

//战斗界面		rj != 0;时是单人模式
void battle(role* p1, role* p2, int rj) {
	int order = 1;
	role* p3;
	while(order != 0){
		Clear_screen();	//清屏

		//胜利判定	因为所有操作都是由于1发出,所以只需要判定P2
		if(success(p2) == 1){
			cout<<"恭喜 "<<p1 -> role_name << "击败"<< p2 ->role_name<<endl;
			cout<<"游戏结束		"<<p1 -> role_name<<"	胜利"<<endl;
			cout<<"任意键继续 (0退出):";
			cin>>order;
			return;
		}

		cout<<"########## 战斗 ###########"<<endl;
		cout<<"退出游戏		0		攻击	1"<<endl;
		cout<<"使用物品		2		技能	3"<<endl<<endl;
		//交换游戏回合
		p3 = p1; p1 = p2; p2 = p3;
		
		init_ZT();	//显示人物所有数据名称
		p1	->	state();
		p2	->	state();

		cout<<endl<<p1 -> role_name <<"------>>>>>>"<<p2 -> role_name<<endl;
		cout<<endl;
		cout<<"当前是 "<<p1 -> role_name<<" 的回合"<<endl<<endl;
		cout<<p1 -> role_name<<"请输入您的指令:";
		cin>>order;

		switch(order){
			case 1:{
				attack_main(p1,p2);	//进行攻击处理
				break;
			}
			case 2:{
				if(shop(p1) == 1){	//购买成功
				}
				else{	//购买失败
					//和界面交换一起,使得结果是保持原样
					p3 = p1; p1 = p2; p2 = p3;
				}
				break;
			}
			case 3:{
				if(main_skill(p1) == 1){
					cout<<"加点成功  "<<endl;
					cout<<"任意键继续 (0退出游戏):";
					cin>>order;
				}
				else{
					cout<<"加点失败  "<<endl;
					cout<<"任意键继续 (0退出游戏):";
					cin>>order;
				}
				break;
			}
		}
	}


	return;	
}



//游戏界面
void interface(void){
	int order = 1;
	while(order != 0){
		Clear_screen();	//清屏
		cout<<"########## 游戏界面 ###########"<<endl;
		cout<<"双人mode		1"<<endl;
		cout<<"单人mode		2"<<endl;
		cout<<"(0退出)请选择mode:";
		cin>>order;


		if(order == 1){
			battle(&player,&player_2, 0);	//双人模式
		}
		//单人模式
		else if(order == 2){

		}
	}
	return ;
}

*******************************************************/
int main()
{
	init_Equipment_name();	//初始化武器名

    srand(time(NULL));	//初始化随机数

	//mall();
	int order;
	while(1){
		//创建英雄
		init_role(&soldier	, "小  兵", 1);
		init_role(&marshal	, "元  帅", 2);
		init_role(&Monon  	, "魔  龙",101);
		init_role(&player 	, "玩 家1", 0);
		init_role(&player_2 , "玩 家2", 1000);

		Clear_screen();	//清屏
		cout<<"########## 主页 ###########"<<endl;
		cout<<"查看商城:1		查看角色:2"<<endl;
		cout<<"进入游戏:3"<<endl;
		cout<<"请输入您的选择:";
		cin>>order;	//输入命令
		Clear_screen();	//清屏

		switch(order){
			case 1:	{
				mall();
				cout<<"任意值退出:";
				cin>>order;
				break;
			}

			case 2:	{
				role_news();
				cout<<"任意值退出:";
				cin>>order;
				break;
			}

			case 3:{
				interface();//游戏界面
				break;
			}
		}
	}

	return 0;
}

四、代码总结:

  1. 实现了基本的角色选择、商城购买装备、战斗系统和技能加点等功能。
  2. 使用了面向对象的编程方法,通过角色类和装备类的定义,使得代码结构清晰。
  3. 提供了基本的交互界面,玩家可以通过控制台输入进行游戏操作。

不足之处

  1. 缺乏注释:代码中缺乏足够的注释,使得阅读和理解代码的难度增加。
  2. 可读性较差:代码结构可以更清晰一些,例如可以将游戏逻辑封装成函数,提高可读性和可维护性。
  3. 缺乏错误处理:代码中未包含对用户输入的错误处理,导致用户输入错误时程序可能无法正确响应。
  4. 单一性:当前只实现了基本的战斗功能,缺乏更多元化的游戏玩法,例如任务系统、地图探索等。

改良意见

  1. 添加注释:在代码中加入适当的注释,解释关键的代码逻辑和功能,提高代码的可读性。
  2. 优化代码结构:将游戏逻辑封装成函数,提高代码的模块化和可维护性。
  3. 引入错误处理:在用户输入处加入错误处理,对用户输入进行验证和处理,以提高程序的稳定性。
  4. 扩展游戏玩法:可以考虑引入更多元化的游戏玩法,例如任务系统、地图探索等,增加游戏的可玩性和趣味性。
  5. 用户界面优化:可以考虑引入更友好的用户界面,例如使用图形界面或者增加更多的交互元素,提高用户体验。

五、部分实现图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1633345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盲人定位设备:为视障人士独立出行铺设智慧之路

在快速发展的数字时代&#xff0c;科技的每一次跃进都在悄然改变我们的生活方式。对于盲人朋友而言&#xff0c;一款名为“蝙蝠避障”集实时避障于一身的盲人定位设备&#xff0c;正成为他们探索世界、实现独立出行的有力助手。这款设备&#xff0c;不仅重新定义了无障碍出行的…

YOLOv8+PyQt5输电线路缺陷检测(目前最全面的类别检测,可以从图像、视频和摄像头三种路径检测)

1.效果视频&#xff1a;YOLOv8PyQt5输电线路缺陷检测&#xff08;目前最全面的类别检测&#xff0c;可以从图像、视频和摄像头三种路径检测&#xff09;_哔哩哔哩_bilibili 资源包含可视化的输电线路缺陷检测系统&#xff0c;可识别图片和视频当中出现的五类常见的输电线路缺陷…

新书速览|ChatGLM3大模型本地化部署、应用开发与微调

实战文本生成、智能问答、信息抽取、财务预警应用开发&#xff0c;掌握ChatGLM3大模型部署、开发与微调技术 01 本书内容 《ChatGLM3大模型本地化部署、应用开发与微调》作为《PyTorch 2.0深度学习从零开始学》的姊妹篇&#xff0c;专注于大模型的本地化部署、应用开发以及微…

Linux基本指令(3)

目录 时间相关的指令&#xff1a; 1.在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff0c;格式设定为一个加好后接数个标记&#xff0c;其中常用的标记列表如下&#xff1a; 2.在设定时间方面&#xff1a; 3.时间戳&#xff1a; Cal指令&#xff1a; find指令&a…

Kubernetes 声明式语言 YAML

什么是 YAML YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种可读的数据序列化语言&#xff0c;通常用于配置文件、数据序列化和交换格式。YAML 的设计目标是易读易写&#xff0c;并且能够映射到动态语言中的数据结构 YA加粗样式ML 是 JSON 的超集&#xff0…

纯血鸿蒙APP实战开发——Navigation实现多设备适配案例

介绍 在应用开发时&#xff0c;一个应用需要适配多终端的设备&#xff0c;使用Navigation的mode属性来实现一套代码&#xff0c;多终端适配。 效果图预览 使用说明 将程序运行在折叠屏手机或者平板上观看适配效果。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a…

MyBatis(注解方式操作)

文章目录 1.注解方式操作文件目录1.快速入门&#xff08;完整步骤&#xff09;1.pom.xml&#xff08;完整&#xff09;2.resources/jdbc.properties外部配置文件&#xff08;根据实际情况修改参数&#xff09;3.在resources/mybatis-config.xml&#xff08;完整&#xff09;中配…

仓库管理系统(WMS)是什么?有哪些功能?

阅读本文&#xff0c;你将了解&#xff1a;1、仓库管理&#xff08;WMS&#xff09;是什么&#xff1f; 2、仓库管理系统&#xff08;WMS&#xff09;有什么功能 3、使用仓库管理系统能给企业带来什么好处 一、仓库管理系统是什么 WMS&#xff0c;全称Warehouse Management S…

借助Aspose.SVG图像控件,在线将 PNG 转换为 XML

Aspose.SVG for .NET 是用于SVG文件处理的灵活库&#xff0c;并且与其规范完全兼容。API可以轻松加载&#xff0c;保存和转换SVG文件&#xff0c;以及通过其文档对象模型&#xff08;DOM&#xff09;读取和遍历文件的元素。API独立于任何其他软件&#xff0c;使开发人员无需使用…

BGP配置和应用案例

策略路由的配置步骤 l 策略路由的配置步骤如下&#xff1a; 创建route-map 通过ACL匹配感兴趣的数据&#xff0c;定义策略动作 在指定接口下通过ip policy 命令应用route-map l 最终实现对通过该接口进入设备的数据进行检查&#xff0c;对匹配的数据执行规定的策略…

注意力机制(四)(多头注意力机制)

​&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《深度学习基础知识》 相关专栏&#xff1a; ⚽《机器学习基础知识》 &#x1f3d0;《机器学习项目实战》 &#x1f94e;《深度学习项目实…

如何使用python自动修改图片

如何使用python自动修改图片 首先&#xff1a; 要使用Python代码自动修改图片,你可以使用 imageio和matplotlib库.以下是一个简单的示例代码,演示如何调整图片尺寸. 确保已经安装了imageio和matplotlib库.如果没有安装,可以使用以下命令安装 pip install imageio matplotli…

10G MAC层设计系列-(2)MAC RX模块

一、概述 MAC RX模块的需要进行解码、对齐、CRC校验。 因为在空闲的时候10G PCS/PMA会一直向外吐空闲符&#xff08;x07&#xff09;所以需要根据开始符、结束符将有效数据从码流中截取&#xff0c;也就是解码。 因为开始字符的所在位置有两种形式&#xff0c;而结束字符的位…

C语言 | Leetcode C语言题解之第50题Pow(x,n)

题目&#xff1a; 题解&#xff1a; double myPow(double x, int n){if(n 0 || x 1){return 1;}if(n < 0){return 1/(x*myPow(x,-(n1)));}if(n % 2 0){return myPow(x*x,n/2);}else{return x*myPow(x*x,(n - 1)/2);} }

Node私库Verdaccio使用记录,包的构建,推送和拉取

Node私库Verdaccio使用记录&#xff0c;包的构建&#xff0c;推送和拉取 Verdaccio是一个轻量级的私有npm代理注册中心&#xff0c;它可以帮助你在本地搭建一个npm仓库&#xff0c;非常适合企业内部使用。通过使用Verdaccio&#xff0c;你可以控制和缓存依赖包&#xff0c;提高…

QT:信号和槽

文章目录 信号和槽connect函数槽自定义槽第一种第二种 信号和槽 这里的信号和Linux的信号一样吗&#xff1f; 答案是差不多&#xff0c;但是也有一定的区别&#xff0c;而且也是两个不同的概念 信号有三个概念&#xff0c;一个是信号源&#xff0c;这个信号是由谁发送的&…

基于Guava的异步线程结果监听:ListenableFuture

1.ListenableFuture概述&#xff1a; ListenableFuture是对原有Future的增强&#xff0c;它可以监听异步执行的过程&#xff0c;执行完了&#xff0c;自动触发回调操作。 除此之外&#xff0c;可以分别针对成功或者失败的情况做后续处理。 2.使用场景 你想拿到异步处理的结果…

vue2插件之@lucky-canvas/vue,大转盘、抽奖、老虎机

提示&#xff1a;vue2插件 文章目录 [TOC](文章目录) 前言一、查看nodejs版本二、创建项目三、大转盘四、抽奖五、老虎机六、官网总结 前言 lucky-canvas/vue 一、查看nodejs版本 node -v二、创建项目 1、安装插建 npm install lucky-canvas/vue --save2、目录结构 3、引用…

Stable Diffusion WebUI 中文提示词插件 sd-webui-prompt-all-in-one

本文收录于《AI绘画从入门到精通》专栏&#xff0c;订阅后可阅读专栏内所有文章&#xff0c;专栏总目录&#xff1a;点这里。 大家好&#xff0c;我是水滴~~ 今天为大家介绍 Stable Diffusion WebUI 的一款中文提示词插件 sd-webui-prompt-all-in-one&#xff0c;就像它的名字一…

2024中国(江西)国际先进陶瓷材料及智能装备博览会

2024中国&#xff08;江西&#xff09;国际先进陶瓷材料及智能装备博览会 “中国&#xff08;江西&#xff09;国际先进陶瓷材料及智能装备博览会” 陶瓷三新展 &#xff08;新材料、新装备、新技术&#xff09; 绿色智能、引领未来 2024年11月1日-11月3日 中国江西 南昌…