用c++写一个的一个推箱子小游戏

简介: 用c++写一个的一个推箱子小游戏

image.png

相信各位都肯定完整这种推箱子的小游戏。游戏玩法很简单,那就是一个人把所有的箱子推动到对应的位置那就可以赢了。那么我们接下来看看这个推箱子的游戏改怎么写。

char map[10][10]=
    {
        {'#','#','#','#','#','#','#','#','#','#'},
        {'#','#','#','#',' ',' ','!',' ',' ','#'},
        {'#',' ',' ',' ',' ','o',' ',' ',' ','#'},
        {'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
        {'#','#',' ','#','#','#',' ','#','#','#'},
        {'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
        {'#',' ',' ',' ',' ',' ',' ',' ',' ','#'},
        {'#','#',' ','#',' ','#','#','#','#','#'},
        {'#','#',' ',' ',' ',' ',' ','x','#','#'},
        {'#','#','#','#','#','#','#','#','#','#'}
    };
    void DrawMap(){
        for(int i=0;i<=9;i++){
            for(int j=0;j<=9;j++){
                cout<<map[i][j];
            }
            cout<<endl;
        }
    }

首先先画出地图,这里面的#是墙壁,x是终点,o是推动的箱子,然后!是人,空的字符就是通道。别看界面比较简陋,我们学的是算法,只要思想学会了,随便移植到哪个有界面的程序都是可以的。

                int r,l;              //人的下标 
        for(int i=0;i<=9;i++){
            for(int j=0;j<=9;j++){
                if(map[i][j]=='!'){
                    r=i;          //r,l相当于地图的宽度和长度 
                    l=j;
                }
            } 
        }

在一开始我们需要遍历,并且获取人的坐标。

cout<<"please enter w(up) s(down) a(left) b(right)"<<endl;
        char ch;
        cin>>ch; 
        if(ch=='w'||ch=='W'){         
            if(map[r-1][l]==' '){   //若往上走没有障碍物 
                map[r][l]==' ';      
                map[r-1][l]='!';    //走上去    
            }
            if(map[r-1][l]=='o'){    //若上面有箱子 
                if(map[r-2][l]==' '||map[r-2][l]=='x'){    //因为要推着箱子走,所以要确保上面的上面还可以走或者到达终点 
                    map[r-2][l]='o';
                    map[r-1][l]='!';
                    map[r][l]=' '; 
                } 
            }
        }
        if(ch=='s'||ch=='S'){
            if(map[r+1][l]==' '){
                map[r][l]=' ';
                map[r+1][l]='!';
            }
            if(map[r+1][l]=='o'){
                if(map[r+2][l]==' '||map[r+2][l]=='x'){
                    map[r+2][l]='o';
                    map[r+1][l]='!';
                    map[r][l]=' ';
                }
            }
        }
        if(ch=='a'||ch=='A'){
            if(map[r][l-1]=' '){
                map[r][l]=' ';
                map[r][l-1]='!';
            }
            if(map[r][l-1]=='o'){
                if(map[r][l-2]==' '||map[r][l-2]=='x'){
                    map[r][l-2]='o';
                    map[r][l-1]='!';
                    map[r][l]=' ';
                }
            }
        }
        if(ch=='d'||ch=='D'){
            if(map[r][l+1]==' '){
                map[r][l+1]='!';
                map[r][l]=' ';
            }
            if(map[r][l+1]=='o'){
                if(map[r][l+2]==' '||map[r][l+2]=='x'){
                map[r][l+2]='o';
                map[r][l+1]='!';
                map[r][l]=' ';
            }
                
            }
            
        }

这里就是进行wsad的上下左右操作。然后操作时候需要判空,判断人是否可以走动。如果是墙壁就不能走动。如果是箱子,那还有判断箱子的前一格是否可以走动,可以的话就直接推箱子了。

总的来说这种游戏并不算太难。如果是多个关卡的话,可以选择加一个关卡地图配置文件。然后让游戏策划进行配置。设计游戏的地图才是这游戏的难点所在。

有想要学习如何做游戏的,可以关注公众号:诗一样的代码,找我一起学习。

相关文章
|
11月前
|
C++
推箱子小游戏(c++实现)
推箱子小游戏(c++实现)
|
算法 定位技术 C++
【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++
简单的来说,算法就是用计算机程序代码来实现数学思想的一种方法。学习算法就是为了了解它们在计算机中如何演算,以及在当今的信息时代,它们是如何在各个层面上影响我们的日常生活的,从而提高我们的逻辑思维能力和处理实际问题的能力。善用算法、巧用算法,是培养程序设计逻辑的重中之重,许多实际的问题都可用多个可行的算法来解决, 但是要从中找出最优的解决算法却是一项挑战。
490 6
【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++
C++急速赛车小游戏(注释几天后更新)
C++急速赛车小游戏(注释几天后更新)
218 0
C++急速赛车小游戏(注释几天后更新)
【推荐福利】c++使用easyx做出像素鸟,简单上手小游戏
【推荐福利】c++使用easyx做出像素鸟,简单上手小游戏
c++【键盘读入操作】,两种方法做小游戏的控制摇杆
c++【键盘读入操作】,两种方法做小游戏的控制摇杆
c++【键盘读入操作】,两种方法做小游戏的控制摇杆
|
算法 C++
c++编写简易版2048小游戏
c++编写简易版2048小游戏
c++循环、continue、排序、goto以及猜数字小游戏
c++循环、continue、排序、goto以及猜数字小游戏
|
人工智能 定位技术 C++
C++实用编程——坦克大战小游戏
我们直接看代码吧,适于win XP和win 7,win 10 画质有些毒瘤 #include <stdio.h> #include <windows.h> #include <time.
22956 0