游戏辅助代码
  • 板块灌水区
  • 楼主noname_cpp
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/8/8 20:58
  • 上次更新2023/11/4 11:29:47
查看原帖
游戏辅助代码
164119
noname_cpp楼主2021/8/8 20:58

游戏辅助代码

game_ex.cpp

#include<bits/stdc++.h>
#define LL long long
using namespace std;

int code_search(string s);
void init();
void setnum(string s,int number);

map<string,int>code_data;
vector<int>code_pos;
vector<int>data_base;
int code_size;


struct single_plus{
	string pos;
	int plus;
	single_plus(string pos,int plus){
		this->pos=pos;
		this->plus=plus;
	}
};
struct object{
	string name;
	int code;
	vector<single_plus>effect;
	
	bool operator <(const object b)const{
		return code<b.code;
	}
	void regist(string _name){
		name=_name;
		code=code_search(_name);
	}
	void add_effect(string s,int p){
		single_plus ps(s,p);
		effect.push_back(ps);
	}
	bool use(int times){
		if(data_base[code]-times<0)return 0;
		for(int i=0;i<effect.size();i++)
			data_base[code_search(effect[i].pos)]+=effect[i].plus*times;
		data_base[code]-=times;
		return 1;
	}
};
struct quality{
	string name;
	int code;
	void regist(string _name,int prenum){
		name=_name;
		code=code_search(_name);
		setnum(_name,prenum);
	}
};
vector<object>ob_base;
vector<quality>ql_base;

int code_search(string s){
	if(code_data[s]==0){
		code_size++;
		code_data[s]=code_size;
		data_base.push_back(0);
	}
	return code_data[s];
}
void init(){
	code_size=-1;
	object ober;
	ober.regist("empty_object");
	ob_base.push_back(ober);
	code_pos.push_back(0);
}
void setnum(string s,int number){
	data_base[code_search(s)]=number;
}
void plusnum(string s,int number){
	data_base[code_search(s)]+=number;
}
int getnum(string s){
	return data_base[code_search(s)];
}
bool useob(string s,int _times){
	return ob_base[code_pos[code_search(s)]].use(_times);
}
void ql_register(string s,int x){
	quality ql;
	ql.regist(s,x);
	ql_base.push_back(ql);
	code_pos.push_back(ql_base.size()-1);
}
void ob_register(string s){
	object ober;
	ober.regist(s);
	ob_base.push_back(ober);
	code_pos.push_back(ob_base.size()-1);
}
void add_effect(string ms,string s,int p){
	ob_base[code_pos[code_search(ms)]].add_effect(s,p);
}
int main(){
	//test lines
	init();
	int n;
	cin>>n;
	while(1){
		switch(n){
			case 1:{
				for(int i=0;i<data_base.size();i++)
					cout<<i<<' '<<data_base[i]<<endl;
				break;
			}
			case 2:{
				map<string,int>::iterator it;
				for(it=code_data.begin();it!=code_data.end();it++)
					cout<<it->first<<' '<<it->second<<endl;
				break;
			}
			case 3:{
				for(int i=0;i<ql_base.size();i++){
					cout<<ql_base[i].name<<' '<<ql_base[i].code<<endl;
				}
				break;
			}
			case 4:{
				for(int i=0;i<ob_base.size();i++){
					cout<<ob_base[i].name<<' '<<ob_base[i].code<<endl;
					for(int j=0;j<ob_base[i].effect.size();j++){
						cout<<"   ";
						cout<<ob_base[i].effect[j].pos<<' ';
						cout<<ob_base[i].effect[j].plus<<endl;
					}
				}
				break;
			}
			case 5:{
				int x,y;
				string s,ms;
				cin>>ms;
				ob_register(ms);
				cin>>s>>x;
				while(s!="none"){
					add_effect(ms,s,x);
					cin>>s>>x;
				}
				break;
			}
			case 6:{
				int x,y;
				string s;
				cin>>s>>x;
				ql_register(s,x);
				break;
			}
			case 7:{
				string s;
				int x;
				cin>>s>>x;
				setnum(s,x);
				break;
			}
			case 8:{
				string s;
				int x;
				cin>>s>>x;
				plusnum(s,x);
				break;
			}
			case 9:{
				string s;
				int x;
				cin>>s>>x;
				if(!useob(s,x))puts("failed!");
				break;
			}
		}
		cin>>n;
	}
	return 0;
}

解释

qlql_regisiter(s,x):qualityregisiter(s,x):quality registerregister 特性变量注册,s为变量名,x为初始值特性变量注册,s为变量名,x为初始值

obob_regisiter(s):objectregisiter(s):object registerregister 物品变量注册,s为变量名物品变量注册,s为变量名

setnum(s,x):numbersetnum(s,x):number settingsetting 变量赋值,s为变量名,x为所赋值变量赋值,s为变量名,x为所赋值

plusnum(s,x):numberplusnum(s,x):number plusplus 变量增值,s为变量名,x为增加值变量增值,s为变量名,x为增加值

getnum(s):numbergetnum(s):number getget 获取变量值,s为变量名获取变量值,s为变量名

useob(s,x):useuseob(s,x):use objectobject 变量增值,s为变量名,x为使用量变量增值,s为变量名,x为使用量

addadd_effect(ms,s,x):addeffect(ms,s,x):add moremore effecteffect 添加效果,ms为目标物品变量名,s为所要增加的物品/特性变量名,x为增加值添加效果,ms为目标物品变量名,s为所要增加的物品/特性变量名,x为增加值

init():预加载init():预加载

2021/8/8 20:58
加载中...