游戏过程

alt text

根据是否结束游戏的逻辑选择对掷骰子的过程用bool构建函数

掷骰子
static bool RollDice (w,h,ref Player p1,ref Player p2,Map map)
{
    InfoClear(h);
    Console.ForegroundColor=p1.type==E_PlayerType.Player?ConsoleColor.Cyan:ConsoleColor.Meganta;
    if(p1.isPause)
    {
        p1.isPause = false;
        Console.SetCursorPosition(2,h-5)
        Console.WriteLine("收到了停滞的影响,{0}停止行动一回合",p1.type==E_PlayerType.Player?"你":"电脑");
        Console.SetCursorPosition(2,h-4)
        Console.WriteLine("按任意键,让{0}掷骰子",p1.type==E_PlayerType.Player?"电脑":"你");
        return false;
    }
    Random r = new Random();
    int dice = r.Next(1, 7);
    p1.mapIndex+=dice;
    Console.SetCursorPosition(2,h-5)
    Console.WriteLine("{0}掷除了{1}点",p1.type==E_PlayerType.Player?"你":"电脑",dice);
    //判断是否到达终点,索引从0开始,所以最后一格是Lengt-1
    if(p1.mapIndex>=map.grids.Length-1)
    {
        p1.mapIndex = map.grids.Length-1;
        Console.SetCursorPosition(2,h-4);
        if(p1.type==E_PlayerType.Player)
        {
            Console.Write("恭喜你率先抵达终点");
        }
        else
        {
            Console.Write("很遗憾,你输掉了比赛");
        }
        Console.SetCursorPosition(2,h-3);
        Console.Write("按任意键结束游戏");
        return true;
    }
    else
    {
        //没到达终点的时候就判断玩家到了什么样的格子
        Grid grid=map.grids[p1.mapIndex];
        switch(grid.type)
        {
            case E_Grid_Type.Normal:
            Console.SetCursorPosition(2,h-4)
            Console.WriteLine("{0}到达了一个安全位置",p1.type==E_PlayerType.Player?"你":"电脑");
            Console.SetCursorPosition(2,h-3)
            Console.WriteLine("按任意键,让{0}掷骰子",p1.type==E_PlayerType.Player?"电脑":"你");
            break;
            case E_Grid_Type.Bomb:
            p1.mapIndex -= 5;
            Console.SetCursorPosition(2,h-4)
            Console.WriteLine("{0}踩到了炸弹,倒退了5格",p1.type==E_PlayerType.Player?"你":"电脑");
            Console.SetCursorPosition(2,h-3)
            Console.WriteLine("按任意键,让{0}掷骰子",p1.type==E_PlayerType.Player?"电脑":"你");
            if(p1.mapIndex<=0)
            {
                p1.mapIndex = 0;
            }
            break;
            case E_Grid_Type.Pause:
            Console.SetCursorPosition(2,h-4)
            Console.WriteLine("{0}被时空影响",p1.type==E_PlayerType.Player?"你":"电脑");
            Console.SetCursorPosition(2,h-3)
            Console.WriteLine("按任意键,让{0}掷骰子",p1.type==E_PlayerType.Player?"电脑":"你");
            p1.isPause=true;
            break;
            case E_Grid_Type.Tunnel:
            int temp=p2.mapIndex;
            p2.mapIndex=p1.mapIndex;
            p1.mapIndex=temp;
            Console.SetCursorPosition(2,h-4)
            Console.WriteLine("{0}进入了隧道,双方交换位置",p1.type==E_PlayerType.Player?"你":"电脑",);
            Console.SetCursorPosition(2,h-3)
            Console.WriteLine("按任意键,让{0}掷骰子",p1.type==E_PlayerType.Player?"电脑":"你");
            break;
        }
    }
    return false; 
}
游戏场景循环
bool isGameOver = false;
while(true)
{
    Console.ReadKey(true);
    isGameOver=RollDice(w,h,ref player,ref robot,map);
    map.Draw();
    DrawPlayer(player,robot,map);
    if(isGameOver)
    {
    Console.ReadKey(true);
    nowSceneType=E_SceneType.End;
    break;
    }
        Console.ReadKey(true);
    isGameOver=RollDice(w,h,ref robot,ref player,map);
    map.Draw();
    DrawPlayer(player,robot,map);
    if(isGameOver)
    {
    Console.ReadKey(true);
    nowSceneType=E_SceneType.End;
    break;
    }
}
提示信息擦除
{
    Console.SetCursorPosition(2,h-5)
    Console.WriteLine("                              ");
    Console.SetCursorPosition(2,h-5)
    Console.WriteLine("                              ");
    Console.SetCursorPosition(2,h-5)
    Console.WriteLine("                              ");
    Console.SetCursorPosition(2,h-5)
    Console.WriteLine("                              ");
}
posted @   cannedmint  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示