专栏文章

游戏

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio2zdt1
此快照首次捕获于
2025/12/02 12:31
3 个月前
此快照最后确认于
2025/12/02 12:31
3 个月前
查看原文
本人的迷宫游戏,会更新,绝对自己写,如发现雷同,那我绝对是真的!
CPP
#include<windows.h>
#include<bits/stdc++.h>
#include<conio.h>
#define int long long
using namespace std;

string s[105];
char c;
int q,f,t;
void color(int a){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void out(string s){
	for(int i=0;i<s.size();i++){
		cout<<s[i];
		cout.flush();
		Sleep(30);
	} 
	cout<<endl;
}
int mg(int n){
    // 清空之前的迷宫数据
    for(int i=1;i<=100;i++)s[i]="";
    
    if(n==1){
        s[1]="#######";
        s[2]="#   #+#";
        s[3]="# # # #";
        s[4]="# # # #";
        s[5]="# ### #";
        s[6]="#     #";
        s[7]="#######";
        return 7;
    }
    if(n==2){
        s[1]="########";
        s[2]="#  #   #";
        s[3]="# #  # #";
        s[4]="#   #  #";
        s[5]="### # ##";
        s[6]="# # #  #";
        s[7]="#    #+#";  // 修复重复定义s[6]的问题
        s[8]="########";
        return 8;
    }
    if(n==3){
        s[1]= "##########";
        s[2]= "#    #   #";
        s[3]= "# ##   # #";
        s[4]= "# #  # # #";
        s[5]= "# ## ##  #";
        s[6]= "# -###  ##";
        s[7]= "###    # #";
        s[8]= "#+ # # # #";
        s[9]= "#-   #   #";  // 修复重复定义s[6]的问题
        s[10]="##########";
        return 10;
    }
    if(n==4){
        s[1]= "############";
        s[2]= "#   #      #";
        s[3]= "# #-#-#### #";
        s[4]= "#  # #  #  #";
        s[5]= "##    # # ##";
        s[6]= "#+###   #  #";
        s[7]= "#   # #   ##";
        s[8]= "# # #  ### #";
        s[9]= "# #- #  #  #";
        s[10]="#  #  # # ##";
        s[11]="#-  *      #";
        s[12]="############";
        return 12;
    }
	if(n==5){
        s[1]= "###############";
        s[2]= "#        #    #";
        s[3]= "# ## -##v#v-# #";
        s[4]= "# #  #  # ##  #";
        s[5]= "#  # # #  #  ##";
        s[6]= "## #  #  #  # #";
        s[7]= "#   # # #     #";
        s[8]= "# #-#*#   ### #";
        s[9]= "#  #- # ##  # #";
        s[10]="## *##     ## #";
        s[11]="#+##   #  #  ##";
        s[12]="#   ###  -# #-#";
        s[13]="# # #   ##  # #";
        s[14]="#-    #       #"; 
        s[15]="###############";
        return 15;
    }
    if(n=-1){
        s[1]= "########################";
        s[2]= "# #  v#t -# *h*-   *  *#";
        s[3]= "#  *##-# #  ---#* -v#-*#";
        s[4]= "# - #* #*# -v***#####**#";
        s[5]= "## * #   # -#vh   --#-*#";
        s[6]= "#v*#vt## #  --*#v * #**#";
        s[7]= "### #v#  #- #--##v -#-*#";
        s[8]= "# #v*# *#  *v## -#hh#-*#";
        s[9]= "#h#-  ##  ###  v#   ##*#";
        s[10]="# ## #  h#v  # # *--#-*#";
        s[11]="# v  * ##-##   #*   #**#";
        s[12]="#*-#  #   - ####v*# #-*#";
        s[13]="# # v * ####-   ##  #-*#";
        s[14]="#  *#* #***   # #  #-**#";
        s[15]="#-v#-v#*   #  # # ##-*-#";
        s[16]="### ##v#v#  #-# #  #v**#";
        s[17]="#-# -###--#  #* #**-#-*#";
        s[18]="#** #v*v#h*# # -#v *#-*#";
        s[19]="#**#v*v*v#-* v* *#  -**#";
        s[20]="#**-#-#- #  - - # *--**#";
        s[21]="#**#*# #h-  -v- #-  #-*#";
        s[22]="#**#h#h#t- *- - #  #vh*#";
        s[23]="#**-v -####v#-#v# -#+#*#";
        s[24]="#t#*#  *h*   * ## * #-*#";
        s[25]="########################";
        return 25;
    }
    return 7;
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    srand(time(0));
    out(" -寿司猫工作室-");
    Sleep(1500);
    out("   迷宫游戏"); 
    out("   ########");
    out("   #o#    #");
    out("   #   # ##");
    out("   ##### +#");
    out("   ########");
    Sleep(1175);
    out("教程:#是墙");
    out("教程:+是终点");
    out("教程:-是复位");
    out("教程:*是眩晕"); 
    out("教程:v是传送带");
    out("教程:t是钥匙");
    out("教程:h是门");
    out("提示:请转到英文输入法游玩"); 
    out("输入r重开");
    out("      w ");
    out("    a s d ");
    out("  操控移动 ");
    out("输入任意键进入游戏");
    c=getch(); 
    for(int k=1;k<=5;k++){
        int x=2,y=1;  // 调整起始位置,确保在通路
        int m=mg(k);
        f=0;
        t=0;
        while(true){
            system("cls");
            // 输出迷宫
            for(int i=1;i<=m;i++){
                for(int j=0;j<s[i].size();j++){
                    if(i==x && j==y){
                    	color(11);
						cout<<'o';
					}
                    else if(s[i][j]=='*'){
                    	color(13);
						cout<<'*';
					}
                    else if(s[i][j]=='-'){
                    	color(4);
						cout<<'-';
					}
                    else if(s[i][j]=='+'){
                    	color(14);
						cout<<'+';
					}
                    else if(s[i][j]=='v'){
                    	color(12);
						cout<<'v';
					}
                    else{
                    	color(15);
						cout<<s[i][j];
					} 
                    cout.flush();
                }
                cout<<endl;  // 每行结束换行
            }
            
            // 检查是否到达目标
            if(s[x][y]=='+'){
            	Sleep(30);
            	break;
			}
            
            // 读取按键
            c=getch();
            // 根据按键移动,检查边界和墙壁
            if(c=='r'){
            	x=2;
            	y=1;
            	f=0;
				t=0; 
			} 
            if(c=='w') q=1;
            if(c=='a') q=2;
            if(c=='s') q=3;
            if(c=='d') q=4; 
            if(f==1) q=q%4+1;
            if(q==1 && s[x-1][y]!='#'&&(s[x-1][y]=='h'&&t==1||s[x-1][y]!='h')) x--;
            if(q==2 && s[x][y-1]!='#'&&(s[x][y-1]=='h'&&t==1||s[x][y-1]!='h')) y--;
            if(q==3 && s[x+1][y]!='#'&&(s[x+1][y]=='h'&&t==1||s[x+1][y]!='h')) x++;
            if(q==4 && s[x][y+1]!='#'&&(s[x][y+1]=='h'&&t==1||s[x][y+1]!='h')) y++;
            if(s[x][y]=='-'){
            	x=2;
            	y=1;
            	f=0;
			}
            if(s[x][y]=='t'){
            	t=1;
			}
            if(s[x][y]=='v'){
            	x++;
			}
			if(s[x][y]=='*'){
            	f=1;
			} 
        }
    }
    
    system("cls");
    out("恭喜通关所有关卡!");
    c=getch();
	out("吗?"); 
	Sleep(1000);
	if(c!='='){
		int x=2,y=1;
        int m=mg(-1);
        f=0;
        t=0;
        while(true){
            system("cls");
            // 输出迷宫
            for(int i=1;i<=m;i++){
                for(int j=0;j<s[i].size();j++){
                    if(i==x && j==y){
                    	color(11);
						cout<<'o';
					}
                    else if(s[i][j]=='*'){
                    	color(13);
						cout<<'*';
					}
                    else if(s[i][j]=='-'){
                    	color(4);
						cout<<'-';
					}
                    else if(s[i][j]=='+'){
                    	color(14);
						cout<<'+';
					}
                    else if(s[i][j]=='v'){
                    	color(12);
						cout<<'v';
					}
                    else{
                    	color(15);
						cout<<s[i][j];
					} 
                    cout.flush();
                    if(rand()%5==0) Sleep(1);
                }
                Sleep(5);
                cout<<endl;  // 每行结束换行
            }
            
            // 检查是否到达目标
            if(s[x][y]=='+'){
            	Sleep(30);
            	break;
			}
            
            // 读取按键
            c=getch();
            // 根据按键移动,检查边界和墙壁
            if(c=='r'){
            	x=2;
            	y=1;
            	f=0;
				t=0; 
			} 
            if(c=='w') q=1;
            if(c=='a') q=2;
            if(c=='s') q=3;
            if(c=='d') q=4; 
            if(f==1) q=q%4+1;
            if(q==1 && s[x-1][y]!='#'&&(s[x-1][y]=='h'&&t==1||s[x-1][y]!='h')) x--;
            if(q==2 && s[x][y-1]!='#'&&(s[x][y-1]=='h'&&t==1||s[x][y-1]!='h')) y--;
            if(q==3 && s[x+1][y]!='#'&&(s[x+1][y]=='h'&&t==1||s[x+1][y]!='h')) x++;
            if(q==4 && s[x][y+1]!='#'&&(s[x][y+1]=='h'&&t==1||s[x][y+1]!='h')) y++;
            if(s[x][y]=='-'){
            	x=2;
            	y=1;
            	f=0;
			}
            if(s[x][y]=='t'){
            	t=1;
			}
            if(s[x][y]=='v'){
            	x++;
			}
			if(s[x][y]=='*'){
            	f=1;
			} 
        }
    }
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...