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();
    }
}

C#面向对象编程实例-猜拳游戏的更多相关文章

  1. js原生设计模式——3简单工厂模式\js面向对象编程实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  2. python面向对象编程实例解析

    1. 类和函数 面向对象编程的例子: #!/usr/bin/env python # -*- coding: utf-8 -*- class Person(object): #在属性和变量的前面增加“ ...

  3. Python3面向对象编程实例

    /*认真研究完这个实例,理解python面向对象编程的方法*/class Person: """人员信息""" # 姓名(共有属性) nam ...

  4. 大数据笔记(二十四)——Scala面向对象编程实例

    ===================== Scala语言的面向对象编程 ======================== 一.面向对象的基本概念:把数据和操作数据的方法放到一起,作为一个整体(类 c ...

  5. php 面向对象编程实例 __construct 和 __destruct 区别

    大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方 法.构 造函数的声明与其它操作的声明一样,只是其名称必须是_ ...

  6. javascript 仿面向对象编程实例代码(私有,公共变量。。。)

    //定义一个javascript类 function JsClass(privateParam,publicParam){//构造函数 var priMember = privateParam; // ...

  7. python面向对象编程实例

    1.编写程序, 编写一个学生类, 要求有一个计数器的属性, 统计总共实例化了多少个学生 class Student: """学生类""" c ...

  8. C++面向对象编程实例

    实例一.四位运算符操作 main.cpp. #include <iostream> #include "operator_1.h" #include <stdio ...

  9. Python实用笔记 (22)面向对象编程——实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...

随机推荐

  1. Sql 解释

    SQL(Structured Query Language) 结构化查询语言,虽然是查询语言,也是一种编程语言,但是执行查询操作. 根据数据的操作对象,可以将SQL语句分为几类. DDL(Data D ...

  2. C++输入结束

    通过判断输入是否等于EOF,可以结束输入. EOF 是个宏,其意思是:End Of File,文件尾标志. 从数值上来看,就是整数-1. 在C语言的头文件中对其进行了宏定义: libio.h:     ...

  3. 配置php的CAS客户端

    1.下载安装xmapp 2.开启Apache服务. 3.下载php的CAS客户端源码包(我使用的是CAS-1.2.0.tgz),解压到xmap的htdocs目录下(D:\xmapp\htdocs),进 ...

  4. java 泛型 窜讲

    一.为什么使用泛型      复用性:泛型的本质就是参数化类型,因而使用编写的泛型代码可以被许多不同类型的对象所复用.      安全性:在对类型Object引用的参数操作时,往往需要进行显式的强制类 ...

  5. mysql5.7的安装

    1.在官网下载解压缩版 2.解压后配置默认文件 新建个my.ini(可以复制一份my-default.ini,并改名为my.ini).my.ini会替换掉下面的my-default.ini文件. 按需 ...

  6. php 中 isset()函数 和 empty()函数的区别

    首先这两个函数都是用来测试变量的状态: isset()函数判断一个变量是否在 如果存在返回true  否则返回false empty()函数判断一个变量是否为空,如果为空返回true 否则返回fals ...

  7. Keil 4 与Proteus 7.8联调

    实验环境: windows 8.1 pro with Keil 4 and Proteus 7.8 both cracked. 步骤: 下载联调工具Vdmagdi,安装. keil下Option/De ...

  8. 星级评论jq

    html结构 <div class="list_item"> <span>商品包装满意度:</span> <b class="s ...

  9. Centos系统mysql 忘记root用户的密码

    Centos系统mysql 忘记root用户的密码: 第一步:(停掉正在运行的mysql) [root@maomao ~]# /etc/init.d/mysqld stop Stopping MySQ ...

  10. linux点滴:NFS

    介绍 NFS,Network File System,网络文件系统.主要功能是通过网络让不同的主机系统间共享资源,类似于windows下的文件共享.适用于互联网中小型企业. 工作原理 客户端发送请求 ...