经典小游戏--推箱子

 //0是空位,1是墙,2是人,3是箱子,4是终点

            int[][,] a = new int[2][,];
            int[,] b0 = new int[10, 10]{
            {1,1,1,1,1,1,1,1,1,1},
            {1,0,0,0,1,0,1,0,0,1},
            {1,0,0,0,1,0,1,0,0,1},
            {1,0,3,0,1,0,1,0,0,1},
            {1,0,0,0,1,1,1,0,0,1},
            {1,0,0,0,0,0,0,0,0,1},
            {1,0,0,1,0,0,0,0,0,1},
            {1,2,0,1,1,1,1,0,0,1},
            {1,0,0,1,0,4,0,0,0,1},
            {1,1,1,1,1,1,1,1,1,1}};
            int[,] b1 = new int[10, 10]{
            {1,1,1,1,1,1,1,1,1,1},
            {1,0,0,0,1,0,1,0,0,1},
            {1,0,3,0,1,0,1,3,0,1},
            {1,0,0,0,1,0,1,0,0,1},
            {1,0,0,0,1,1,1,0,0,1},
            {1,0,0,0,0,0,0,0,0,1},
            {1,0,0,1,4,0,0,0,0,1},
            {1,2,0,1,1,1,1,0,0,1},
            {1,0,0,1,0,4,0,0,0,1},
            {1,1,1,1,1,1,1,1,1,1}};
            //int[,]b2=new int[15,15]{
            //{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
            //{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}}  

            a[0] = b0;
            a[1] = b1;

            for (int z = 0; z < 2; z++)    //如果增加地图,需修改判断条件
            {
                Console.Clear();
                Console.WriteLine("第{0}关!", z + 1);

                ConsoleKeyInfo start = Console.ReadKey();
                string st = start.Key.ToString();
                st = st.ToLower();

                //游戏开始
                if (st == "spacebar")
                {
                    int[,] map = a[z];    //取出地图

                    //判断人的位置,i为行,j为列
                    int i = 0, j = 0;
                    for (int m = 0; m < 10; m++)
                    {
                        for (int n = 0; n < 10; n++)
                        {
                            if (map[m, n] == 2)
                            {
                                i = m;
                                j = n;
                                break;
                            }
                        }
                    }

                    //判断终点个数
                    int over = 0;
                    for (int m = 0; m < 10; m++)
                    {
                        for (int n = 0; n < 10; n++)
                        {
                            if (map[m, n] == 4)
                            {
                                over++;
                            }
                        }
                    }

                    //显示及操作
                    for (; true; )
                    {
                        //输出显示
                        Console.Clear();
                        for (int x = 0; x < 10; x++)
                        {
                            for (int y = 0; y < 10; y++)
                            {
                                if (map[x, y] == 0)
                                {
                                    Console.Write("  ");
                                }
                                else if (map[x, y] == 1)
                                {
                                    Console.Write("■");
                                }
                                else if (map[x, y] == 2 || map[x, y] == 6)
                                {
                                    Console.Write("♀");
                                }
                                else if (map[x, y] == 3 || map[x, y] == 7)
                                {
                                    Console.Write("□");
                                }
                                else if (map[x, y] == 4)
                                {
                                    Console.Write("※");
                                }
                            }
                            Console.Write("\n");    //换行
                        }

                        //判断有箱子的终点个数
                        int over1 = 0;
                        for (int m = 0; m < 10; m++)
                        {
                            for (int n = 0; n < 10; n++)
                            {
                                if (map[m, n] == 7)
                                {
                                    over1++;
                                }
                            }
                        }

                        //判断是否所有终点有箱子
                        if (over1 == over)
                        {
                            Console.WriteLine("过关!");
                            break;
                        }

                        //操作部分
                        ConsoleKeyInfo K = Console.ReadKey();
                        string k = K.Key.ToString();
                        k = k.ToLower();
                        if (k == "uparrow")    //判断人是否是向上
                        {
                            if (map[i - 1, j] == 0 || map[i - 1, j] == 4)    //判断人上方是不是空位
                            {
                                map[i - 1, j] = map[i - 1, j] + 2;
                                map[i, j] = map[i, j] - 2;
                                i--;
                            }
                            else if ((map[i - 1, j] == 3 || map[i - 1, j] == 7) && map[i - 2, j] != 1)    //人上方是箱子,判断箱子上方是否是空位
                            {
                                map[i - 2, j] = map[i - 2, j] + 3;
                                map[i - 1, j] = map[i - 1, j] - 3 + 2;
                                map[i, j] = map[i, j] - 2;
                                i--;
                            }
                            else    //如果人无法移动,输出提示音
                                Console.Write("\a");
                        }
                        else if (k == "downarrow")
                        {
                            if (map[i + 1, j] == 0 || map[i + 1, j] == 4)
                            {
                                map[i + 1, j] = map[i + 1, j] + 2;
                                map[i, j] = map[i, j] - 2;
                                i++;
                            }
                            else if ((map[i + 1, j] == 3 || map[i + 1, j] == 7) && map[i + 2, j] != 1)
                            {
                                map[i + 2, j] = map[i + 2, j] + 3;
                                map[i + 1, j] = map[i + 1, j] - 3 + 2;
                                map[i, j] = map[i, j] - 2;
                                i++;
                            }
                            else
                                Console.Write("\a");
                        }
                        else if (k == "leftarrow")
                        {
                            if (map[i, j - 1] == 0 || map[i, j - 1] == 4)
                            {
                                map[i, j - 1] = map[i, j - 1] + 2;
                                map[i, j] = map[i, j] - 2;
                                j--;
                            }
                            else if ((map[i, j - 1] == 3 || map[i, j - 1] == 7) && map[i, j - 2] != 1)
                            {
                                map[i, j - 2] = map[i, j - 2] + 3;
                                map[i, j - 1] = map[i, j - 1] - 3 + 2;
                                map[i, j] = map[i, j] - 2;
                                j--;
                            }
                            else
                                Console.Write("\a");
                        }
                        else if (k == "rightarrow")
                        {
                            if (map[i, j + 1] == 0 || map[i, j + 1] == 4)
                            {
                                map[i, j + 1] = map[i, j + 1] + 2;
                                map[i, j] = map[i, j] - 2;
                                j++;
                            }
                            else if ((map[i, j + 1] == 3 || map[i, j + 1] == 7) && map[i, j + 2] != 1)
                            {
                                map[i, j + 2] = map[i, j + 2] + 3;
                                map[i, j + 1] = map[i, j + 1] - 3 + 2;
                                map[i, j] = map[i, j] - 2;
                                j++;
                            }
                            else
                                Console.Write("\a");
                        }
                        else if (k == "b")    //按“B”键,重新开始
                        {
                            z--;
                            break;
                        }
                        else if (k == "n")    //按“N”键,进入下一关
                        {
                            continue;
                        }

                    }//显示及操作
                }//游戏开始
                else
                    z--;
            }//for,逐次取地图

        }
    
时间: 2024-10-07 04:14:58

经典小游戏--推箱子的相关文章

小游戏●推箱子(利用二维数组制作)

利用数组制作的简单推箱子游戏 代码及简要分析如下: 1 //推箱子小游戏 2 //定义一个三维数组存放地图,三维数组由单独的二维数组组成,本游戏中只有三个地图 3 int[][,] a = new int[3][,]; 4 //用二维数组创建地图,0是空位,1是墙,2是人,3是箱子,4是终点 5 int[,] b0 = new int[10, 10]{ 6 {1,1,1,1,1,1,1,1,1,1}, 7 {1,0,0,0,1,0,1,0,0,1}, 8 {1,0,0,0,1,0,1,0,0,1

使用AxureRP7.0制作经典小游戏"大家来找茬"

本案例是<网站蓝图AxureRP7.0从入门到精通视频教程>中的最后一节,适用于对Axure基础知识掌握比较熟练的同学:教程由axure原型库网站录制,转载请注明出处!相信很多刚接触Axure或者学习了一段时间但并没有深入的同学们,看到这个案例一定很惊讶,使用Axure竟然能做出如此逼真的交互效果!通过此案例也可以激发广大同学们学习Axure的热情和信心!试想一下,如果你有情侣的话,把你们珍藏的合影拿出来处理几张,做成大家来找茬的小游戏,不但锻炼了自己的技能,还能给对方一个惊喜,岂不是一举两得

c语言游戏推箱子

前两天做了推箱子小游戏,看似简单的一个小游戏背后却 有巨大的秘密,这秘密就是一大堆逻辑. 自从学习了函数过后,的确是解决了很多问题,而且调用很方便,尽管我现在都不是很会调用. 写完一个函数,准备测试一下的时候就蒙b了.最开始是要解决目标的问题,用了一个结构体来 定位.然后还要定位到要到小人的位置,输出地图,里面的墙.目标和箱子都是用数字来代替的 所以,给地图定了两个轴 x y 这样就解决了小人移动的问题,而地图是用数组来组件的,利用 x y + - 就能办到移动的问题,但是还有一需要一起移动的箱

VS 游戏:推箱子&amp;对战游戏

推箱子 //只做了两关 class Program { static void Main(string[] args) { int x = 1; int y = 8; int z = 0; int end1x = 6; int end1y = 3; int end2x = 6; int end2y = 3; #region 地图绘制 string[,,] map = new string[3, 10, 10] { { {"●", "●", "●"

30分钟,学会经典小游戏编程!

在80后.90后的儿时记忆里,俄罗斯方块是必备的消遣小游戏,它的玩法非常简单基本大家都懂,但如何用编程语言开发一款儿时同款「俄罗斯方块」,恐怕知道的同学就很少啦. 位置掩码和旋转掩码 俄罗斯方块游戏中的格子一般是10列20行(10*20),我们称之为世界地图. 一般都是这种竖屏的界面 10*20的空间是用来盛放方块的,当方块落定之后位置便不能再改变.这个时候它会被保存到地图的状态中,我们给地图状态设计一个二维的数组. 方块有7种样式组成,最大的长宽是4个方格,为了在逻辑上比较好的处理所有类型的方

javascript经典小游戏代码集合

http://www.jb51.net/Special/349.htm

Qt小游戏开发:俄罗斯方块

作为一个即将步入游戏行业的新人,手写经典小游戏是必备技能哦. 预览 由于录屏软件的问题,颜色和帧率与实际有所出入,不过不影响. 步骤 1 新建工程 建一个基类为QWidget的QT gui工程,实际过程中所有gui代码包括界面布局都是手巧的,所以其实不需要简历ui文件. 2 定义游戏数据结构 游戏场景和方块都用二维数组存储,有方块的存1,无方块的存0 场景数据 const int BLOCK_SIZE=25; //单个方块单元的边长 const int MARGIN=5; //场景边距 cons

【开发记录】微信小游戏开发入门——俄罗斯方块

叨叨 我在前一阵子,打算做一个微信小游戏,当然是单机的,只是为了了解小游戏开发的过程,最终选择了俄罗斯方块这一经典小游戏作为demo,源代码已托管值github,当然,这个游戏demo对用不并不友好,但是已经可以让我入门小程序开发了XD. demo地址:https://github.com/nbclw/Laya_Brick 准备 在任何开发前都需要对要开发的东西有一定的了解.准备: 小游戏原理:微信小游戏是属于H5游戏的一种吧,我是这样理解的:在H5中,有一个叫Canvas(画布)的存在,与电脑

12月28日 二维数组的应用:第一个小游戏(推箱子)

小游戏:******推箱子******** static void Main(string[] args) { int i, j; int[,] a = new int[10, 10]                  //二维数组的定义           类型[,] 数组名 = new  类型 [行数, 列数] {赋值}:   或单个赋值 a[i,j]=1; { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,1}, {1,0,2,0,0,8,0,0,0,