- C++
个人制造——头文件
- @ 2026-2-2 13:39:05
#ifndef MINECRAFT_H
#define MINECRAFT_H
#include<bits/stdc++.h>
using namespace std;
#define bdsw short//被动生物
#define zlsw int//中立生物
#define ddsw long long//敌对生物
#define cssmz unsigned int//
#define zdsmz unsigned long//
#define zqsmz unsigned long long//
#define scgl_d float//生成概率_大
#define scgl_z double//生成概率_中
#define scgl_x long double// 生成概率_小
#define zcq bool//侦测器
#define dfk char//
#define dufk string//
#define yrcdkj using namespace std//引入存档空间
#define ss cout<<//受伤
#define zl cin>>//治疗
#define ddgdxz endl//到达高度限制
#define fk const//
#define TNT break//TNT炸药
#define tyys continue//
#define fhbhs return//返回庇护所
zsd(int a,int b)//钻石多函数
{
return max(a,b);
}
zss(int c,int d)//钻石少函数
{
return min(c,d);
}
#endif
注:暂未编辑完毕(我想开个新语言)
1 comments
-
HZY1618yzh @ 2026-2-5 15:08:31
#include<bits/stdc++.h> using namespace std; typedef void(*rs)(); int varnum; long long *ram; int a,b,c; string jph; int index=1; vector<string>code; vector<string>sduc; unordered_map<string,rs>keywords; unordered_map<string,stack<int> >var; unordered_map<string,int>jpd; unordered_map<string,int>funname; unordered_map<string,vector<string>>funin; void runcode(vector<string>&sduc){ if(!sduc.size()||sduc[0][0]==':'||sduc[0][0]=='#') return; try{ if(keywords[sduc[0]]==0) throw runtime_error("\'"+sduc[0]+"\' is not define!"); keywords[sduc[0]](); }catch(const runtime_error &e){ cout<<"Catch a error:"<<e.what()<<"on line "<<index<<'\n'; }catch (...){ cout<<"On line"<<index<<",have unknown error\n"<<'\n'; } } int gein(string s){return ('0'<=s[0]&&s[0]<='9')||s[0]=='-'?atoi(s.c_str()):var[s].top();} vector<string> opencode(string x); void fp() {a=atoi(sduc[1].c_str());ram=new long long[a];for(int i=0;i<a;i++)ram[i]=0;} void mov() {a=gein(sduc[1].c_str()),b=gein(sduc[2].c_str());ram[a]=ram[b];} void mio() {a=gein(sduc[1].c_str()),b=atoi(sduc[2].c_str());ram[a]=b;} void add() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]+ram[b];} void sub() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]-ram[b];} void tim() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]*ram[b];} void div() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]/ram[b];} void mod() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]%ram[b];} void _and() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]&ram[b];} void _or() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]|ram[b];} void _compl() {a=gein(sduc[1].c_str());ram[a]=~ram[a];} void _xor() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]^ram[b];} void rmv() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]>>ram[b];} void lmv() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=ram[a]<<ram[b];} void jmp() {jph=sduc[1];index=jpd[jph];} void _if() {a=gein(sduc[1].c_str());ram[a]&1?:index++;} void ext() {cout<<"\ncode exit\n";system("pause");exit(0);} void put() {for(size_t i=1;i<sduc.size();i++) a=gein(sduc[i].c_str()),cout<<ram[a];} void get() {for(size_t i=1;i<sduc.size();i++) a=gein(sduc[i].c_str()),cin>>ram[a];} void putc() {for(size_t i=1;i<sduc.size();i++) a=gein(sduc[i].c_str()),cout<<(char)ram[a];} void getc() {char c;for(size_t i=1;i<sduc.size();i++) a=gein(sduc[i].c_str()),cin>>c,ram[a]=c;} void sam() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=(ram[a]==ram[b]);} void gre() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=(ram[a]>ram[b]);} void les() {c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=(ram[a]<ram[b]);} void _for(){ int a=gein(sduc[1].c_str()),b=gein(sduc[2].c_str()),c=gein(sduc[3].c_str()); index++; const int temp=index; for(ram[a]=ram[b];ram[a]<=ram[c];ram[a]++){ while(1){ sduc=opencode(code[index]); if(sduc[0]=="end"){if(ram[a]<ram[c]) index=temp;break;} runcode(sduc); index++; } } return; } void forn(){ int a=gein(sduc[1].c_str()),b=atoi(sduc[2].c_str()),c=gein(sduc[3].c_str()); index++; const int temp=index; for(ram[a]=b;ram[a]<=ram[c];ram[a]++){ while(1){ sduc=opencode(code[index]); if(sduc[0]=="end"){if(ram[a]<ram[c]) index=temp;break;} runcode(sduc); index++; } } return; } void _while(){ int a=gein(sduc[1].c_str()); index++; const int temp=index; while(ram[a]){ while(1){ sduc=opencode(code[index]); if(sduc[0]=="end"){if(ram[a]) index=temp;break;} runcode(sduc); index++; } } return; } void add_var(){for(size_t i=1;i<sduc.size();i++)var[sduc[i]].push(++varnum);} void _max(){int c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=max(ram[a],ram[b]);} void _min(){int c=gein(sduc[1].c_str()),a=gein(sduc[2].c_str()),b=gein(sduc[3].c_str());ram[c]=min(ram[a],ram[b]);} void def(){ string name=sduc[1];funname[name]=index; int inps=atoi(sduc[2].c_str()); for(int i=1;i<=inps;i++){ string inp=sduc[i+2]; funin[name].push_back(inp); } while(1){ sduc=opencode(code[index]); if(sduc[0]=="endf") break; index++; } } void run(){ string name=sduc[1]; int inps=funin[name].size(),temp=index,inp; for(int i=0;i<inps;i++) inp=gein(sduc[i+2].c_str()),var[funin[name][i]].push(++varnum),ram[varnum]=ram[inp]; index=funname[name]+1; while(1){ sduc=opencode(code[index]); if(sduc[0]=="endf"||sduc[0]=="return"){ for(int i=0;i<inps;i++) var[funin[name][i]].pop(),varnum--; break; } runcode(sduc); index++; } index=temp; } inline void init() { keywords["fp"]=fp; keywords["var"]=add_var; keywords["mio"]=mio; keywords["mov"]=mov; keywords["add"]=add; keywords["sub"]=sub; keywords["tim"]=tim; keywords["div"]=div; keywords["mod"]=mod; keywords["and"]=_and; keywords["or"]=_or; keywords["compl"]=_compl; keywords["xor"]=_xor; keywords["rmv"]=rmv; keywords["lmv"]=lmv; keywords["jmp"]=jmp; keywords["sam"]=sam; keywords["gre"]=gre; keywords["les"]=les; keywords["if"]=_if; keywords["put"]=put; keywords["get"]=get; keywords["putc"]=putc; keywords["getc"]=getc; keywords["ext"]=ext; keywords["for"]=_for; keywords["forn"]=forn; keywords["while"]=_while; keywords["max"]=_max; keywords["min"]=_min; keywords["def"]=def; keywords["run"]=run; return; } vector<string> opencode(string x) { vector<string>ret; string s; for(char i:x) if(i==' ') ret.push_back(s),s=""; else s=s+i; ret.push_back(s); return ret; } int main(int argc, char* argv[]) { init(); string path,s; if(argc>1) path=argv[1]; else cin>>path; system("cls"); ifstream dim(path.c_str()); code.push_back(""); int line=0; while(getline(dim,s)) { line++; code.push_back(s); if(s[0]==':') jpd[s.substr(1)]=line; } for(;index<(int)code.size();index++) runcode(sduc=opencode(code[index])); return 0; }fp 10 var a b mod ans _2 def pow 3 a b mod var is while b mod is b _2 if is tim ans ans a # div b b _2 tim a a a mod ans ans mod mod a a mod end endf mio _2 2 mio ans 1 get a b mod run pow a b mod put ans ext
- 1