问题标题: creator Beta v.1.0

0
0
已解决
郑思予
郑思予
新手光能
新手光能

creator  beta版发布啦!

编程平台由于编译错误的问题,详悉见点我

只能发Devc++的啦

#include<bits/stdc++.h>
#include<iostream>
#include<conio.h>
#include<iomanip>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
#include<windows.h>
using namespace std;
string s="(";
bool vis[100005],flag,fl;
int zdx[15],zdy[15],ans;
int w;
int map1[35][35][15];
//1:墙
//2:岩浆
//3:蹦床
//0:空气
//5:"我"
int csdx[15],csdy[15];
int maxx[15],maxy[15];
int x,y;
int cnt=1;
void cls(){//申明 此函数作者:五年长久
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coordScreen = { 0, 0 };    // home for the cursor
    SetConsoleCursorPosition( hConsole, coordScreen );
}
void mapp(){//打印地图
	HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//句柄
	cout<<"按f键退出\n";
	for(int i=0;i<=maxy[cnt]+1;i++){
		map1[0][i][cnt]=1;
		map1[maxx[cnt]+1][i][cnt]=1;
	}
	for(int i=0;i<=maxx[cnt]+1;i++){
		map1[i][0][cnt]=1;
		map1[i][maxy[cnt]+1][cnt]=1;
	}
	cout<<"  ";
	for(int i=0;i<=maxy[cnt]+1;i++){
		cout<<setw(2)<<left<<i;
	}
	cout<<endl;
	for(int i=0;i<=maxx[cnt]+1;i++){
		for(int j=-1;j<=maxy[cnt]+1;j++){
//			cout<<j<<" ";
			if(j==-1){
				cout<<setw(2)<<left<<i;
				continue;
			}
			if(map1[i][j][cnt]==0){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//三色相加,白色
	    		printf("  ");  //空地
			}
			else if(map1[i][j][cnt]==1){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);//红色和绿色相加,**
	    		printf("■");
			}
			else if(map1[i][j][cnt]==2){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED);//红色
				printf("■");
			}
			else if(map1[i][j][cnt]==3){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_GREEN);//绿色
				printf("■");
			}
			else if(map1[i][j][cnt]==5){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_BLUE);//蓝色
//				cout<<i<<" "<<j<<endl;
				if(!flag){
                    csdx[cnt]=i;
                    csdy[cnt]=j;
                    flag=true;
				}
				x=i,y=j;
				printf("♀");
			}
			else if(map1[i][j][cnt]==6){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED);//红色
				printf("☆");
			}
			else if(map1[i][j][cnt]==7){
				SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED);//红色
				printf("▲");
			}
		}
		cout<<endl;
	}
}
string f(int x){
	string s;
	while(x){
		s+=char(x%10+'0');
		x/=10;
	}
	return s;
}
int ff(string p){
	int a=0;
	for(int i=p.length()-1;i>=0;i--){
		a=a*10+p[i]-'0';
	}
	return a;
}
int n,m;
void mapw(){
	for(int k=1;k<=ans;k++)
	for(int i=1;i<=maxx[k];i++){
		for(int j=1;j<=maxy[k];j++){
			if(map1[i][j][k]==6){
				map1[i][j][k]=w;
			}
		}
	}
}
int main(){
	SetWindowTextA( GetConsoleWindow(), "creator" );
	HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//句柄
	if((MessageBox(NULL,"欢迎进入creator。\n**不良游戏,拒绝盗版游戏。\n 注意自我保护,谨防受骗上当。 \n适度游戏益脑,沉迷游戏伤身。\n 合理安排时间,享受健**活。\n","creator",MB_OK)==1)){

	}
	SetConsoleTextAttribute(hout,FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//三色相加,白色
	cout<<"欢迎来到creator\n";
	cout<<"1.创建地图 2.读入存档码\n";
	char n;
	n=getchar();
	ans=1;
	if(n=='1'){
		L2:
		cout<<"输入地图大小(最大30行30列)\n";
		cin>>maxx[cnt]>>maxy[cnt];
		s+=f(maxx[cnt]);
		s=s+"*"+f(maxy[cnt])+"*";
		goto L3;
		L3:
		if(!fl){
			n=maxx[cnt]/2;
			m=maxy[cnt]/2;
			w=map1[n][m][cnt];
			map1[n][m][cnt]=6;
//			fl=1;
		}
		cls();
		goto L1;
		L1:
		cls();
		cout<<"第"<<cnt<<"张/"<<ans<<"张\n";
		mapp();
		cout<<"0.退出游戏 1.普通方块 2.岩浆 3.蹦床 4.出生点 5.开始游戏 6.保存游戏 7.删除 8.终点 9.添加地图 x.上一张 y.下一张\n";
		char c;
		c=getchar();
		if(c=='d'){
			if(map1[n][m+1][cnt]==1){

			}
			map1[n][m][cnt]=w;
			m++;
			w=map1[n][m][cnt];
			map1[n][m][cnt]=6;
			goto L1;
		}
		else if(c=='a'){
			map1[n][m][cnt]=w;
			m--;
			w=map1[n][m][cnt];
			map1[n][m][cnt]=6;
			goto L1;
		}
		else if(c=='w'){
			map1[n][m][cnt]=w;
			n--;
			w=map1[n][m][cnt];
			map1[n][m][cnt]=6;
			goto L1;
		}
		else if(c=='s'){
			map1[n][m][cnt]=w;
			n++;
			w=map1[n][m][cnt];
			map1[n][m][cnt]=6;
			goto L1;
		}
		else if(c=='1'){
			s+='@';
			s+=f(n);
			s+="*";
			s+=f(m);
			s+="*";
			map1[n][m][cnt]=1;
			map1[n][m][cnt]=6;
			w=1;
			goto L1;
		}
		else if(c=='2'){
			s+='#';
			s+=f(n);
			s+="*";
			s+=f(m);
			s+="*";
			map1[n][m][cnt]=2;
			map1[n][m][cnt]=6;
			w=2;
			goto L1;
		}
		else if(c=='3'){
			s+='$';
			s+=f(n);
			s+="*";
			s+=f(m);
			s+="*";
			w=3;
			map1[n][m][cnt]=3;
			map1[n][m][cnt]=6;
			goto L1;
		}
		else if(c=='x'){
			cnt--;
			goto L1;
		}
		else if(c=='y'){
			cnt++;
			goto L1;
		}
		else if(c=='4'){
			s+='%';
			s+=f(n);
			s+="*";
			s+=f(m);
			s+="*";
			w=5;
            csdx[cnt]=n;csdy[cnt]=m;
			map1[n][m][cnt]=5;
			map1[n][m][cnt]=6;
			goto L1;
		}
		else if(c=='9'){
			ans++;
			cnt++;
			s+="(";
			cls();
			goto L2;
		}
		else if(c=='5'){
			mapw();
			cls();
			cnt=1;
			for(int i=1;i<=ans;i++){
				x=csdx[cnt],y=csdy[cnt];
				while(x!=zdx[cnt]||y!=zdy[cnt]){
					cls();
					mapp();
					if(GetAsyncKeyState('F')){
						goto L1;
					}
					if(map1[x+1][y][cnt]==3){
						if(x-5>=1&&map1[x-5][y][cnt]!=1&&map1[x-1][y][cnt]!=1&&map1[x-2][y][cnt]!=1&&map1[x-3][y][cnt]!=1&&map1[x-4][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=5;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2||map1[x+1][y][cnt]==2||map1[x+2][y][cnt]==2||map1[x+3][y][cnt]==2||map1[x+4][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else if(map1[x][y][cnt]==3){
								if(x-1==1){
									map1[x][y][cnt]=5;
								}
								else{
									x--;
									map1[x][y][cnt]=5;
								}
							}
							else map1[x][y][cnt]=5;
						}else if(x-4>=1&&map1[x-4][y][cnt]!=1&&map1[x-1][y][cnt]!=1&&map1[x-2][y][cnt]!=1&&map1[x-3][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=4;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2||map1[x+1][y][cnt]==2||map1[x+2][y][cnt]==2||map1[x+3][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else if(map1[x][y][cnt]==3){
								if(x-1==1){
									map1[x][y][cnt]=5;
								}
								else{
									x--;
									map1[x][y][cnt]=5;
								}
							}
							else map1[x][y][cnt]=5;
						}else if(x-3>=1&&map1[x-3][y][cnt]!=1&&map1[x-1][y][cnt]!=1&&map1[x-2][y][cnt]!=1&&map1[x-3][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=3;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2||map1[x+1][y][cnt]==2||map1[x+2][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else if(map1[x][y][cnt]==3){
								if(x-1==1){
									map1[x][y][cnt]=5;
								}
								else{
									x--;
									map1[x][y][cnt]=5;
								}
							}
							else map1[x][y][cnt]=5;
						}else if(x-2>=1&&map1[x-2][y][cnt]!=1&&map1[x-1][y][cnt]!=1&&map1[x-2][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=2;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2||map1[x+1][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else if(map1[x][y][cnt]==3){
								if(x-1==1){
									map1[x][y][cnt]=5;
								}
								else{
									x--;
									map1[x][y][cnt]=5;
								}
							}
							else map1[x][y][cnt]=5;
						}else if(x-1>=1&&map1[x-1][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=1;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else if(map1[x][y][cnt]==3){
								if(x-1==1){
									map1[x][y][cnt]=5;
								}
								else{
									x--;
									map1[x][y][cnt]=5;
								}
							}
							else map1[x][y][cnt]=5;
						}
						Sleep(50);
					}if(map1[x+1][y][cnt]==2){
						map1[x][y][cnt]=0;
						map1[csdx[cnt]][csdy[cnt]][cnt]=5;
						x=csdx[cnt],y=csdy[cnt];
					}
					if(map1[x+1][y][cnt]!=1){
						map1[x][y][cnt]=0;
						x++;
						if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
						else if(map1[x][y][cnt]==2){
							map1[csdx[cnt]][csdy[cnt]][cnt]=5;
							x=csdx[cnt],y=csdy[cnt];
						}
						else map1[x][y][cnt]=5;
						Sleep(50);
					}

					if(GetAsyncKeyState('D')){
						if(y<maxy[cnt]&&map1[x][y+1][cnt]!=1){
							if(map1[x][y+1][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else{
								if(map1[x][y][cnt]==2){
									map1[x][y][cnt]=2;
									map1[csdx[cnt]][csdy[cnt]][cnt]=5;
									x=csdx[cnt],y=csdy[cnt];
								}
								else{
									y++;
									map1[x][y-1][cnt]=0;
									map1[x][y][cnt]=5;
								}
							}
						}else if(x>1&&y<maxy[cnt]&&map1[x][y-1][cnt]==1&&map1[x-1][y-1][cnt]!=1){
							map1[x][y][cnt]=0;
							x--,y++;
							if(map1[x][y][cnt]==2){
								x=csdx[cnt],y=csdy[cnt];
								map1[x][y][cnt]=5;
							}
							else map1[x][y][cnt]=5;
							Sleep(100);
						}
						Sleep(50);
					}
					if(GetAsyncKeyState('A')){
						if(y>1&&map1[x][y-1][cnt]!=1){
							if(map1[x][y+1][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else{
								map1[x][y][cnt]=0;
								y--;
								if(map1[x][y][cnt]==2){
									map1[x][y][cnt]=2;
									map1[csdx[cnt]][csdy[cnt]][cnt]=5;
									x=csdx[cnt],y=csdy[cnt];
								}else if(x>=0&&y<maxx[cnt]&&map1[x][y+1][cnt]==1&&map1[x-1][y+1][cnt]!=1){
									map1[x][y][cnt]=0;
									x--,y--;
									map1[x][y][cnt]=5;
									Sleep(100);
								}
								else map1[x][y][cnt]=5;
							}
						}else if(x>=1&&y>=1&&map1[x][y-1][cnt]==1&&map1[x-1][y-1][cnt]!=1){
							map1[x][y][cnt]=0;
							x--,y--;
							if(map1[x][y][cnt]==2){
								x=csdx[cnt],y=csdy[cnt];
								map1[x][y][cnt]=5;
							}
							else map1[x][y][cnt]=5;
							Sleep(100);
						}
						Sleep(50);
					}
					if(GetAsyncKeyState('W')){
						if(x-3>=1&&map1[x+1][y][cnt]==1&&x>=0&&map1[x-3][y][cnt]!=1&&map1[x-1][y][cnt]!=1&&map1[x-2][y][cnt]!=1&&map1[x-3][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=3;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2||map1[x+1][y][cnt]==2||map1[x+2][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else map1[x][y][cnt]=5;
						} else if(x-2>=1&&map1[x+1][y][cnt]==1&&x>=1&&map1[x-2][y][cnt]!=1&&map1[x-1][y][cnt]!=1&&map1[x-2][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=2;
							if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else if(map1[x][y][cnt]==2||map1[x+1][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else map1[x][y][cnt]=5;
						} else if(x-1>=1&&map1[x+1][y][cnt]==1&&x>=1&&map1[x-1][y][cnt]!=1){
							map1[x][y][cnt]=0;
							x-=1;
							if(map1[x][y][cnt]==2){
								map1[x][y][cnt]=2;
								map1[csdx[cnt]][csdy[cnt]][cnt]=5;
								x=csdx[cnt],y=csdy[cnt];
							}
							else if(map1[x][y][cnt]==3){
								map1[x][y][cnt]=0;
								y++;
								while(map1[x][y][cnt]==3){
									x--;
								}
								map1[x][y][cnt]=5;
							}
							else map1[x][y][cnt]=5;
						}
						Sleep(50);
					}
				}
				cls();
				cnt++;
			}
			cout<<"恭喜获胜!\n";
			map1[n][m][cnt]=6;
			Sleep(1000);
			map1[x][y][cnt]=7;
			map1[csdx[cnt]][csdy[cnt]][cnt]=5;
			cnt=1;
			goto L3;
		}
		else if(c=='6'){
			cls();
			cout<<"存档码:"<<s<<endl;
			char c1111111;
			c1111111=getchar();
			goto L1;
		}
		else if(c=='8'){
			s+="^";
			s+=f(n);
			s+="*";
			s+=f(m);
			s+="*";
			w=7;
			map1[n][m][cnt]=7;
			map1[n][m][cnt]=6;
			zdx[cnt]=n;
			zdy[cnt]=m;
			goto L1;
		}
		else if(c=='7'){
            cout<<"全部删去请输入100\n";
			int qk;
			cin>>qk;
			if(qk==100){
				for(int i=1;i<=maxx[cnt];i++){
					for(int j=1;j<=maxy[cnt];j++){
						map1[i][j][cnt]=0;
					}
				}
			}
			map1[n][m][cnt]=6;
			w=0;
			goto L1;
		}
		else if(c=='0'){
			return 0;
		}
		else{
			cout<<"输入出错!";
			Sleep(1000);
			cls();
			goto L1;
		}
	}
    if(n=='2'){
    	cout<<"请输入存档码\n";
    	getline(cin,s);
    	char last='\0';
    	cnt=0;
		ans=0;
    	int lastpos=0,pos=0,count=0;
    	int sumx=0,sumy=0;
    	for(int i=0;i<=s.length()-1;i++){
    		if(s[i]=='*'&&last=='('&&count==0){
				maxx[cnt]=ff(s.substr(lastpos+1,i-lastpos-1));
				count=100;
				pos=i;
			}
			else if(s[i]=='('){
				ans++;
				cnt++;
				count=0;
				last='(';
				lastpos=i;
			}
			else if(s[i]=='*'&&count==100){
				maxy[cnt]=ff(s.substr(pos+1,i-pos-1));
				count++;
				pos=i;
			}
			else if(s[i]=='@'){
				lastpos=i;
				last='@';
			}
			else if(last=='@'&&s[i]=='*'&&count!=1){
				sumx=ff(s.substr(lastpos+1,i-lastpos-1));
				pos=i;
				count=1;
			}
			else if(last=='@'&&s[i]=='*'&&count==1){
				sumy=ff(s.substr(pos+1,i-pos-1));
				map1[sumx][sumy][ans]=1;
				pos=i;
				count=2;
			}
			else if(s[i]=='#'){
				lastpos=i;
				last='#';
			}
			else if(last=='#'&&s[i]=='*'&&count!=1){
				sumx=ff(s.substr(lastpos+1,i-lastpos-1));
				pos=i;
				count=1;
			}
			else if(last=='#'&&s[i]=='*'&&count==1){
				sumy=ff(s.substr(pos+1,i-pos-1));
				map1[sumx][sumy][ans]=2;
				pos=i;
				count=2;
			}
			else if(s[i]=='$'){
				lastpos=i;
				last='$';
			}
			else if(last=='$'&&s[i]=='*'&&count!=1){
				sumx=ff(s.substr(lastpos+1,i-lastpos-1));
				pos=i;
				count=1;
			}
			else if(last=='$'&&s[i]=='*'&&count==1){
				sumy=ff(s.substr(pos+1,i-pos-1));
				map1[sumx][sumy][ans]=3;
				pos=i;
				count=2;
			}
			else if(s[i]=='%'){
				lastpos=i;
				last='%';
			}
			else if(last=='%'&&s[i]=='*'&&count!=1){
				sumx=ff(s.substr(lastpos+1,i-lastpos-1));
				pos=i;
				count=1;
			}
			else if(last=='%'&&s[i]=='*'&&count==1){
				sumy=ff(s.substr(pos+1,i-pos-1));
				map1[sumx][sumy][ans]=5;
				csdx[cnt]=sumx;
				csdy[cnt]=sumy;
				pos=i;
				count=2;
			}
			else if(s[i]=='^'){
				lastpos=i;
				last='^';
			}
			else if(last=='^'&&s[i]=='*'&&count!=1){
				sumx=ff(s.substr(lastpos+1,i-lastpos-1));
				pos=i;
				count=1;
			}
			else if(last=='^'&&s[i]=='*'&&count==1){
				sumy=ff(s.substr(pos+1,i-pos-1));
				map1[sumx][sumy][ans]=7;
				zdx[cnt]=sumx;
				zdy[cnt]=sumy;
				pos=i;
				count=2;
			}
		}
		cnt=1;
		goto L3;
	}
    return 0;
}

最后:请大家多多支持未来工作室ヾ(•ω•`)o

郑思予在2021-08-08 21:27:29追加了内容

代码好像被"**"了

这是云剪切板

郑思予在2021-08-09 06:55:42追加了内容

游戏介绍:creator 自定义跑酷

自定义:可以自己创造的跑酷地图的游戏

☆   :移动WSAD,表示放置方块位置

 

郑思予在2021-08-09 06:56:55追加了内容

♀:人物 移动WSAD

▲:终点

 

郑思予在2021-08-10 11:41:34追加了内容

https://www.luogu.com.cn/paste/ovnyzfru


0
已采纳
张展嘉
张展嘉
新手天翼
新手天翼

结帖吧,怕有人抄袭

0
朱小川
朱小川
缔造者
缔造者

你这游戏有点麻烦,输入一个,整个电脑在抖

0
0
0
0
我要回答