C#控制台应用:猜拳游戏逻辑实现与公用变量用法

Theo
Theo
发布时间:2026-10-13| 3人浏览过
原创

本文通过C#控制台应用程序示例,演示如何构建一个标准的猜拳游戏(剪刀石头布)。该实例重点展示了如何利用公用变量在类中维护玩家与电脑的得分状态,并通过简单的数学差值算法来判定单局胜负,最终基于累计得分判断整场比赛结果。

猜拳游戏核心逻辑

实现猜拳游戏的核心在于两点:一是将出拳动作数字化(通常1为剪刀,2为石头,3为布),二是建立判定胜负的算法。本示例采用了一种巧妙的算术方法:通过计算玩家数值与电脑数值的差值来判定结果,避免使用复杂的条件分支嵌套。

完整代码实现

以下是完整的C#控制台程序代码。程序定义了一个包含公用计数的类,并在Main方法中进行循环交互,直到一方达到3胜为止。

// 命名空间与类定义
namespace StructureReview_PublicVar 
{
    class Program
    {
        // 定义公用变量用于记录玩家(人)和电脑的得分
        public int rz = 0; // Human Score
        public int dz = 0; // Computer Score

        /// 
        /// 判断单局胜负
        /// 
        /// 玩家选择 (1-剪刀, 2-石头, 3-布)
        /// 电脑选择 (1-剪刀, 2-石头, 3-布)
        /// 结果字符串: "人", "电脑", "和"
        public string bj(int a, int b)
        {
            int d = a - b;
            // 根据差值判断胜负
            // 差值为1或-2表示玩家赢 (如 2-1=1石头剪刀, 1-3=-2剪刀布)
            if (d == -2 || d == 1)
            {
                return "人";
            }
            // 差值为2或-1表示电脑赢 (如 3-1=2布剪刀, 1-2=-1剪刀石头)
            else if (d == 2 || d == -1)
            {
                return "电脑";
            }
            else
            {
                return "和";
            }
        }

        static void Main(string[] args)
        {
            Random sj = new Random();
            Program zdy = new Program();

            // 循环直到任意一方达到3胜
            while (zdy.rz < 3 && zdy.dz < 3)
            {
                Console.WriteLine("请输入剪刀石头布的数字编码(1为剪刀,2为石头,3为布):");
                
                // 读取用户输入并转换为整数
                int inputStr = Console.ReadLine();
                if (!int.TryParse(inputStr, out int a)) 
                {
                    Console.WriteLine("输入无效,请重新输入。");
                    continue;
                }

                // 生成1到3之间的随机整数作为电脑的选择
                int b = sj.Next(1, 4);

                // 调用判定方法获取结果
                string jg = zdy.bj(a, b);

                // 根据结果更新得分并输出提示
                switch (jg)
                {
                    case "人":
                        zdy.rz++;
                        Console.WriteLine($"本局你获胜!当前比分:你{zdy.rz} : {zdy.dz} 电脑");
                        break;
                    case "电脑":
                        zdy.dz++;
                        Console.WriteLine($"本局电脑获胜!当前比分:你{zdy.rz} : {zdy.dz} 电脑");
                        break;
                    case "和":
                        Console.WriteLine("本局平局!");
                        break;
                }
            }

            // 比赛结束,判断最终赢家
            if (zdy.rz > zdy.dz)
            {
                Console.WriteLine("恭喜你!你赢了整场比赛");
            }
            else
            {
                Console.WriteLine("很遗憾,你输了整场比赛");
            }

            Console.ReadLine();
        }
    }
}

代码关键点解析

1. 状态维护: 在Program类中定义了public int rz和public int dz。这两个公用变量跨方法存储了双方的累计得分,这是实现“5局3胜”规则的关键数据载体。

2. 胜负判定算法: bj方法通过a - b的差值来规避大量的if-else。
- 当结果为“人”时,差值可能是-2(剪刀1 vs 布3)或1(石头2 vs 剪刀1)。
- 当结果为“电脑”时,差值可能是2(布3 vs 剪刀1)或-1(剪刀1 vs 石头2)。
这种方法简洁地覆盖了所有非平局的情况。

3. 循环控制: 主循环while (zdy.rz < 3 && zdy.dz < 3)确保了只要双方都未达到3胜,游戏就会持续进行。一旦任何一方分数达标,循环立即终止。

运行结果示例

程序启动后,控制台会提示输入数字。以下是一次典型的交互过程:

请输入剪刀石头布的数字编码(1为剪刀,2为石头,3为布):2
本局你获胜!当前比分:你1 : 0 电脑
请输入剪刀石头布的数字编码(1为剪刀,2为石头,3为布):1
本局电脑获胜!当前比分:你1 : 1 电脑
...

以上就是C#处理猜拳问题的简单实例详细内容,更多关于C#控制台游戏开发、公用变量使用的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。