问题标题: 走迷宫0.0版本

1
0
马博闻
马博闻
新手守护
新手守护

代码:

#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <cstdio>
using namespace std;
string map[25][25];//20*20的地图
int cho,sea,dif,g_cnt,go_pl=10; //金币初始为10(买一个炸药) 
struct yy{
    int x,y,h;//map[x][y]
}goa[400],pl;//金币;玩家 
int main(){
//    freopen("sead.txt","r",stdin);
//    cin>>sea;
//    fclose(stdin);
//    freopen("sead.txt","w",stdout);
//    int sea1;
//    for(int i=1;i<=sea;i++)sea1=rand();
//    cout<<sea1;
//    fclose(stdout);
    cout<<"请输入一个随机的地图种子\n";
    cin>>sea;//地图种子 
    cout<<"请输入难度(1-3)\n";
    cin>>dif;
    int sc=5-dif,sc1=dif*400,tl=(5-dif)*50;
    pl.x=1;
    pl.y=1;
    cout<<"生成地图中,请稍后...\n";
    while(sea--){//生成地图 
        for(int i=1;i<=20;i++){
            for(int j=1;j<=20;j++){
                if(rand()%sc==1)map[i][j]="##";
                else            map[i][j]="  ";
            }
        }
    } 
    map[1][1]="  "; 
    map[20][20]="  "; 
    cout<<"按动w/s/a/d开始游戏\n";
    while(1){
        cho=getch();
        map[pl.x][pl.y]="  ";
        for(int i=1;i<=20;i++){
            for(int j=1;j<=20;j++){
                if(rand()%sc1==1&&map[i][j]=="  "){//生成新的金币 
                    g_cnt++;
                    goa[g_cnt].x=i;
                    goa[g_cnt].y=j;
                }
                if(map[i][j]=="go")map[i][j]="  "; //取消老的金币 
            }
        }
        if(cho=='w'){
            if(pl.x>1&&map[pl.x-1][pl.y]!="##")pl.x--;system("cls");
        }else if(cho=='s'){
            if(pl.x<20&&map[pl.x+1][pl.y]!="##")pl.x++;system("cls");
        }else if(cho=='a'){
            if(pl.y>1&&map[pl.x][pl.y-1]!="##")pl.y--;system("cls");
        }else if(cho=='d'){
            if(pl.y<20&&map[pl.x][pl.y+1]!="##")pl.y++;system("cls");
        }
        if(cho=='e'){//商店 
            system("cls");
            cout<<"1.面包:2金币 (增加10体力)\n2.肉:4金币 (增加25体力)\n3.炸药:10金币 (破环以你为中心5*5的障碍)\n4.退出";
            char cho1;
            cho1=getch();
            if(cho1=='1'&&go_pl>=2){
                go_pl-=2;
                tl+=10;
            }else if(cho1=='2'&&go_pl>=4){
                go_pl-=4;
                tl+=25;
            }else if(cho1=='3'&&go_pl>=10){
                go_pl-=10;
                for(int n=pl.x-2;n<=pl.x+2;n++){
                    for(int m=pl.y-2;m<=pl.y+2;m++){
                        map[n][m]="  ";
                    }
                }
            }
            system("cls");
        }
        for(int i=1;i<=g_cnt;i++){
            if(pl.x==goa[i].x&&pl.y==goa[i].y&&goa[i].h==0){
                go_pl++;//捡金币 
                goa[i].h=1;//这个金币已经捡过了 
            }
            if(goa[i].h==0)map[goa[i].x][goa[i].y]="go";
        }
        map[pl.x][pl.y]="Yo";
        tl--;
        if(tl==0){
            system("cls");
            cout<<"you die...";
            return 0;
        }
        cout<<"金币:"<<go_pl<<"  体力:"<<tl<<endl;
        for(int i=1;i<=20;i++){
            for(int j=1;j<=20;j++){
                cout<<map[i][j];
            }
            cout<<endl;
        }
        if(pl.x==20&&pl.y==20){
            system("cls");
            cout<<"you win!";
            return 0;
        }
    }
    return 0;
}

复制到DEV C++


1
吴子轩
吴子轩
高级守护
高级守护

a没有终点吗

不应该设一个终点(或者说传送门,回到主界面,重新选关卡)

1
吴子轩
吴子轩
高级守护
高级守护

或者搞一个数组,记一下最高分数

0
马博闻
马博闻
新手守护
新手守护

走迷宫0.0版本作品介绍:

1.进入游戏
进入游戏后你会看到这个问题:


这是你只需随机输入一个数(最好在10000以内)即可
然后就可以输入本局游戏的难度(1—3)

 

2.开始游戏
开始游戏后你会看到一张迷宫地图


此时只需按动"w","s","a","d"四个键就可以移动在左上角的玩家(必须用英文输入法)
游戏过程中可以捡那些"go",他们是金币,按"e"键唤出交易栏

 

3.胜利与失败
当你走到地图的右下角时你就胜利;当你的体力耗尽时你就失败
体力可以通过交易栏里的物品获得

0
林鄧天樂
林鄧天樂
中级光能
中级光能

怎么多代码是你复制的吗?

0
马博闻
马博闻
新手守护
新手守护

注意:

本游戏完全为个人原创,代码都是自己写的。

请大家不要抄袭!

谢谢。

0
0
马博闻
马博闻
新手守护
新手守护

正版已经在酷丁平台上发布

请大家多点赞!

谢谢。

0
0
0
谈睿
谈睿
初级光能
初级光能

走迷宫0.0版本作品介绍:

1.进入游戏
进入游戏后你会看到这个问题:

我要回答