zoukankan      html  css  js  c++  java
  • 推箱子

                //画制地图
                int[, ,] a = new int[3, 10, 10]
                {{
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,1,1,1,0,0,0,0},
                  {0,0,0,1,4,1,0,0,0,0},
                  {0,0,0,1,0,1,1,1,1,0},
                  {0,1,1,1,3,0,3,4,1,0},
                  {0,1,4,0,3,2,1,1,1,0},
                  {0,1,1,1,1,3,1,0,0,0},
                  {0,0,0,0,1,4,1,0,0,0},
                  {0,0,0,0,1,1,1,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0}},
                 {
                  {1,1,1,1,1,0,0,0,0,0},
                  {1,2,0,0,1,0,0,0,0,0},
                  {1,0,0,3,1,0,1,1,1,0},
                  {1,0,0,0,1,0,1,4,1,0},
                  {1,1,1,0,1,1,1,0,1,0},
                  {0,1,1,0,0,0,0,0,1,0},
                  {0,1,0,0,0,1,0,0,1,0},
                  {0,1,0,0,0,1,1,1,1,0},
                  {0,1,1,1,1,1,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0}},
                 {
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,1,1,1,1,1,1,1,0,0},
                  {0,1,0,0,0,0,0,1,1,1},
                  {1,1,3,1,1,1,0,0,0,1},
                  {1,0,2,0,3,0,0,3,0,1},
                  {1,0,0,0,1,0,0,0,1,1},
                  {1,1,4,4,1,4,0,0,1,0},
                  {0,1,1,1,1,1,1,1,1,0},
                  {0,0,0,0,0,0,0,0,0,0},
                  {0,0,0,0,0,0,0,0,0,0}}
                };
                int y = 5;
                int x = 5;
    
                for (int ii = 0; ii < 3; ii++)
                {
                    while (true)
                    {
                        Console.Clear();
                        #region 打印地图
                        //打印地图
                        for (int i = 0; i < 10; i++)
                        {
                            for (int j = 0; j < 10; j++)
                            {
                                //0是空地,1是墙,2是小人,3是箱子,4是目标点,5是完成点
                                if (a[ii, i, j] == 0)
                                {
                                    Console.Write("  ");
                                }
                                if (a[ii, i, j] == 1)
                                {
                                    Console.Write("");
                                }
                                if (a[ii, i, j] == 2)
                                {
                                    Console.Write("");
                                }
                                if (a[ii, i, j] == 3)
                                {
                                    Console.Write("");
                                }
                                if (a[ii, i, j] == 4)
                                {
                                    Console.Write("");
                                }
                                if (a[ii, i, j] == 5)
                                {
                                    Console.Write("");
                                }
                            }
                            Console.WriteLine();
                        }
                        #endregion
    
                        if (ii==0)
                        {
                            if (a[ii, 2, 4] == 5 && a[ii, 4, 7] == 5 && a[ii, 5, 2] == 5 && a[ii, 7, 5] == 5)
                            {
                                Console.ReadKey();
                                x = 1;
                                y = 1;
                                break;
                            }
                        }
                        if (ii == 1)
                        {
                            if (a[ii, 3, 7] == 5)
                            {
                                Console.ReadKey();
                                x = 2;
                                y = 4;
                                break;
                            }
                        }
                        else if (ii==2)
                        {
                            if (a[ii, 6, 2] == 5 && a[ii, 6, 3] == 5 && a[ii, 6, 5] == 5)
                            {
                                Console.Write("恭喜过关");
                                Console.ReadKey();
                                break;
                            }
                        }
                        ConsoleKeyInfo info = Console.ReadKey();
                        if (info.Key.ToString() == "UpArrow")
                        {
                            if (a[ii, y - 1, x] == 1 || a[ii, y - 1, x] == 4)//小人的下一步是墙和目标点,不能动
                            { }
                            else if (a[ii, y - 1, x] == 3)//小人的下一步是箱子
                            {
                                if (a[ii, y - 2, x] == 1)//箱子的下一步是墙,就不能动了
                                { }
                                else if (a[ii, y - 2, x] == 4)//箱子的下一步是目标点
                                {
                                    //小人与箱子的位置互换,箱子跑到小人的下面
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y - 1, x];
                                    a[ii, y - 1, x] = zhong;
                                    y--;
                                    a[ii, y - 1, x] = 5;
                                    a[ii, y + 1, x] = 0;
                                }
                                else
                                {
                                    //小人与箱子互换位置,箱子跑到小人的前面
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y - 1, x];
                                    a[ii, y - 1, x] = zhong;
                                    y--;
                                    //小人的下一步与上一步的箱子互换位置
                                    zhong = a[ii, y - 1, x];
                                    a[ii, y - 1, x] = a[ii, y + 1, x];
                                    a[ii, y + 1, x] = zhong;
                                }
                            }
                            else if (a[ii, y - 1, x] == 0)
                            {
                                int zhong = a[ii, y, x];
                                a[ii, y, x] = a[ii, y - 1, x];
                                a[ii, y - 1, x] = zhong;
                                y--;
                            }
                        }
                        if (info.Key.ToString() == "DownArrow")
                        {
                            if (a[ii, y + 1, x] == 1 || a[ii, y + 1, x] == 4)//小人的下一步是墙和目标点,不能动
                            { }
                            else if (a[ii, y + 1, x] == 3)
                            {
                                if (a[ii, y + 2, x] == 1)
                                { }
                                else if (a[ii, y + 2, x] == 4)
                                {
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y + 1, x];
                                    a[ii, y + 1, x] = zhong;
                                    y++;
                                    a[ii, y + 1, x] = 5;
                                    a[ii, y - 1, x] = 0;
                                }
                                else
                                {
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y + 1, x];
                                    a[ii, y + 1, x] = zhong;
                                    y++;
                                    zhong = a[ii, y + 1, x];
                                    a[ii, y + 1, x] = a[ii, y - 1, x];
                                    a[ii, y - 1, x] = zhong;
                                }
                            }
                            else if (a[ii, y + 1, x] == 0)
                            {
                                int zhong = a[ii, y, x];
                                a[ii, y, x] = a[ii, y + 1, x];
                                a[ii, y + 1, x] = zhong;
                                y++;
                            }
                        }
                        if (info.Key.ToString() == "LeftArrow")
                        {
                            if (a[ii, y, x - 1] == 1 || a[ii, y, x - 1] == 4)//小人的下一步是墙和目标点,不能动
                            { }
                            else if (a[ii, y, x - 1] == 3)
                            {
                                if (a[ii, y, x - 2] == 1)
                                { }
                                else if (a[ii, y, x - 2] == 4)
                                {
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y, x - 1];
                                    a[ii, y, x - 1] = zhong;
                                    x--;
                                    a[ii, y, x - 1] = 5;
                                    a[ii, y, x + 1] = 0;
                                }
                                else
                                {
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y, x - 1];
                                    a[ii, y, x - 1] = zhong;
                                    x--;
                                    zhong = a[ii, y, x - 1];
                                    a[ii, y, x - 1] = a[ii, y, x + 1];
                                    a[ii, y, x + 1] = zhong;
                                }
                            }
                            else if (a[ii, y, x - 1] == 0)
                            {
                                int zhong = a[ii, y, x];
                                a[ii, y, x] = a[ii, y, x - 1];
                                a[ii, y, x - 1] = zhong;
                                x--;
                            }
                        }
                        if (info.Key.ToString() == "RightArrow")
                        {
                            if (a[ii, y, x + 1] == 1 || a[ii, y, x + 1] == 4)//小人的下一步是墙和目标点,不能动
                            { }
                            else if (a[ii, y, x + 1] == 3)
                            {
                                if (a[ii, y, x + 2] == 1)
                                { }
                                else if (a[ii, y, x + 2] == 4)
                                {
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y, x + 1];
                                    a[ii, y, x + 1] = zhong;
                                    x++;
                                    a[ii, y, x + 1] = 5;
                                    a[ii, y, x - 1] = 0;
                                }
                                else
                                {
                                    int zhong = a[ii, y, x];
                                    a[ii, y, x] = a[ii, y, x + 1];
                                    a[ii, y, x + 1] = zhong;
                                    x++;
                                    zhong = a[ii, y, x + 1];
                                    a[ii, y, x + 1] = a[ii, y, x -1];
                                    a[ii, y, x - 1] = zhong;
                                }
                            }
                            else if (a[ii, y, x + 1] == 0)
                            {
                                int zhong = a[ii, y, x];
                                a[ii, y, x] = a[ii, y, x + 1];
                                a[ii, y, x + 1] = zhong;
                                x++;
                            }
                        }
                    }
                }
    
                Console.ReadLine();

  • 相关阅读:
    sklearn linear_model,svm,tree,naive bayes,ensemble
    便利过滤
    js下载
    小程序修改radio的大小
    el-tree 问题与需求
    jsp页面用html引入vue.js注意问题
    WebPack
    yarn
    vue-cli 4以上 vue.config.js
    Cannot find module 'core-js/modules/es6.regexp.constructor'
  • 原文地址:https://www.cnblogs.com/sunshuping/p/5538360.html
Copyright © 2011-2022 走看看