#include<bits/stdc++.h> #include<windows.h> #include<time.h> #include<stdlib.h> #include<conio.h> using namespace std; //PS:如果你可以用自己的身躯吃掉符号也可以,我没加判断。 char box[101][101]; //可以理解为地图 int n;//几号地图 int eexit=1;//这个可以去掉,但懒得去 int maxguanqia=1;//关卡有几个 int plx,ply;//位置 char sr;//读入的东西 void color(int a)//颜色函数,不需要记,只要懂得抄就行了,只是为了好看 { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a); } void intel1(){//显示第一张地图 box[plx][ply]=2; for(int i=1;i<=8;i++){ for(int j=1;j<=8;j++){//双重循环打印 if(box[i][j]==‘#‘)color(5);//颜色判定 else if(box[i][j]==15)color(6); else if(box[i][j]==2)color(9); else if(box[i][j]==14)color(15); cout<<box[i][j]; }cout<<endl;//换行 } } void g1sd(){//初始化第一张地图 for(int i=3;i<=5;i++)box[1][i]=‘#‘;//编辑地图,很累 box[2][3]=‘#‘;box[2][5]=‘#‘; box[3][3]=‘#‘;for(int i=5;i<=8;i++)box[3][i]=‘#‘; for(int i=1;i<=3;i++)box[4][i]=‘#‘;box[4][8]=‘#‘; box[5][1]=‘#‘;for(int i=6;i<=8;i++)box[5][i]=‘#‘; for(int i=1;i<=4;i++)box[6][i]=‘#‘;box[6][6]=‘#‘; box[7][4]=‘#‘;box[7][6]=‘#‘; for(int i=4;i<=6;i++)box[8][i]=‘#‘; box[4][4]=15; box[4][6]=15; box[5][4]=15; box[6][5]=15; box[2][4]=14; box[5][2]=14; box[4][7]=14; box[7][5]=14; plx=5;ply=5; box[plx][ply]=2; } int main(){ while(eexit==1){//直接改while(1)得了,弄退出基本没有用 for(int i=1;i<=100;i++){//重置 for(int j=1;j<=100;j++){ box[i][j]=‘ ‘; } } color(3);//上色,标标题什么的 system("title 推箱子测试版1.0"); printf("要联系本程序作者请找QQ\nQQ:1095832103\n输入关卡(1-1):"); scanf("%d",&n);//输入地图编号 if(n>maxguanqia)n=maxguanqia;//判断,超过选择当前最大地图 if(n==1){system("cls");g1sd();intel1();//显示 int eeexit=1;//假若没有完成就一直继续,想退出自己加上去 while(eeexit==1){//是0就回去 int hh=0; for(int i=1;i<=8;i++){//循环 for(int j=1;j<=8;j++){ if(box[i][j]==14)hh++;//判断 } } if(hh==0)eeexit=0; else{ if(kbhit()){ sr=getch(); } switch(sr) { case ‘w‘:if(box[plx-1][ply]!=‘#‘){if(box[plx-1][ply]==15&&box[plx-2][ply]!=‘#‘){box[plx][ply]=‘ ‘;plx--;box[plx-1][ply]=15;}else if(box[plx-1][ply]!=15){box[plx][ply]=‘ ‘;plx--;}sr=‘l‘;}break;//上 case ‘s‘:if(box[plx+1][ply]!=‘#‘){if(box[plx+1][ply]==15&&box[plx+2][ply]!=‘#‘){box[plx][ply]=‘ ‘;plx++;box[plx+1][ply]=15;}else if(box[plx+1][ply]!=15){box[plx][ply]=‘ ‘;plx++;}sr=‘l‘;}break;//下 case ‘a‘:if(box[plx][ply-1]!=‘#‘){if(box[plx][ply-1]==15&&box[plx][ply-2]!=‘#‘){box[plx][ply]=‘ ‘;ply--;box[plx][ply-1]=15;}else if(box[plx][ply-1]!=15){box[plx][ply]=‘ ‘;ply--;}sr=‘l‘;}break;//左 case ‘d‘:if(box[plx][ply+1]!=‘#‘){if(box[plx][ply+1]==15&&box[plx][ply+2]!=‘#‘){box[plx][ply]=‘ ‘;ply++;box[plx][ply+1]=15;}else if(box[plx][ply+1]!=15){box[plx][ply]=‘ ‘;ply++;}sr=‘l‘;}break;//右 default:break; } intel1(); Sleep(100);//别闪 太快看不清 system("cls"); } } } system("cls");cout<<"You win\n";Sleep(2000);system("cls"); } return 0; }
咱用手敲出推箱子,只有一关,挺简单的,就是循环判断什么的。初期的东西不需要耗太多时间,练练手就可以。
时间: 2024-11-04 18:38:10