zoukankan      html  css  js  c++  java
  • 推箱子 只有一个地图 初练

    namespace 自己琢磨推箱子
    {
        class Program
        {
            static void Main(string[] args)
            {
                //定义一个地图
                int x=2,y=1;//小人的位置 
               
                int temp = 0;
                int[,] map = new int[10, 10]
                {
                  {1,1,1,1,1,1,1,1,1,1},
                  {1,0,0,0,1,0,0,0,9,1},
                  {1,8,3,0,1,0,0,0,0,1},
                  {1,0,0,0,1,0,0,0,0,1},
                  {1,0,0,0,1,0,0,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,0,0,0,0,0,0,1},
                  {1,0,0,0,0,0,1,0,0,1},
                  {1,1,1,1,1,1,1,1,1,1},
                };
                //下面开始将小人移动,编辑移动指令算法,简单地说就是位置交换
                 while (true)
                {   //读取输入的键
                    ConsoleKeyInfo s=Console.ReadKey();
                    if (s.Key.ToString() =="RightArrow")
                    { if(map[x,y+1]==0)  //如果小人的下一步是空格,则两个元素交换,只有满足这一个条件两个元素才会交换,否则就不会变
                     {
                     temp=map[x,y];
                    map[x, y] = map[x,y+1];
                        map[x,y+1]=temp;
                       y++;
                     }
                    if(map[x,y+1]==3&&map[x,y+2]==0)  //如果小人的下一步是箱子,并且箱子的下一步是空格,则三个元素互相交换
                     {
                        temp = map[x, y + 2];
                        map[x, y + 2] = map[x, y + 1];
                        map[x, y + 1] = temp;
                        temp = map[x, y + 1];
                        map[x, y + 1] = map[x, y];
                        map[x, y] = temp;
                        y++;
                        if (map[x, y + 2] == 9)  //在满足如果小人的下一步是箱子,并且箱子的下一步是空格,则三个元素互相交换的条件下,
                                                 //如果小人的下一步是箱子,并且箱子的下一步是终点。把五角星变成箱子,把箱子变成小人。
                        {
                            map[x, y + 2] = 3;
                            map[x, y + 1] = 8;
                            map[x, y] = 0;
                            temp = 6;
                        }
                     }
                    }
                    if (s.Key.ToString() == "LeftArrow")
                    {   if(map[x,y-1]==0)
                     {
                         temp = map[x, y];
                        map[x, y] = map[x, y-1 ];
                        map[x, y -1] = temp;
                        y--;
                     }
                        if(map[x,y-1]==3&&map[x,y-2]==0)
                        {
                            temp = map[x, y - 2];
                            map[x, y - 2] = map[x, y - 1];
                            map[x, y - 1] = temp;
                            temp = map[x, y - 1];
                            map[x, y - 1] = map[x, y];
                            map[x, y] = temp;
                            y--;
                          
                        if (map[x, y - 2] == 9)
                            {
                                map[x, y - 2] = 3;
                                map[x, y - 1] = 8;
                                map[x, y] = 0;
                                temp = 6;
                            }
                        }
                    }
                    if (s.Key.ToString() == "DownArrow")
                    {
                        if (map[x+1, y] == 0)
                        {temp = map[x, y];
                        map[x, y] = map[x+1, y ];
                        map[x+1, y] = temp;
                        x++;
                        }
                        if(map[x+1,y]==3&&map[x+2,y]==0)
                        {
                            temp = map[x + 2, y];
                            map[x + 2, y] = map[x + 1, y];
                            map[x + 1, y] = temp;
                            temp = map[x + 1, y];
                            map[x + 1, y] = map[x, y];
                            map[x, y] = temp;
                            x++;
                            if(map[x+2,y]==9)
                            {
                                map[x+2, y] = 3;
                                map[x+1, y ] = 8;
                                map[x, y] = 0;
                                temp = 6;
                            }
                        }
                    }
                    if (s.Key.ToString() == "UpArrow")
                    {
                        if(map[x-1,y]==0)
                        {temp = map[x, y];
                        map[x, y] = map[x - 1, y];
                        map[x - 1, y] = temp;
                        x--;
                        }
                        if (map[x-1, y] == 3 && map[x-2, y] == 0)
                        {
                            temp = map[x-2, y];
                            map[x-2, y] = map[x-1, y ];
                            map[x-1, y] = temp;
                            temp = map[x-1, y ];
                            map[x-1, y] = map[x, y];
                            map[x, y] = temp;
                           x--;

                            if (map[x-2, y] == 9)
                            {
                                map[x-2, y] = 3;
                                map[x-1, y] = 8;
                                map[x, y] = 0;
                                temp = 6;
                            }
                        }
                    }
                  Console.Clear();      //把之前的地图清空,下面开始重新打印地图
                for (int i = 0; i < 10; i++)
                {
                    for (int j = 0; j < 10; j++)
                    {
                        if (map[i,j]==1)
                        {
                            Console.Write("■");
                        }
                        else if (map[i, j] == 0)
                        {
                            Console.Write("  ");
                        }
                        else if (map[i, j] == 8)
                        {
                            Console.Write("♀");
                        }
                        else if (map[i, j] == 9)
                        {
                            Console.Write("★");
                        }
                        else if (map[i,j] == 3)
                        {
                            Console.Write("□");
                        }
                    }
                    Console.WriteLine();
                }
                if (temp == 6)
                {
                    Console.WriteLine("恭喜您过关了!");
                    Console.WriteLine("按任意键进入下一关!");
                    Console.ReadKey();
                }
              }
            }  
        }
    }

  • 相关阅读:
    允许 使用接口传递对象,为什么?
    一道猫和老鼠吵醒主人的笔试题(C#)
    随心所欲操作Enum枚举类型
    SmartPhone 2003 手机编程实战之一:简单上手 2005年01月08日
    SmartPhone 2003 手机编程实战之二:自己开发一个天气预报服务 2005116
    QQ是危险的、MSN是危险的,所有即时通讯都是危险的
    PWN通用技巧
    Jarvis Oj Pwn 学习笔记level2
    Jarvis Oj Pwn 学习笔记Tell Me Something
    Jarvis Oj Pwn 学习笔记level1
  • 原文地址:https://www.cnblogs.com/lk-kk/p/4395125.html
Copyright © 2011-2022 走看看