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追加了内容
0
0
0
汪宇航
新手启示者
新手启示者
0
刘宇航
修练者
修练者
0
0