码迷,mamicode.com
首页 > 其他好文 > 详细

第十二天学习内容 综合应用 推箱子和对战游戏

时间:2015-03-14 09:32:04      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace day12
{
    class Program
    {
        static void Main(string[] args)
        {

//推箱子游戏
            int x = 1, y = 1, i = 0;
            int[, ,] dt = new int[2, 10, 10]   //定义一个二维数组用于接收地图
                {
                   {
                    {1,1,1,1,1,1,1,1,1,1},
                    {1,4,0,0,1,0,0,0,0,1},
                    {1,0,2,0,1,0,0,0,0,1},
                    {1,0,0,1,1,0,0,0,0,1},
                    {1,0,0,1,3,0,0,0,0,1},
                    {1,0,0,1,0,0,0,0,0,1},
                    {1,0,0,1,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,1,1,1,1,1,1,1,1,1},
                   },
                   {
                    {1,1,1,1,1,1,1,1,1,1},
                    {1,0,0,4,1,0,0,0,0,1},
                    {1,1,2,0,1,0,0,0,0,1},
                    {1,1,0,1,1,0,0,0,0,1},
                    {1,1,0,1,3,0,0,0,0,1},
                    {1,1,0,1,0,0,0,0,0,1},
                    {1,0,0,1,1,1,1,0,0,1},
                    {1,0,0,0,0,0,0,0,0,1},
                    {1,1,0,0,0,0,0,0,0,1},
                    {1,1,1,1,1,1,1,1,1,1},
                   }
                  

               
                };
            try
            {

           

            while (true)
            {
                int temp = 0;

 

                ConsoleKeyInfo s = Console.ReadKey();  //s用于接收用户输入的键
                if (s.Key.ToString() == "DownArrow")
                {
                    if (dt[i, x + 1, y] == 0)//如果小人的下一步是0(空格),则两个元素交换  (下同)
                    {

                        temp = dt[i, x, y];
                        dt[i, x, y] = dt[i, x + 1, y];
                        dt[i, x + 1, y] = temp;
                        x++;
                    }
                    if (dt[i, x + 1, y] == 2 && dt[i, x + 2, y] == 0)//如果小人的下一步是箱子,箱子的下一步是空格,则三个元素进行交换 (下同)
                    {

                        temp = dt[i, x + 2, y];
                        dt[i, x + 2, y] = dt[i, x + 1, y];
                        dt[i, x + 1, y] = temp;
                        temp = dt[i, x + 1, y];
                        dt[i, x + 1, y] = dt[i, x, y];
                        dt[i, x, y] = temp;
                        x++;
                    }
                }
                else if (s.Key.ToString() == "UpArrow")
                {
                    if (dt[i, x - 1, y] == 0)
                    {

                        temp = dt[i, x - 1, y];
                        dt[i, x - 1, y] = dt[i, x, y];
                        dt[i, x, y] = temp;
                        x--;
                    }
                    if (dt[i, x - 1, y] == 2 && dt[i, x - 2, y] == 0)
                    {

                        temp = dt[i, x - 2, y];
                        dt[i, x - 2, y] = dt[i, x - 1, y];
                        dt[i, x - 1, y] = temp;
                        temp = dt[i, x, y];
                        dt[i, x, y] = dt[i, x - 1, y];
                        dt[i, x - 1, y] = temp;
                        x--;
                    }
                }
                else if (s.Key.ToString() == "LeftArrow")
                {
                    if (dt[i, x, y - 1] == 0)
                    {

                        temp = dt[i, x, y - 1];
                        dt[i, x, y - 1] = dt[i, x, y];
                        dt[i, x, y] = temp;
                        y--;
                    }
                    if (dt[i, x, y - 1] == 2 && dt[i, x, y - 2] == 0)
                    {

                        temp = dt[i, x, y - 2];
                        dt[i, x, y - 2] = dt[i, x, y - 1];
                        dt[i, x, y - 1] = temp;
                        temp = dt[i, x, y];
                        dt[i, x, y] = dt[i, x, y - 1];
                        dt[i, x, y - 1] = temp;
                        y--;
                        if (dt[i, x, y - 2] == 3) //如果小人的下面第二个元素是“★”
                        {

                            dt[i, x, y - 2] = 2; //让五角星变成箱子
                            dt[i, x, y - 1] = 4;// 让箱子变成小人
                            dt[i, x, y] = 0;    //让小人变成空格
                            temp = 6; //给临时变量赋一个值作为跳出循环的条件
                        }

                    }
                }
                else if (s.Key.ToString() == "RightArrow")
                {
                    if (dt[i, x, y + 1] == 0)
                    {

                        temp = dt[i, x, y + 1];
                        dt[i, x, y + 1] = dt[i, x, y];
                        dt[i, x, y] = temp;
                        y++;
                    }
                    if (dt[i, x, y + 1] == 2 && dt[i, x, y + 2] == 0)
                    {

                        temp = dt[i, x, y + 2];
                        dt[i, x, y + 2] = dt[i, x, y + 1];
                        dt[i, x, y + 1] = temp;
                        temp = dt[i, x, y + 1];
                        dt[i, x, y + 1] = dt[i, x, y];
                        dt[i, x, y] = temp;
                        y++;
                    }
                }


                Console.Clear();  //清屏

                ditu(dt, i);// 调用ditu函数打印地图
                if (temp == 6)// 跳出循环
                {
                Console.WriteLine("恭喜您过关了!");
                Console.WriteLine("按任意键进入下一关!");
                Console.ReadKey();
                x = 1; y = 3;//初始化小人的位置
                i++;
               
                }

               
            }


            }
            catch (Exception)
            {

                Console.WriteLine("暂时只有两张图!");
                Console.ReadKey();
            }

 

        }

        private static void ditu(int[,,] dt,int i)
        {
           
           
                for (int j = 0; j < 10; j++)
                {
                    for (int k = 0; k < 10; k++)
         {
   
   
                        if (dt[i, j,k] == 0)
                        {
                            Console.Write("  ");
                        }
                        else if (dt[i, j,k] == 1)
                        {
                            Console.Write("■");
                        }
                        else if (dt[i, j,k] == 2)
                        {
                            Console.Write("□");
                        }
                        else if (dt[i, j,k] == 3)
                        {
                            Console.Write("★");
                        }
                        else if (dt[i, j,k] == 4)
                        {
                            Console.Write("♀");
                        }
                  

                  }
                    Console.Write("\n");
                }
              
           
        }
    }
}

 

 

//  对战游戏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace day12_zuoye
{
    class Program

    {
        struct renwu   //新建一个renwu的结构体
        {
            public string name; //定义renwu的各种属性
            public int HP;
          
            public int defend;
            public string[] jineng;
        }
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Black;  //前景色改为黑色
            Console.BackgroundColor = ConsoleColor.White; //背景色改为白色
            Console.Clear(); //全屏
            renwu p1 = new renwu();
            Console.Write("请输入第一位选手的名字:");
            p1.name = Console.ReadLine();
            p1.jineng = new string[3] { "独孤九剑", "九阳神功", "大海无量" };
            renwu p2 = new renwu();
            Console.Write("请输入第二位选手的名字:");
            p2.name = Console.ReadLine();
            p2.jineng = new string[3] { "八卦掌","狮吼功","太极拳"};
            Random r = new Random();
            p1.HP = r.Next(1000) + 1000;//随机生成血量和防御值
            p1.defend = r.Next(100) ;
            p2.HP = r.Next(1000) + 1000;
            p1.defend = r.Next(100) ;
            DateTime dt = new DateTime();
            dt = DateTime.Now;  //取现在的时间
            Console.WriteLine(p1.name+"\t生命力:"+p1.HP);
            Console.WriteLine(p2.name + "\t生命力:" + p2.HP);
            Console.WriteLine("现在是北京时间:"+dt+"\t下面为您直播"+p1.name+"与"+p2.name+"的比赛");
            Console.ReadKey();
            duizhan(ref p1, ref p2, r);  //调用对战函数
            Console.ReadLine();
        }

        private static void duizhan(ref renwu p1, ref renwu p2, Random r)
        {
            while (true)
            {// 判断哪一方获得胜利
                if (p1.HP == 0 && p2.HP == 0)
                {
                    Console.WriteLine(p1.name + "与" + p2.name + "打成了平局!");
                    break;
                }
                else if (p1.HP == 0)
                {
                    Console.WriteLine(p2.name + "获得了胜利!");
                    break;
                }
                else if (p2.HP == 0)
                {
                    Console.WriteLine(p1.name + "获得了胜利!");
                    break;
                }
                int dx1 = 0;
                int j1 = r.Next(3);//定义一个随机数来确定技能的减血量
                switch (j1)
                {
                    case 0:
                        dx1 = r.Next(100);//技能0的减血量为0-100的随机数
                        break;
                    case 1:
                        dx1 = r.Next(100, 200);//技能1的减血量为100-200的随机数
                        break;
                    case 2:
                        dx1 = r.Next(200, 300);//技能2的减血量为2000-300的随机数
                        break;
                    default:
                        break;
                }
                p1.HP = p1.HP - dx1 + p1.defend; //剩余血量等于原血量减去减血量加上p1的防御值
                if (p1.HP <= 0)
                {
                    p1.HP = 0;  //当p1的血量为负时重新赋成0
                }
                Console.WriteLine(p1.name + "向" + p2.name + "使出了" + p1.jineng[j1] + "," + p2.name + "失掉生命力" + dx1 + "点");
                Console.WriteLine();
                System.Threading.Thread.Sleep(2000); //休眠2s
                int dx2 = 0;
                int j2 = r.Next(3);
                switch (j2)
                {
                    case 0:
                        dx2 = r.Next(100);
                        break;
                    case 1:
                        dx2 = r.Next(100, 200);
                        break;
                    case 2:
                        dx2 = r.Next(200, 300);
                        break;
                    default:
                        break;
                }

                p2.HP = p2.HP - dx2 + p2.defend;
                if (p2.HP <= 0)
                {
                    p2.HP = 0;
                }
                Console.WriteLine(p2.name + "向" + p1.name + "使出了" + p2.jineng[j2] + "," + p1.name + "失掉生命力" + dx2 + "点");
                Console.WriteLine(p1.name + "\t生命力:" + p1.HP);
                Console.WriteLine(p2.name + "\t生命力:" + p2.HP);
                System.Threading.Thread.Sleep(2000);

            }
        }
    }
}

第十二天学习内容 综合应用 推箱子和对战游戏

标签:

原文地址:http://www.cnblogs.com/William-1234/p/4336985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!