zoukankan      html  css  js  c++  java
  • C#面向对象编程实例-猜拳游戏

    1.需求

    现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢。 

    2.需求分析

    根据需求,来分析一下对象,可分析出:玩家对象(Player)、计算机对象(Computer)、裁判对象(Judge)。 玩家出拳由用户控制,使用数字代表:1石头、2剪子、3布 计算机出拳由计算机随机产生 裁判根据玩家与计算机的出拳情况进行判断输赢 

    3.类对象的实现

    玩家类示例代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    class Player
    {
     
        string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
     
        public int ShowFist()
        {
            Console.WriteLine("请问,你要出什么拳?  1.剪刀     2.石头    3.布");
            int result = ReadInt(1, 3);
            string fist = IntToFist(result);
            Console.WriteLine("玩家:{0}出了1个{1}", name, fist);
            return result;
        }
     
        /// <summary>
        /// 将用户输入的数字转换成相应的拳头
        /// </summary>
        /// <param name="input">
        /// <returns></returns>
        private string IntToFist(int input)
        {
            string result = string.Empty;
     
            switch (input)
            {
                case 1:
                    result = "剪刀";
                    break;
                case 2:
                    result = "石头";
                    break;
                case 3:
                    result = "布";
                    break;
            }
            return result;
        }
     
        /// <summary>
        /// 从控制台接收数据并验证有效性
        /// </summary>
        /// <param name="min">
        /// <param name="max">
        /// <returns></returns>
        private int ReadInt(int min,int max)
        {
            while (true)
            {
                //从控制台获取用户输入的数据
                string str = Console.ReadLine();
     
                //将用户输入的字符串转换成Int类型
                int result;
                if (int.TryParse(str, out result))
                {
                    //判断输入的范围
                    if (result >= min && result <= max)
                    {
                        return result;
                    }
                    else
                    {
                        Console.WriteLine("请输入1个{0}-{1}范围的数", min, max);
                        continue;
                    }
                }
                else
                {
                    Console.WriteLine("请输入整数");
                }
            }
        }
    }

    计算机类示例代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    class Computer
    {
        //生成一个随机数,让计算机随机出拳
        Random ran = new Random();
        public int ShowFist()
        {
            int result = ran.Next(1, 4);
            Console.WriteLine("计算机出了:{0}", IntToFist(result));
            return result;
        }
     
        private string IntToFist(int input)
        {
            string result = string.Empty;
     
            switch (input)
            {
                case 1:
                    result = "剪刀";
                    break;
                case 2:
                    result = "石头";
                    break;
                case 3:
                    result = "布";
                    break;
            }
            return result;
        }
    }


    裁判类示例代码 这个类通过一个特殊的方式来判定结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class Judge
    {
        public void Determine(int p1, int p2)
        {
            //1剪刀   2石头 3布
            //1 3   1-3=-2 在玩家出1剪刀的情况下,计算机出3布,玩家赢
            //2 1   2-1=1   在玩家出2石头的情况下,计算机出1剪刀,玩家赢
            //3 2   3-2=1   在玩家出3布的情况下,计算机出2石头,玩家赢
            if (p1 - p2 == -2 || p1 - p2 == 1)
            {
                Console.WriteLine("玩家胜利!");
            }
            else if (p1 == p2)
            {
                Console.WriteLine("平局");
            }
            else
            {
                Console.WriteLine("玩家失败!");
            }
        }
    }

    4.对象的实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    static void Main(string[] args)
    {
        Player p1 = new Player() { Name="Tony"};
        Computer c1 = new Computer();
        Judge j1 = new Judge();
        while (true)
        {
            int res1 = p1.ShowFist();
            int res2 = c1.ShowFist();
            j1.Determine(res1, res2);
            Console.ReadKey();
        }
    }
  • 相关阅读:
    hreeJS加载Obj资源后如何实现内存释放?
    cookies,sessionStorage 和 localStorage 的区别
    解决ios手机页面overflow scroll滑动很卡的问题
    移动端计算滑动的距离
    设置滚动位置
    css实现右侧固定宽度,左侧宽度自适应
    5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系
    3.说一下你了解的弹性FLEX布局.
    一些面试题 没有答案
    嵌入式开发板和学习推荐平台——最新迅为4412开源硬件开发板
  • 原文地址:https://www.cnblogs.com/rr163/p/4112909.html
Copyright © 2011-2022 走看看