黑马程序员--一个划拳的小项目代码

来源:互联网 发布:java写99乘法表 编辑:程序博客网 时间:2024/04/23 20:00

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

代码如下:

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

namespace 猜拳游戏
{
    class Program
    {
        static string Mode;    //选择什么模式
        static string Name;   //人机对战角色名
        static string[] Names = { "", "" }; //人人对战 第一个人和第二个人的名字初值都为空
        static void Main(string[] args)
        {
            UI.StartUI();
            int selectNum=SelectMode();
            Console.WriteLine(Mode);
            Role(selectNum);
            GameStart();
            Gaming(selectNum);
            UI.EndUI();
            Console.ReadKey();
        }
        /// <summary>
        /// 选择模式方法 返回一个int值 1或者2
        /// </summary>
        static int SelectMode()
        {
            Console.WriteLine("请选择对战模式:");
            Console.WriteLine("1.人机对战  2.玩家对战");
            while (true)
            {
                Mode = Console.ReadLine();
                if (Mode == "1")
                {
                    Mode = "你选择的是--1.人机对战!";
                    return 1;
                }
                else if (Mode == "2")
                {
                    Mode = "你选择的是--2.玩家对战!";
                    return 2;
                }
                else
                {
                    Console.WriteLine("只能选择1或者2");
                    continue; //继续循环
                }
            }
        }
        /// <summary>
        /// 选择角色方法  传入一个参数 1.是人机对战角色 2.是人人对战
        /// </summary>
        static void Role(int i)
        {
            if (i == 1)
            {
                #region 人机对战角色:
                Console.WriteLine("请选择你的角色");
                Console.WriteLine("1.灵儿 2.逍遥哥 3.月如");
                while (true)
                {
                    Name = Console.ReadLine();
                    if (Name == "1")
                    {
                        Name = "灵儿";
                        break;
                    }
                    else if (Name == "2")
                    {
                        Name = "逍遥哥";
                        break;
                    }
                    else if (Name == "3")
                    {
                        Name = "月如";
                        break;  //跳出循环
                    }
                    else
                    {
                        Console.WriteLine("只能选择1或2或者3");
                        continue;
                    }
                }
                Console.WriteLine("你的角色是{0}", Name);
                #endregion
            }
          
            else
            {
                #region 人人对战:
                Console.WriteLine("请选择第一个人的角色");
                Console.WriteLine("1.灵儿 2.逍遥哥 3.月如");
                while (true)
                {
                    Names[0] = Console.ReadLine();
                    if (Names[0] == "1")
                    {
                        Console.WriteLine("第一个人的角色是灵儿");
                        break;
                    }
                    else if (string.Equals(Names[0], "2"))
                    {
                        Console.WriteLine("第一个人的角色是逍遥哥");
                        break;
                    }
                    else if (string.Equals(Names[0], "3"))
                    {
                        Console.WriteLine("第一个人的角色是月如");
                        break;  //跳出循环
                    }
                    else
                    {
                        Console.WriteLine("只能选择1或2或者3");
                        continue;
                    }
                }
                Console.WriteLine("请选择第二个人的角色");
                Console.WriteLine("1.灵儿 2.逍遥哥 3.月如");
                while (true)
                {

                    Names[1] = Console.ReadLine();
                    if (Names[0] == Names[1]) //判断两个人的名字是否相同
                    {
                        Console.WriteLine("两个人的名字不能一样!,请重新输入");
                    }
                    else if (string.Equals(Names[1], "1"))
                    {
                        Names[1] = "灵儿";
                        break;
                    }
                    else if (string.Equals(Names[1], "2"))
                    {
                        Names[1] = "逍遥哥";
                        break;
                    }
                    else if (string.Equals(Names[1], "3"))
                    {
                        Names[1] = "月如";
                        break;  //跳出循环
                    }
                    else
                    {
                        Console.WriteLine("只能选择1或2或者3");
                        continue;
                    }
                }
                Console.WriteLine("第二个人的角色是{0}", Names[1]);
                #endregion
            }
          
        }
        /// <summary>
        /// 游戏是否开始
        /// </summary>
        static void GameStart()
        {
            while (true)
            {
                Console.WriteLine("要开始游戏?(y/n)");
                string GameNum = Console.ReadLine();
                if (GameNum == "y")
                {
                    Console.Clear();
                    UI.StartUI();
                    Console.WriteLine("游戏开始......");
                    break;
                }
                else if (GameNum == "n")
                {
                    Console.Clear();
                    UI.StartUI();
                    Console.WriteLine("等待开始游戏......");
                    Console.ReadKey();
                    continue;
                }
                else
                {
                    Console.WriteLine("请选择y/n");
                    continue;
                }
            }
        }
        //进入两模式的判断 传入一个int值 1:人机对战 2:人人对战
        static void Gaming(int j)
        {
            Console.WriteLine("1.布 2.剪子 3.石头");
            if (j == 1)
            {
                #region 人机对战模式的判断:
                int numP;
                int numM;
                int i = 0;    //进行的次数
                bool nextGame = true;  //是否进行下一循环
                while (nextGame)
                {
                    #region 输入你出的拳
                    while (true)
                    {
                        try
                        {
                            Console.WriteLine("你先出拳......");
                            numP = Convert.ToInt32(Console.ReadLine());
                            switch (numP)
                            {
                                case 1:
                                    Console.WriteLine("你出的是:布");
                                    break;
                                case 2:
                                    Console.WriteLine("你出的是:剪子");
                                    break;
                                case 3:
                                    Console.WriteLine("你出的是:石头");
                                    break;
                                default:
                                    Console.WriteLine("没有你输入的这项!");
                                    continue;
                            }
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("请输入正确的数字!");
                            continue;
                        }
                    }
                    #endregion
                    #region 机器随机出拳......
                    Random rM = new Random();
                    numM = rM.Next(1, 4); //随机生成1、2、3
                    Console.WriteLine("电脑正在出拳......");
                    switch (numM)
                    {
                        case 1:
                            Console.WriteLine("机器出的是:布");
                            break;
                        case 2:
                            Console.WriteLine("机器出的是:剪子");
                            break;
                        case 3:
                            Console.WriteLine("机器出的是:石头");
                            break;
                    }
                    #endregion
                    #region 判断谁赢
                    if (numP == numM)
                    {
                        Console.WriteLine("出的一样,平手!");
                    }
                    else if (numP == 1)
                    {
                        if (numM == 2)
                        {
                            Console.WriteLine("你输了");
                        }
                        else
                            Console.WriteLine("你赢了");  //机器出3

                    }
                    else if (numP == 2)
                    {
                        if (numM == 1)
                        {
                            Console.WriteLine("你赢了");
                        }
                        else
                            Console.WriteLine("你输了");//机器出3
                    }
                    else if (numP == 3)
                    {
                        if (numM == 1)
                        {
                            Console.WriteLine("你输了");
                        }
                        else
                            Console.WriteLine("你赢了");//机器出2
                    }
                    #endregion
                    i++;
                    #region 两次以上就清屏
                    if (i > 1)
                    {
                        Console.Write("输入任意键继续......");
                        Console.ReadKey(false);
                        Console.Clear();
                        UI.StartUI();
                    }
                    #endregion
                    #region 问用户是否进行下一轮?
                    while (true)
                    {
                        Console.WriteLine("对战次数:{0}", i);
                        Console.WriteLine("是否开始下一轮:(y/n)?");
                        string next = Console.ReadLine();
                        if (next == "y")
                        {
                            nextGame = true;
                            break;
                        }
                        else if (next == "n")
                        {
                            nextGame = false;
                            Console.WriteLine("游戏结束,按任意键退出......");
                            break;
                        }
                        else
                        {
                            Console.WriteLine("请输入正确的字符......");
                            continue;
                        }
                    }
                    #endregion
                }
                #endregion
            }
            else  //j==2
            {
                #region 人人对战模式的判断:
                int numFirst;
                int numSecond;
                int i = 0;    //进行的次数
                bool nextGame = true;  //是否进行下一循环
                while (nextGame)
                {
                    #region 第一个人出拳
                    while (true)
                    {
                        try
                        {
                            Console.WriteLine("第一个人先出拳......");
                            numFirst = Convert.ToInt32(Console.ReadLine());
                            switch (numFirst)
                            {
                                case 1:
                                    Console.WriteLine("第一个人出的是:布");
                                    break;
                                case 2:
                                    Console.WriteLine("第一个人出的是:剪子");
                                    break;
                                case 3:
                                    Console.WriteLine("第一个人出的是:石头");
                                    break;
                                default:
                                    Console.WriteLine("没有你输入的这项!");
                                    continue;
                            }
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("请输入正确的数字!");
                            continue;
                        }
                    }
                    #endregion
                    #region 第二个人出拳
                    while (true)
                    {
                        try
                        {
                            Console.WriteLine("第二个人再出拳......");
                            numSecond = Convert.ToInt32(Console.ReadLine());
                            switch (numSecond)
                            {
                                case 1:
                                    Console.WriteLine("第二个人出的是:布");
                                    break;
                                case 2:
                                    Console.WriteLine("第二个人出的是:剪子");
                                    break;
                                case 3:
                                    Console.WriteLine("第二个人出的是:石头");
                                    break;
                                default:
                                    Console.WriteLine("没有你输入的这项!");
                                    continue;
                            }
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("请输入正确的数字!");
                            continue;
                        }
                    }
                    #endregion
                    #region 判断谁赢
                    if (numFirst == numSecond)
                    {
                        Console.WriteLine("出的一样,平手!");
                    }
                    else if (numFirst == 1)
                    {
                        if (numSecond == 2)
                        {
                            Console.WriteLine("第二个人赢了");
                        }
                        else
                            Console.WriteLine("第一个人赢了");  //第二个人出3

                    }
                    else if (numFirst == 2)
                    {
                        if (numSecond == 1)
                        {
                            Console.WriteLine("第一个人赢了");
                        }
                        else
                            Console.WriteLine("第二个人赢了");//第二个人出3
                    }
                    else if (numFirst == 3)
                    {
                        if (numSecond == 1)
                        {
                            Console.WriteLine("第二个人赢了");
                        }
                        else
                            Console.WriteLine("第一个人赢了");//第二个人出2
                    }
                    #endregion
                    i++;
                    #region 两次以上就清屏
                    if (i > 1)
                    {
                        Console.Write("输入任意键继续......");
                        Console.ReadKey(false);
                        Console.Clear();
                        UI.StartUI();
                    }
                    #endregion
                    #region 问用户是否进行下一轮?
                    while (true)
                    {
                        Console.WriteLine("对战次数:{0}", i);
                        Console.WriteLine("是否开始下一轮:(y/n)?");
                        string next = Console.ReadLine();
                        if (next == "y")
                        {
                            nextGame = true;
                            break;
                        }
                        else if (next == "n")
                        {
                            nextGame = false;
                            Console.WriteLine("游戏结束,按任意键退出......");
                            break;
                        }
                        else
                        {
                            Console.WriteLine("请输入正确的字符......");
                            continue;
                        }
                    }
                    #endregion
                }
                #endregion
            }
        }
    }
    #region 界面类
    class UI
    {
        public static void StartUI()
        {
            Console.WriteLine("*************************欢 迎 入 游 戏 世 界*************************");
            Console.WriteLine("\n");
            Console.WriteLine("                **************************************");
            Console.WriteLine("                **猜拳                          开始**");
            Console.WriteLine("                **************************************");
        }
        public static void EndUI()
        {
            Console.WriteLine("----------------------------------------------------------------------");
            Console.WriteLine("*************************游   戏   结   束 !*************************");
            Console.WriteLine("----------------------------------------------------------------------");
        }
    }
    #endregion
}

谢谢浏览......

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------