用C#语言做出来这个小游戏

2024-12-18 22:57:27
推荐回答(2个)
回答1:

既然你诚心诚意的问了,软糖就大发慈悲的告诉你。

花了点时间做出来了,效果图:

代码:

class Program {
        static void Main(string[] args) {
            int 局数 = 0;
            int 电脑得分 = 0; int 玩家得分 = 0;
            int 电脑数字 = 0; int 玩家数字 = 0;
            int 差;
            Random rnd = new Random();
            //循环出拳阶段
            while (局数 < 10) {
                玩家数字 = 0;
                Console.WriteLine("(第{0}局) 1剪刀 2石头 3布 ,请输入:", 局数 + 1);
                var k = Console.ReadKey();
                电脑数字 = rnd.Next(1, 3);
                if (k.KeyChar == '1') { 玩家数字 = 1; }
                if (k.KeyChar == '2') { 玩家数字 = 2; }
                if (k.KeyChar == '3') { 玩家数字 = 3; }
                差 = (电脑数字 - 玩家数字);
                局数 += 1;
                if (玩家数字 == 电脑数字) 
                { Console.WriteLine("  平手。"); }
                else if (玩家数字 == 0 || 差 == 1 || 差== -2 ) 
                { Console.WriteLine("  输了.."); 电脑得分 += 1; }
                else 
                { Console.WriteLine("  赢了!"); 玩家得分 += 1; }               
            }
            //评分统计阶段
            Console.WriteLine();
            Console.WriteLine("总计局数 {0}", 局数);
            Console.WriteLine("电脑得分 {0}", 电脑得分);
            Console.WriteLine("用户得分 {0}", 玩家得分);
            if (玩家得分 > 电脑得分) { Console.WriteLine("亲,给你好评喔!"); }
            else { Console.WriteLine("没脸见人啦..."); }
            //退出阶段
            Console.WriteLine();
            Console.WriteLine("< 按任意键退出... >");
            Console.ReadKey();
            Environment.Exit(0);
        }
    }

如满意,记得给好评,谢谢!

回答2:

我是一个C#新人菜鸡,偶然看见你的问题,决定自己试着写一下,代码如下(已运行跑通):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02_石头剪刀布
{
    class Program
    {
        public const int jiandao = 1;           //剪刀的数值
        public const int shitou = 2;            //石头的数值
        public const int bu = 3;            ////布的数值

        public static int scoreAI = 0;          //电脑的分数
        public static int scorePlayer = 0;          //玩家的分数

        public static int number=3;            //每次游戏的局数

        static void Main(string[] args)
        {
            //游戏规则:
            //由电脑随机出一个数(1、2、3中任意一个,1代表剪刀,2为石头,3为布)
            //你从控制台输入1个数(1、2、3中任意一个,1代表剪刀,2为石头,3为布)
            //每局输出谁胜利了,
            //每次开启游戏,一共是10局
            //一次游戏结束后,可以提示用户是否再来一次,用户可以选择继续或退出...


            //几个局部变量
            //(如果放在for循环里,会多次创建变量,不太好。而这些变量,只需要在for时,不停的赋值就行,不需要多次创建。)
            Random r = new Random();        //创建1个随机类的对象,用来随机用
            int valueAI;        //电脑出拳的数字
            string input;           //接收用户输入
            int valuePlayer;            //玩家出拳的数字


            //每次游戏的循环过程
            for (int i = 0; i < number; i++)
            {
                #region 单局游戏的过程
                valueAI = r.Next(1, 4);       //电脑出拳
                Console.WriteLine("第{0}局游戏,请出拳(1:剪刀   2:石头   3:布)",i+1);     //玩家出拳:1、提示
                input = Console.ReadLine();      //玩家出拳:2、接收玩家输入的字符串
                valuePlayer = Convert.ToInt32(input);       //玩家出拳:3、字符串转换成数字
                Console.WriteLine("电脑:{0}", Quan(valueAI));      //数字 → 拳的转换:电脑
                Console.WriteLine("玩家:{0}", Quan(valuePlayer));     //数字 → 拳的转换:玩家
                CheckWin(valueAI, valuePlayer);          //判定该局胜负
                Console.WriteLine();
                #endregion


                #region 本次游戏结束的处理
               if (i == number - 1)
                {
                    GameOver();//游戏结束
                    
                    //是否重玩
                    Console.WriteLine("\n是否继续游戏?  1:再来一局          2:退出");
                    string inputOver = Console.ReadLine();
                    int valueOver = Convert.ToInt32(inputOver);
                    if (valueOver == 1)         //选择1:要重置一些变量的值,还有循环的值,重新开始
                    {
                        i = -1;          //i要重置为0,重新循环
                        scoreAI = 0;            //scoreAI要重置为0
                        scorePlayer = 0;            //scorePlayer要重置为0
                    }
                    else            //选择2:退出main方法
                        return;
                }
               #endregion
            }
        }


        //方法:根据常量jiandao、shitou、bu数字,返回“剪刀、石头、布”字符
        /// 
        /// 数字 换算 拳
        /// 

        /// 剪刀、石头、布的常量值
        /// 返回“剪刀、石头、布”字符
        public static string Quan(int value)
        {
            string quan = "";
            switch (value)
            {
                case 1:
                    quan = "剪刀";
                    break;
                case 2:
                    quan = "石头";
                    break;
                case 3:
                    quan = "布";
                    break;
                default :
                    quan = "";
                    break;
            }
            return quan;
        }


        //方法:判定胜负
        /// 
        /// 判定胜负:比较电脑和玩家分别的骰子数值
        /// 

        /// 电脑的骰子数值
        /// 玩家的骰子数值
        public static void CheckWin(int valueAI,int valuePlayer)
        {
            int valueSub = valueAI - valuePlayer;
            if(valueSub==0)
                Console.WriteLine("本局结果:平局");
            else if (valueSub == -2 || valueSub == 1)
            {
                Console.WriteLine("本局结果:电脑胜利");
                scoreAI++;
            }
            else
            {
                Console.WriteLine("本局结果:玩家胜利");
                scorePlayer++;
            }
        }


        //方法:游戏结束
        /// 
        /// 游戏结束的判定
        /// 

        public static void GameOver()
        {
            if(scoreAI==scorePlayer)
                Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:平局",scoreAI,scorePlayer);
            else if(scoreAI                Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:玩家胜利", scoreAI, scorePlayer);
            else
                Console.WriteLine("电脑:{0}分\n玩家:{1}分\n本次游戏结果:电脑胜利", scoreAI, scorePlayer);
        }
    }
}