C#简易人机对抗“石头剪刀布”游戏的实现

yizhihongxing

C#简易人机对抗“石头剪刀布”游戏的实现攻略

1.游戏规则

石头剪刀布游戏是一种双方对抗的游戏,通过手势的比较来得出胜负,具体规则如下:

  • 石头胜剪刀
  • 剪刀胜布
  • 布胜石头

2.实现步骤

2.1.创建表单

首先,我们需要在Visual Studio中新建一个Windows Form Application项目,然后创建一个前端界面,用于显示游戏画面和结果。

2.2.添加控件

在窗体上创建三个按钮,分别对应“石头”、“剪刀”和“布”,用户点击按钮后触发比较操作,得出胜负结果。

2.3.设置游戏规则

我们需要定义一个枚举类型,用来表示游戏中的三种手势:

enum Gesture
{
    Stone,
    Scissors,
    Cloth
}

然后在比较函数中,对用户和电脑出拳进行比较,得出胜负结果。可以使用switch结构实现:

private string Compare(Gesture userGesture, Gesture computerGesture)
{
    switch (userGesture)
    {
        case Gesture.Stone:
            switch (computerGesture)
            {
                case Gesture.Stone:
                    return "平局";
                case Gesture.Scissors:
                    return "你赢了";
                case Gesture.Cloth:
                    return "你输了";
            }
            break;
        case Gesture.Scissors:
            switch (computerGesture)
            {
                case Gesture.Stone:
                    return "你输了";
                case Gesture.Scissors:
                    return "平局";
                case Gesture.Cloth:
                    return "你赢了";
            }
            break;
        case Gesture.Cloth:
            switch (computerGesture)
            {
                case Gesture.Stone:
                    return "你赢了";
                case Gesture.Scissors:
                    return "你输了";
                case Gesture.Cloth:
                    return "平局";
            }
            break;
    }
    return "";
}

2.4.实现随机出拳

在游戏中,电脑需要随机出拳,我们可以使用Random类实现随机数生成。这里我们可以使用以下代码:

Random random = new Random();
Gesture computerGesture = (Gesture)random.Next(0, 3);

2.5.完整代码示例

下面是完整的代码示例,展示了如何实现“石头剪刀布”游戏:

using System;
using System.Windows.Forms;

namespace StoneScissorsCloth
{
    public partial class Form1 : Form
    {
        enum Gesture
        {
            Stone,
            Scissors,
            Cloth
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void btnStone_Click(object sender, EventArgs e)
        {
            string result = Compare(Gesture.Stone);
            MessageBox.Show(result);
        }

        private void btnScissors_Click(object sender, EventArgs e)
        {
            string result = Compare(Gesture.Scissors);
            MessageBox.Show(result);
        }

        private void btnCloth_Click(object sender, EventArgs e)
        {
            string result = Compare(Gesture.Cloth);
            MessageBox.Show(result);
        }

        private string Compare(Gesture userGesture)
        {
            Random random = new Random();
            Gesture computerGesture = (Gesture)random.Next(0, 3);

            switch (userGesture)
            {
                case Gesture.Stone:
                    switch (computerGesture)
                    {
                        case Gesture.Stone:
                            return "平局";
                        case Gesture.Scissors:
                            return "你赢了";
                        case Gesture.Cloth:
                            return "你输了";
                    }
                    break;
                case Gesture.Scissors:
                    switch (computerGesture)
                    {
                        case Gesture.Stone:
                            return "你输了";
                        case Gesture.Scissors:
                            return "平局";
                        case Gesture.Cloth:
                            return "你赢了";
                    }
                    break;
                case Gesture.Cloth:
                    switch (computerGesture)
                    {
                        case Gesture.Stone:
                            return "你赢了";
                        case Gesture.Scissors:
                            return "你输了";
                        case Gesture.Cloth:
                            return "平局";
                    }
                    break;
            }
            return "";
        }
    }
}

3.示例说明

3.1.玩家胜利

如果用户选择石头,而电脑选择剪刀,那么用户就赢了,此时弹出消息框显示“你赢了”。

3.2.游戏平局

如果用户和电脑同时出了石头,那么游戏平局,此时弹出消息框显示“平局”。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#简易人机对抗“石头剪刀布”游戏的实现 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#编程读取文档Doc、Docx及Pdf内容的方法

    针对这个问题,我来详细讲解一下 “C#编程读取文档Doc、Docx及Pdf内容的方法” 的完整攻略。 问题背景 很多网站都需要解析文档内容来展示,但是文档的种类很多,而且格式各不相同,如Docx、Doc和PDF等。因此,需要在C#编程中编写一种方法来读取这些文档的内容。 解决方案 针对这个问题,我们可以使用以下两种方法来解决: 方法一:使用Microsoft…

    C# 2023年6月1日
    00
  • C# 撒列实现关键字过滤的实例

    C# 实现关键字过滤的实例 关键字过滤是一种常见的文本过滤技术,它可以用于过滤垃圾邮件、恶意评论、色情内容等不良信息。本文将介绍如何使用 C# 语言实现关键字过滤的功能。 步骤一:准备关键字列表 首先,我们需要准备一个包含关键字列表的文件,该文件中每一行包含一个关键字。例如,我们可以创建一个名为 “keywords.txt” 的文本文件,包含以下内容: 色情…

    C# 2023年6月7日
    00
  • CommunityToolkit.Mvvm8.1 IOC依赖注入控制反转(5)

      本系列文章导航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知识对您有所提示,同时欢迎交流和指正 作者:aierong出处:https://www.cnblogs.com/aierong     说明 …

    C# 2023年4月17日
    00
  • C#直线的最小二乘法线性回归运算实例

    C#直线的最小二乘法线性回归运算实例攻略 简介 在数据分析和模型建立过程中,直线的最小二乘法线性回归是一个比较常见的算法。在C#中,我们可以使用MathNet库来进行这个运算。 步骤 第一步:安装MathNet库 我们可以在Visual Studio的Nuget包管理器里搜索MathNet库,并安装依赖。 第二步:引入命名空间 在代码文件的头部,我们需要引入…

    C# 2023年6月8日
    00
  • C#更新SQLServer中TimeStamp字段(时间戳)的方法

    一、概述 TimeStamp字段也叫RowVersion字段,它的存储空间为8个字节,用来表示某一条记录的版本号,取值范围在datetime2类型的范围内,但它不是一个日期时间字段,也不是一个自增长字段,是Sql Server自有的一种数据类型。 在更新数据库表的时候,我们经常要更新TimeStamp字段,下面是C#更新SQLServer中TimeStamp…

    C# 2023年5月31日
    00
  • 用Newtonsoft将json串转为对象的方法(详解)

    当我们需要将 JSON 格式的字符串转换为 C# 对象时,通常会使用 Newtonsoft.Json 库。下面是将 JSON 字符串转换为 C# 对象的详细步骤: 步骤 1:安装 Newtonsoft.Json 库 首先,需要在项目中安装 Newtonsoft.Json 库。可以通过 NuGet 包管理器搜索并安装“Newtonsoft.Json”。 步骤 …

    C# 2023年5月31日
    00
  • C# 执行CMD命令并接收返回结果的操作方式

    下面我会详细讲解如何在C#中执行CMD命令并接收返回结果的操作方式,步骤如下: 第一步:引入命名空间和创建Process对象 using System.Diagnostics; 通过引入System.Diagnostics命名空间,我们可以使用Process类来执行CMD命令并接收返回结果。我们需要先创建一个Process对象来执行CMD命令,以便可以设置P…

    C# 2023年5月15日
    00
  • 使用HttpClient增删改查ASP.NET Web API服务

    以下是“使用HttpClient增删改查ASP.NET WebAPI服务”的完整攻略: 什么是HttpClient HttpClient是.NET Framework中的一个类,它提供一组用于发送请求和接收HTTP的方法。我们可以使用它来消费Web API服务。 使用HttpClient增删改查.NET WebAPI服务 以下是使用HttpClient增删改…

    C# 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部