.net学习第八天

飞行棋项目

代码如下

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

namespace 飞行棋
{
    class Program
    {
        public static int[] map = new int[100];//默认都是0
        //0表示方块,1,表示幸运轮盘,2,表示暂停 3,表示地雷,4,表示时空隧道
        public static int A = 0;
        public static int B = 0;
        public static string AName = "";
        public static string BName = "";
        public static bool AFlag = true;
        public static bool BFlag = true;
        static void Main(string[] args)
        {
            GameShow();
            #region 输入玩家姓名
            Console.WriteLine("请输入玩家A的姓名:");
            AName = Console.ReadLine();
            while(AName == "")
            {
                Console.WriteLine("玩家的姓名不能为空,请重新输入");
                AName = Console.ReadLine();
            }
            Console.WriteLine("请输入玩家B的姓名:");
            BName = Console.ReadLine();
            while (BName == AName||BName == "")
            {
                if(BName == "")
                {
                    Console.WriteLine("玩家的姓名不能为空,请重新输入");
                }
                else
                {
                    Console.WriteLine("玩家的B姓名不能和A相同,请重新输入");
                }
                BName = Console.ReadLine();
            }
            #endregion
            Console.Clear();
            GameShow();
            Console.WriteLine("{0}的士兵用A表示。\n{1}的士兵用B表示。", AName, BName);
            InitMap();
            ShowMap();
            while(A<=99&&B<=99)
            {
                if(AFlag)
                {
                    PlayGame(true, out A, out B, AName, BName, out AFlag);
                }
                else
                {
                    AFlag = true;
                }
                if(A == 99)
                {
                    Console.WriteLine("玩家A胜利了");
                    break;
                }
                if(BFlag)
                {
                    PlayGame(false, out B, out A, BName, AName, out BFlag);
                }
                else
                {

                    BFlag = true;
                }
                if (B == 99)
                {
                    Console.WriteLine("玩家B胜利了");
                    break;
                }
            }//while
            win();
            Console.ReadKey();
        }
        /// <summary>
        /// 画游戏头
        /// </summary>
        public static void GameShow()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("**********************");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("**********************");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("**********************");
            Console.ForegroundColor = ConsoleColor.Magenta;
            Console.WriteLine("********飞行棋********");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("**********************");
            Console.ForegroundColor = ConsoleColor.DarkMagenta;
            Console.WriteLine("**********************");
        }
        /// <summary>
        /// 给地图数组初始化
        /// </summary>
        public static void InitMap()
        {
            int[] luckyturn = { 6, 23, 40, 55, 69, 83 };
            int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };
            int[] pause = { 9, 27, 60, 93 };
            int[] timTurnnel = { 20, 25, 45, 63, 72, 88, 90 };
            for (int i = 0; i < luckyturn.Length; i++)
            {
                int n = luckyturn[i];
                map[n] = 1;
            }
            for (int i = 0; i < landMine.Length; i++)
            {
                int n = landMine[i];
                map[n] = 2;
            }
            for (int i = 0; i < pause.Length; i++)
            {
                int n = pause[i];
                map[n] = 3;
            }
            for (int i = 0; i < timTurnnel.Length; i++)
            {
                int n = timTurnnel[i];
                map[n] = 4;
            }
        }
        /// <summary>
        /// 绘制地图
        /// </summary> 
        public static void ShowMap()
        {
            Console.WriteLine("图例:幸运轮盘:◎\t暂停:★\t地雷:▲\t时空隧道:卐");
            #region //第一横行
            for (int i = 0; i < 30; i++)
            {
                if (i != A && i != B)
                {
                    if (map[i] == 0)
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("□");
                    }
                    else if (map[i] == 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("◎");
                    }
                    else if (map[i] == 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write("▲");
                    }
                    else if (map[i] == 3)
                    {
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.Write("★");
                    }
                    else if (map[i] == 4)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("卐");
                    }
                }

                else if (i == A && i != B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("A");
                }
                else if (i != A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("B");
                }
                else if (i == A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("<>");
                }
            }
            #endregion
            //第一竖
            Console.Write("\n");
            #region //第一竖
            for (int i = 30; i < 35; i++)
            {
                Console.Write("                             ");
                if (i != A && i != B)
                {
                    if (map[i] == 0)
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("□\n");
                    }
                    else if (map[i] == 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("◎\n");
                    }
                    else if (map[i] == 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write("▲\n");
                    }
                    else if (map[i] == 3)
                    {
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.Write("★\n");
                    }
                    else if (map[i] == 4)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("卐\n");
                    }
                }

                else if (i == A && i != B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("A\n");
                }
                else if (i != A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("B\n");
                }
                else if (i == A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("<>\n");
                }
            }
            #endregion
            #region //第二横行
            for (int i = 64; i > 34; i--)
            {
                if (i != A && i != B)
                {
                    if (map[i] == 0)
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("□");
                    }
                    else if (map[i] == 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("◎");
                    }
                    else if (map[i] == 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write("▲");
                    }
                    else if (map[i] == 3)
                    {
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.Write("★");
                    }
                    else if (map[i] == 4)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("卐");
                    }
                }

                else if (i == A && i != B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("A");
                }
                else if (i != A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("B");
                }
                else if (i == A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("<>");
                }
            }
            #endregion
            Console.Write("\n");
            #region //第二竖
            for (int i = 65; i < 70; i++)
            {
                
                if (i != A && i != B)
                {
                    if (map[i] == 0)
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("□\n");
                    }
                    else if (map[i] == 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("◎\n");
                    }
                    else if (map[i] == 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write("▲\n");
                    }
                    else if (map[i] == 3)
                    {
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.Write("★\n");
                    }
                    else if (map[i] == 4)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("卐\n");
                    }
                }

                else if (i == A && i != B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("A\n");
                }
                else if (i != A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("B\n");
                }
                else if (i == A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("<>\n");
                }
            }
            #endregion
            #region //第三横行
            for (int i = 70; i < 100; i++)
            {
                if (i != A && i != B)
                {
                    if (map[i] == 0)
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("□");
                    }
                    else if (map[i] == 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write("◎");
                    }
                    else if (map[i] == 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write("▲");
                    }
                    else if (map[i] == 3)
                    {
                        Console.ForegroundColor = ConsoleColor.Magenta;
                        Console.Write("★");
                    }
                    else if (map[i] == 4)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("卐");
                    }
                }

                else if (i == A && i != B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("A");
                }
                else if (i != A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("B");
                }
                else if (i == A && i == B)
                {
                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                    Console.Write("<>");
                }
            }
            #endregion
            Console.Write("\n");
            
        }
        public static void PlayGame(bool k,out int a,out int b,string aName,string bName,out bool flag)
        {
            if(k)
            {
                a = A;
                b = B;
                flag = AFlag;
            }
            else
            {
                a = B;
                b = A;
                flag = BFlag;
            }
            Random r = new Random();
            int rNum = r.Next(1, 7);
            Console.WriteLine("玩家{0}按任意键开始掷骰子", aName);
            Console.ReadKey(true);
            Console.WriteLine("玩家{0}掷出了{1}", aName, rNum);
            a += rNum;
            ChangNum();
            Console.ReadKey(true);
            Console.WriteLine("玩家{0}按任意键开始行动", aName);
            Console.ReadKey(true);
            Console.WriteLine("玩家{0}行动完成", aName);
            Console.ReadKey(true);
            if (a == b)
            {
                Console.WriteLine("玩家{0}踩到玩家{1},玩家{1}退六格", aName, bName);
                b -= 6;
                ChangNum();
                Console.ReadKey(true);
            }
            else if (map[a] == 0)
            {
                Console.WriteLine("玩家{0}踩到方块,没有事情发生", aName);
                Console.ReadKey(true);
            }
            else if (map[a] == 1)
            {
                Console.WriteLine("玩家{0}踩到幸运轮盘,请选择1---交换位置,2---轰炸对方", aName);
                string input = Console.ReadLine();
                while (true)
                {
                    if (input == "1")
                    {
                        Console.WriteLine("玩家{0}选择和玩家{1}交换位置", aName, bName);
                        int temp = a;
                        a = b;
                        b = temp;
                        Console.WriteLine("交换成功!请按任意键继续游戏!");
                        Console.ReadKey(true);
                        break;
                    }
                    else if (input == "2")
                    {
                        Console.WriteLine("玩家{0}选择轰炸玩家{1}", aName, bName);
                        Console.ReadKey(true);
                        b -= 6;
                        ChangNum();
                        Console.WriteLine("轰炸成功,玩家{0}后退六步。", bName);
                        Console.ReadKey(true);
                        break;
                    }
                    else
                    {
                        Console.WriteLine("请输入1或者2,不能输入不相关字符");
                        
                        input = Console.ReadLine();
                    }
                }
            }
            else if (map[a] == 2)
            {
                Console.WriteLine("玩家{0}踩到地雷,玩家后退六步", aName);
                a -= 6;
                ChangNum();
                Console.ReadKey(true);
            }
            else if (map[a] == 3)
            {
                Console.WriteLine("玩家{0}踩到暂停,玩家停玩一轮。", aName);
                flag = false;
                Console.ReadKey(true);
            }
            else if (map[a] == 4)
            {
                Console.WriteLine("玩家{0}踩到时空隧道,玩家前进10格。", aName);
                a += 10;
                ChangNum();
                Console.ReadKey(true);
            }
            ChangNum();
            Console.Clear();
            ShowMap();
        }
        /// <summary>
        /// 当玩家坐标改变的时候
        /// </summary>
        public static void ChangNum()
        {
            if(A<0)
            {
                A = 0;
            }
            if(A>99)
            {
                A = 99;
            }
            if (B < 0)
            {
                B = 0;
            }
            if (B > 99)
            {
                B = 99;
            }
        }
        public static void win()
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("   ■■■■  ■ ■        ■    ■   ■");
            Console.WriteLine("   ■  ■  ■ ■       ■     ■   ■");
            Console.WriteLine("   ■  ■ ■■■■■■   ■■■   ■ ■   ■");
            Console.WriteLine("   ■■■■■   ■       ■   ■ ■   ■");
            Console.WriteLine("   ■  ■    ■     ■■■■■ ■ ■   ■");
            Console.WriteLine("   ■  ■ ■■■■■■    ■■■  ■ ■   ■");
            Console.WriteLine("   ■■■■    ■     ■ ■ ■ ■ ■   ■");
            Console.WriteLine("   ■  ■    ■       ■     ■    ");
            Console.WriteLine("  ■  ■■    ■       ■    ■■   ■");
            Console.WriteLine(" ■    ■ ■■■■■■     ■     ■   ■");
            
        }
    }
}
运行的结果图如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值