C#小案例-->可控制输赢的猜拳小游戏

C#之winform 猜拳小游戏 c#猜拳小游戏 阅读详情

步骤 1:创建 Winform 项目并设计界面

步骤 2:编写代码实现切换逻辑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace 可控制输赢的剪刀石头布游戏
{
    /// <summary>
    /// 定义一个枚举(Enumeration),用来表示“石头”、“剪刀”、“布”这三种出拳选项。
    /// 每个枚举值都被赋予了一个对应的整数(石头=1,剪刀=2,布=3),便于后续的逻辑计算。
    /// </summary>
    public enum Code
    {
        石头 = 1,
        剪刀,
        布
    }

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //设置显示电脑出拳结果的 textBox2 为只读模式
            textBox2.ReadOnly = true;

            //遍历窗体上所有的 Button 控件,并为它们统一绑定 Click 事件处理器 CalcResult
            IEnumerable<Button> buttons = this.Controls.OfType<Button>();
            foreach (Button button in buttons)
            {
                button.Click += CalcResult;
            }
            // 遍历窗体上所有的 RadioButton 控件,并为它们统一绑定 CheckedChanged 事件处理器 StateCheckedChanged
            IEnumerable<RadioButton> radioButtons = this.Controls.OfType<RadioButton>();
            foreach (RadioButton radioButton in radioButtons)
            {
                radioButton.CheckedChanged += StateCheckedChanged;
            }
        }

        // 定义一个总次数
        private static int TotalCount = 0;
        // 定义一个赢的次数
        private static int WinCount = 0;
        //用于存储当前选择的游戏模式("随机"、"赢"、"输")
        private static string State = "随机";
        // 创建一个随机对象
        Random random = new Random();

        //单选按钮
        private void StateCheckedChanged(object sender, EventArgs e)
        {
            // 将触发事件的控件(sender)转换为 RadioButton 类型
            RadioButton radioButton = sender as RadioButton;
            // 检查这个单选按钮是否被选中。
            if (radioButton.Checked)
            {
                // 如果被选中,就将其 Text 属性(如 "随机"、"赢")赋值给全局状态变量 State。
                State = radioButton.Text;
            }
        }

        // 自定义一个方法 用于计算猜拳结果
        private void CalcResult(object sender, EventArgs e)
        {
            // 总次数累加1
            TotalCount++;

            // 先获取你点击的是哪一个button
            Button button = sender as Button;

            // 获取按钮上显示的文本
            string playerText = button.Text;

            // 把玩家的字符串信息先转换成数字
            int playerNum = (int)Enum.Parse(typeof(Code), playerText);

            // 电脑出拳 应该怎么出
            /*
              假设石头=1 剪刀=2 布=3
              玩家的值是确定的
              State的值来确定电脑应该出什么值    
              玩家赢:player - computer == -1 || player - computer == 2
              平局:  player - computer == 0
              玩家输(else):---->玩家输
             */
            //int computerNum = [条件1] ? [表达式1] : [条件2] ? [表达式2] : [条件3] ? [表达式3] : [表达式4];
            //int computerNum = [条件1] ? [表达式1] : ([条件2] ? [表达式2] : ([条件3] ? [表达式3] : [表达式4]));
            int computerNum = State == "随机" ? random.Next(1, 4) : State == "赢" ? playerNum == 3 ? 1 : playerNum + 1 : State == "输" ? playerNum == 1 ? 3 : playerNum - 1 : playerNum;

            // 来表达三种结果
            if (playerNum - computerNum == -1 || playerNum - computerNum == 2)
            {
                // 玩家赢
                WinCount++;
                textBox3.Text = "玩家赢";
            }
            else if (playerNum == computerNum)
            {
                textBox3.Text = "平局";
            }
            else
            {
                textBox3.Text = "玩家输";
            }

            textBox1.Text = playerText;// 玩家出拳信息
            textBox2.Text = ((Code)computerNum).ToString();// 电脑出拳信息
            label7.Text = "总次数:" + TotalCount + "次";
            label8.Text = "赢次数:" + WinCount + "次";
            label9.Text = "胜率:" + Math.Round(WinCount * 1.0 / TotalCount * 100, 2) + "%";

        }
    }
}

步骤3: 测试演示

希望对大家有所帮助。感谢大家的关注和点赞。

新手用Claude Code开发猜拳游戏:从AI生成到打包上线的全流程踩坑指南 AI编程工具如Claude Code正改变着软件开发的学习与实践方式,其核心原理是基于大语言模型的代码生成与补全能力。这项技术的价值在于能显著降低编程入门门槛,让开发者能更专注于逻辑设计与架构思考,而非语法细节。在实际应用场景中,它尤其适合快速原型验证、算法实现和编写工具脚本。本文以Python Tkinter开发图形界面猜拳游戏为例,深入剖析了从环境配置、需求描述、代码审查到UI美化、逻辑完善的全过程。针对API Key获取、网络环境配置、需求拆解技巧、边界条件处理等常见痛点,提供了具体解决方案。最后,还 阅读详情

相关推荐

用winform(c#窗体应用程序)实现推箱子小游戏

C#编程,用winfrom写一个童年的推箱子小游戏;

laiwangouliang的博客 8029

C# Winform翻牌子记忆小游戏

新建一个winform项目命名为Matching Game,选用.net core 6框架。有兴趣可以到微软官网查看相关细节,并把Form1.cs代码修改为。

冰凌的博客 1134

【C#+WinForms项目实战】2048小游戏(内含详解,通俗易懂,简单上手)

这次的小游戏项目对我而言还只是练手,不算是正式的实践,却让我真正迈出了那艰难的一步。我知道写出来的程序远远不够完美,存在着许多明显的缺陷,甚至可以说还是个半成品,但起码我做到了靠自己一个人的能力搞出了这个小项目,为我将来的技术进步奠定了基础。千里之行始于足下,不积跬步无以至千里。整体看来,这个项目还有很多需要改进的地方,例如减少底层处理耗时、选择新的配色方案、添加动态效果等等。望各位大佬多多支持,相信在日后的学习中我也能有所成长。最后的最后,放一个成果图(笔者太菜了,至今合不出2048……

m0_75104457的博客 2467

基于C#的Winform简单消除小游戏开发

基于C#的Winform的简单消除小游戏开发,适合新手快速上手。

Vampire_LHT的博客 6676

智能驾驶感知模块评测实战:如何用回灌测试提升BEV模型准确率(附数据集处理技巧)

本文深入探讨了如何通过诊断型回灌测试系统性地提升智能驾驶BEV感知模型的准确率与鲁棒性。文章详细拆解了从场景切片、时空对齐到多维指标分析的完整评测流水线,并针对BEV模型特有的深度估计、特征融合等环节提供了优化思路,旨在帮助工程师将海量路采数据转化为精准的模型迭代燃料。

weixin_29045585的博客 395

Axure RP 9在Windows 11环境下的高效安装与配置指南

本文提供Axure RP 9在Windows 11系统下的详细安装步骤与配置指南。针对Win11安全特性,从获取官方安装资源、调整系统权限,到定制化安装路径、精准汉化及性能优化,系统性地解决了安装闪退、汉化失败、运行卡顿等常见问题,确保用户获得稳定流畅的原型设计体验。

mango的博客 480

利用C#中WinForm设计一个小游戏:DoYouLoveMe???

利用C#中WinForm设计一个小游戏:DoYouLoveMe???

hjl011006的博客 1415

MobaXterm详细使用教程

当然MobaXterm的功能远不止这些,但这些是最基本,最常用的,因此先拿出来讲。点击确定后,输入密码(输入密码时并不会显示,只管输入后按确定即可,第一次登陆成功后会提示保存密码,一般选择同意),就可以连接上虚拟机了。(2) 我们可以直接apt-get安装vim等常用功能(或者官网下载插件),实现在windows下模拟linux环境,这样就可以使用vi命令准备INCAR文件,也可以使用Gnuplot进行绘图。支持 Unix 命令(bash,ls,cat,sed,grep,awk,rsync,…

博客 4万+

Winform实现石头剪刀布小游戏

裁判结果为玩家的输赢。

qq_27474555的博客 615

GD32F450以太网(2-2): PHY芯片IP101GR介绍

IP101是台湾省九阳电子公司生产制造的,符合IEEE 802.3/802.3u标准单端口快速以太网收发器100Mbps和10Mbps操作,它支持自动MDI/MDIX功能,简化网络安装和减少系统维护成本。支持Auto MDI/MDIX已内置4个49.9欧的精密电阻支持中断功能支持 MII/RMII 接口超低功耗

Zhichao_Zhang的博客 1万+

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 694

C# 实现控制台猜拳小游戏

C# 实现控制台猜拳游戏(新手入门程序) class Program { /// <summary> /// 剪刀 用0表示 /// </summary> private const int JIANDAO = 0; /// <summary> /// 石头用 1表示 /// </summary> private const

golden_stone_fish的博客 2033

读懂 SAP Fiori Administration Catalogs:从管理员入口、权限编排到 Spaces 和 Pages 的落地实践

SAP Fiori 管理员目录的核心价值在于为系统配置提供标准化入口,解决权限与展示分离的问题。随着 SAP_UI 7.55 版本更新,SAP_FLP_ADMIN 角色整合了关键管理工具(如 Launchpad Designer、Content Manager),并通过 Business Catalog 和 Space 的协同作用,确保管理员既能访问配置工具,又能直观查看相关功能入口。项目实施中需注意配置层级(系统级/客户端级)的选择,以及多人协作时的数据同步问题,以提升交付效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

C#猜拳游戏实现:从随机算法到可控输赢的设计模式应用

在软件开发中,控制流程和算法设计是构建应用程序的基础。通过状态机模式和策略模式,开发者可以灵活管理程序行为,实现逻辑的模块化与可扩展性。随机数生成与取模运算等数学原理,为处理循环关系数据结构提供了高效解决方案。这些技术的工程价值在于提升代码的可维护性和可测试性,特别适用于游戏开发、规则引擎等需要动态行为切换的场景。本文以C#实现一个可控制输赢的猜拳游戏为例,深入探讨了如何利用枚举、switch语句和数学公式优雅地实现“作弊”逻辑,并展示了如何通过面向对象设计将公平模式与作弊模式解耦。项目中涉及的输入验证、异

weixin_34099526的博客 424

华为OD机考双机位C卷 - AI处理器组合 (Java & Python & JS & GO & C++ & C)

> 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录点击查看: [【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)](https://blog.youkuaiyun.com/banxia_frontend/article/details/155503868)

算法大师! 233

2025_NIPS_Grounded Reinforcement Learning for Visual Reasoning

尽管基于思维链的强化学习已在数学、编程等任务中显著提升语言模型性能,但视觉推理面临额外复杂性——需模型引导视觉注意力、解读感知输入,并将抽象推理锚定到空间证据上。本文提出ViGoRL(视觉接地强化学习),这是一种通过强化学习训练的视觉语言模型,能将每个推理步骤明确锚定到特定视觉坐标。受人类视觉决策启发,ViGoRL学会生成空间接地的推理轨迹,在每个步骤引导视觉注意力聚焦任务相关区域。当需要细粒度探索时,我们提出的多轮强化学习框架允许模型随着推理展开动态缩放至预测坐标。

c_cpp_csharp的专栏 59

基于控制台的人机猜拳小游戏

这是一个简单的猜拳小游戏。唯一亮点在于对判断输赢的算法作了优化,if((human_opt-comp_opt+1)%3==0)这句是文眼。 importjava.util.Scanner; publicclassTest{ publicstaticvoidmain(String[]args){ //假设1代表石头,2代表剪刀,3代...

weixin_34417635的博客 186

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

c# 入门 猜拳小游戏 怎么实现 出拳时按错了能重新出拳 谢谢了

for (c = 1; c &gt; 0; c++) { Console.WriteLine (“猜拳”); Console.WriteLine (“猜拳游戏开始”); Console.WriteLine (“请输入用户名”); string yy = Conso...

lyb19940526的博客 754

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C#面对对象猜拳游戏

1.要求玩家对象(Player)、计算机对象(Computer)、裁判对象(Judge)。 玩家出拳由用户控制,使用数字代表:1石头、2剪子、3布 计算机出拳由计算机随机产生 裁判根据玩家与计算机的出拳情况进行判断输赢 玩家对象代码: class Player { public Player(string a) { Name = a...

LB_0015的博客 547

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【编程挑战】打造你的智能猜拳对手,看谁能笑到最后?!(c#)! 立即点击,开启你的智能猜拳挑战!

case -1: Console.WriteLine("你赢了");Console.WriteLine($"最终你还是输了,比分 你{win}:电脑{los}");case -2: Console.WriteLine("输了");case 2: Console.WriteLine("你赢了");case 1: Console.WriteLine("输了");case 0: Console.WriteLine("平局");Console.WriteLine("1.开始/或者继续游戏\n2.退出游戏");

w3cwxl的博客 799

C#面向对象编程-猜拳游戏

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

刘岩的专栏 2681

C# winform简易连连看小游戏

先上图片预览 需要的所有属性字段: //背景色集 Color[] cls = new Color[] {Color.White,Color.AliceBlue,Color.Aqua,Color.Azure ,Color.Bisque,Color.Gray,Color.Red,Color.Coral,Color.Brown,Color.Yellow}; String[] images = new string[] {"1.png

m0_55940939的博客 4870

五步带你使用C#winform制作贪吃蛇小游戏

/ 毫秒// 确保食物不在蛇身上// 游戏逻辑和绘制逻辑(略)// 键盘事件处理(略)// Timer Tick 事件处理(略)// 绘制蛇和食物的方法(略)// 游戏结束逻辑(略)// 枚举方向Left,Right,Up,Down。

Xiaoxin的博客 1099

C#使用winform做一个开关小游戏

游戏时,任意点击一个格子,其自身状态改变,且上下左右四个格子的状态也进行变化,即:原来是开的变成关的,原来是关的变成开的。从button1这里开始,只要按下按钮1,它上下左右的按钮就得进入相反的颜色状态(开关)。可以看出,按钮1只有上和右的邻居按钮2,6。选中所有的按钮,在text属性处双击,清空,会发现。

yuwoxinanA3的博客 3727

基于winform(C#)的飞鸟小游戏

本项目是一款基于C# (winform)版本的飞鸟小游戏,是一款益智类游戏 其效果如下图所示 如上图所示为飞鸟游戏的初始化界面: 可以看到游戏包含了四个功能: 启动 注册 登陆 排行榜 启动:是用于开始游戏的 注册:是用于玩家注册用户名,方便后面排行榜的展示 登陆:是在玩家注册好了用户名字之后,玩家即可进行登陆 排行榜:对玩家在游戏中获得的分数进行排行的,玩家可以看到自己的排名 注册界...

陶陶name 5265
上一篇: C#小案例-->人机猜拳小游戏
下一篇: C# 线程与并发编程完全指南:从基础到高级带详细注释版(一篇读懂)
MM_MS
博客等级 码龄1年 58粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MM_MS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值