C#-骑士飞行棋

前言

飞行棋小游戏是学习C#以来,接触的第一个游戏项目,根据小杨老师的思路引导,自己的代码也实现了功能,经过思路的梳理,试着不借助代码自己去实现功能,感触就是不管想的多明白,实践起来完全不一样,所以,还得多多实践,培养严谨的逻辑思维。下面看看我梳理的思路~

游戏中界面

C#-骑士飞行棋_第1张图片

飞行棋流程思路

C#-骑士飞行棋_第2张图片

掷骰子流程

C#-骑士飞行棋_第3张图片

游戏运行流程

C#-骑士飞行棋_第4张图片

掷骰子代码

public static void RowShaiZi(int xy)
{
     Random r = new Random();//随机数
     int num = r.Next(1, 7);

     string str = "";

     Console.WriteLine("{0}按任意键开始掷骰子", PlayerNames[xy]);
     Console.ReadKey(true);//不显示输入内容,开始掷骰子
     
     Console.WriteLine("{0}掷出了{1}", PlayerNames[xy], num);
     Console.WriteLine("{0}按任意键开始行动……", PlayerNames[xy]);
     Console.ReadKey(true);
     
     PlayerPos[xy] += num;//玩家坐标累加

     CheckPos();//检验玩家坐标是否超出范围方法
     if (PlayerPos[xy] == PlayerPos[1- xy])//传进来玩家0,1-0是玩家1;传进来是玩家1,1-0是玩家0
     {
         str = string.Format ("玩家{0}踩到了玩家{1},玩家{2}退6格", PlayerNames[xy], PlayerNames[1 - xy], PlayerNames[1 - xy]);
         PlayerPos[1- xy] -= 6;
         CheckPos();
     }
     else
     {
         switch (map[PlayerPos[xy]])
         {
             case 0: str = "行动完毕"; break;
             case 1:
                 str = string.Format("{0}走到了幸运轮盘,请选择1---交换位置,2---轰炸对方", PlayerNames[xy]);

                 int number = ReadInt(str, 1, 2);//调用走到幸运轮盘,判断输入数字的方法

                 if (number == 1)//幸运轮盘中输入1
                 {
                     int temp = xy;
                     temp = PlayerPos[xy];
                     PlayerPos[xy] = PlayerPos[1- xy];
                     PlayerPos[1- xy] = temp;
                     str = string.Format("玩家{0}选择了与玩家{1}交换位置", PlayerNames[xy], PlayerNames[1- xy]);
                     Console.WriteLine(str);
                 }
                 else//幸运轮盘中输入2
                 {
                     PlayerPos[1- xy] = 0;
                     str = string.Format("玩家{0}选择了轰炸玩家{1}", PlayerNames[xy], PlayerNames[1- xy]);
                     Console.WriteLine(str);
                 }
                 break;
             case 2:
                 str = "恭喜你,踩到地雷了,退6格";
                 PlayerPos[xy] -= 6;
                 CheckPos();
                 Console.WriteLine(str);
                 break;
             case 3:
                 str = "踩到暂停了";
                 Console.WriteLine(str);
                 flag[xy] = true;
                 break;
             case 4:
                 str = "恭喜你,幸运转盘让你前进10格";
                 Console.WriteLine(str);
                 PlayerPos[xy] += 10;
                 CheckPos();
                 break;
         }
     }
     Console.ReadKey();
     Console.Clear();
     DrawMap();

运行游戏代码

static void Main(string[] args)
{
    ShowUI();//游戏头
    IntMap();//初始化地图

    do//输入玩家A姓名
    {
        Console.WriteLine("请输入玩家A姓名");
        PlayerNames[0] = Console.ReadLine();
        if (PlayerNames[0] =="")
        {
            Console.Write("玩家A姓名不能为空");
        }
    }
    while (PlayerNames[0] == "");

    do//输入玩家B姓名
    {
        Console.WriteLine("请输入玩家B的姓名");
        PlayerNames[1] = Console.ReadLine();
        if(PlayerNames[1]=="")
        {
            Console.Write("玩家B姓名不能为空,");
        }
        if(PlayerNames[0]==PlayerNames[1])
        {
            Console.Write("玩家B姓名不能与玩家A姓名相同,");
        }
    } while (PlayerNames[1] == "" || PlayerNames[0] == PlayerNames[1]);

    Console.Clear();
    
    ShowUI(); //游戏头
    DrawMap();//画地图
    Console.ReadKey();

    Console.WriteLine("对战开始……");
    Console.WriteLine("{0}的士兵用A表示", PlayerNames[0]);
    Console.WriteLine("{0}的士兵用B表示", PlayerNames[1]);

    while (PlayerPos [0]<=99 && PlayerPos [1]<=99)
    {
        //玩家1掷骰子
        if(flag[0]==false )
        {
            RowShaiZi(0);
        }
        else
        {
            flag[0] = false;
        }

        //判断玩家1是否胜利
        if(PlayerPos[0]==99)
        {
            Console.WriteLine("恭喜玩家{0}胜利了!!!", PlayerNames[0]);
            break;
        }

        //玩家2掷骰子
        if(flag[1]==false )
        {
            RowShaiZi(1);
        }
        else
        {
            flag[1] = false;
        }

        //判断玩家2是否胜利
        if(PlayerPos[1]==99)
        {
            Console.WriteLine("恭喜玩家{0}胜利了!!!", PlayerNames[1]);
            break;
        }
        Console.WriteLine("行动完毕……");
    }
    Console.ReadKey();
}

你可能感兴趣的:(---C#,C#基础学习)