C#之winform 猜拳小游戏

C#之winform 猜拳小游戏

1、建立项目文件

2、进行界面布局

2、1 玩家显示(控件:label)

2、2  显示玩家进行选择的控件(控件:label)

2、3 电脑显示(控件:label)

2、4   显示电脑进行选择的控件(控件:label)

2、5 结果显示(控件:label)

2、6 玩家与电脑的游戏结果(控件:textBox)

2、7  玩家的选择按钮(控件:Button)

2、8 玩家的选择按钮(控件:Button)

2、9  玩家的选择按钮(控件:Button)

2、10 运行

3 、代码实现

3、1 创建玩家的类?

3、2 创建电脑的类

3、3 创建裁判类(决策是谁赢了)

3、4 功能实现

3、4、1 打开Form1对应的代码

3、4、2 窗口的控制代码


1、建立项目文件

2、进行界面布局

在这个界面布局中,我们要修改一些属性(下面的序号与上面的截图一一对应):

2、1 玩家显示(控件:label)

其中,Name :是我们在程序中对这个变量进行控制的名称

text:控件label在显示的时候的名称。

2、2  显示玩家进行选择的控件(控件:label)

Name :是我们在程序中对这个变量进行控制的名称

这里是指的是选择的是:石头、剪刀、布

2、3 电脑显示(控件:label)

Name :是我们在程序中对这个变量进行控制的名称

text:控件label在显示的时候的名称。

2、4   显示电脑进行选择的控件(控件:label)

Name :是我们在程序中对这个变量进行控制的名称

这里是指的是选择的是:石头、剪刀、布

2、5 结果显示(控件:label)

Name :是我们在程序中对这个变量进行控制的名称
text:控件label在显示的时候的名称。

2、6 玩家与电脑的游戏结果(控件:textBox)

Name :是我们在程序中对这个变量进行控制的名称

这里是指的是选择的是:赢、输、平

2、7  玩家的选择按钮(控件:Button)

Name :是我们在程序中对这个变量进行控制的名称
text:控件label在显示的时候的名称。

2、8 玩家的选择按钮(控件:Button)

Name :是我们在程序中对这个变量进行控制的名称
text:控件label在显示的时候的名称。

2、9  玩家的选择按钮(控件:Button)

Name :是我们在程序中对这个变量进行控制的名称
text:控件label在显示的时候的名称。

2、10 运行

  通过上面的布局后,我们可以进行运行一下,会得到一个界面

3 、代码实现

在这里,我们需要变现相应的代码,来实现上面的控件所要实现的功能;

3、1 创建玩家的类

创建类

Player.cs的内容如下:

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

namespace CaiQuanMyself
{
    class Player
    {
        // 储存玩家的名称
        public string playerName
        {
            set;
            get;
        }
        /// <summary>
        /// funtion: 实现玩家猜拳的名称与数字之间的对应关系
        /// 1石头     2剪刀     3布
        /// return type: int
        /// </summary>
        /// <param name="str">玩家猜拳的名称</param>
        /// <returns>猜拳的名称对应的数字;如玩家选择"布",对应输出数字"3"</returns>
        public int PlayerInformation(string str)
        {

            int num = 0;
            switch(str)
            {
                case "石头": num = 1; this.playerName = "石头"; break;
                case "剪刀": num = 2; this.playerName = "剪刀"; break;
                case "布":   num = 3; this.playerName = "布"; break;
            }
            return num;
        }
    }
}

3、2 创建电脑的类

(创建方式同3、1)

实现的类如下:

Computer.cs

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

namespace CaiQuanMyself
{
    class Computer
    {
        // 电脑猜拳的名称
        public string computerName
        {
            set;
            get;
        }
        /// <summary>
        /// function: 返回电脑出的拳对应的数字,同时将对应的名称存储
        /// return type: int
        /// </summary>
        /// <returns>返回猜拳对的数字</returns>
        public int ComputerInformation()
        {
            //1石头     2剪刀     3布
            Random rd = new Random();
            int num = rd.Next(1, 4); // 1,2,3之间的随机数
            switch (num)
            {
                case 1: this.computerName = "石头"; break;
                case 2: this.computerName = "剪刀"; break;
                case 3: this.computerName = "布";   break;
            }

            return num;
        }
    }
}

3、3 创建裁判类(决策是谁赢了)

(创建方式同3、1)

实现的类如下:

Referee.cs

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

namespace CaiQuanMyself
{
    class Referee
    {
//裁判情况表格
//1石头  2剪刀  3布
//玩家  对应名称 电脑  对应名称 结果  玩家结果
//1        石头      1        石头      0            平
//1        石头      2        剪刀      -1        赢
//1        石头      3        布        -2        输
//
//2        剪刀      1        石头      1            输
//2        剪刀      2        剪刀      0            平
//2        剪刀      3        布        -1        赢
//
//3        布           1        石头      2            赢
//3        布        2        剪刀      1            输
//3        布        3        布        0            平

        /// <summary>
        /// 裁判判决的情况
        /// </summary>
        public enum eResult
        {
            win =0,
            draw = 1,
            loss =2
        }
        /// <summary>
        /// 裁判判决的情况
        /// </summary>
        public string[] sResult = new string[] { "赢", "平", "输"};

        /// <summary>
        /// 裁决玩家与电脑之间的猜拳结果
        /// return type : int
        /// </summary>
        /// <param name="playerChoice">玩家猜拳</param>
        /// <param name="computerChocie">电脑猜拳</param>
        /// <returns>猜拳结果</returns>
        public int Judgement(int playerChoice, int computerChocie)
        {
            //result = -1,2赢  0平  其他则输  (指的是玩家输赢的情况)
            int result = playerChoice - computerChocie;
            if (result == -1 || result==2 )
            {
                return (int)eResult.win;
            }
            else if (result == 0)
            {
                return (int)eResult.draw;
            }
            else
            {
                return (int)eResult.loss;
            }
        }
    }
}

3、4 功能实现

3、4、1 打开Form1对应的代码

3、4、2 窗口的控制代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CaiQuQuanGame
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //禁止最大化窗口
            this.MaximizeBox = false;
            // 禁止对窗口进行拖拉
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }
        // 点击事件触发
        private void butStone_Click(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            RunGame(btn.Text);
        }
        public void RunGame(string playerChoice)
        {
            // 获取输入
            Player pChoice = new Player();
            int pResult = pChoice.PlayerInformation(playerChoice);
            labPlayerChoice.Text = pChoice.playerName;

            Computer cChoice = new Computer();
            int cResult = cChoice.ComputerInformation();
            labComputerChoice.Text = cChoice.computerName;

            // 结果判断
            Referee rChoice = new Referee();
            int rResult = rChoice.Judgement(pResult, cResult);

            // 输出
            textBoxResult.Text = rChoice.sResult[rResult];

        }
    }
}

到这里我们就完成了整个猜拳游戏的编写。

原文地址:https://www.cnblogs.com/jyfootprint/p/10121629.html

时间: 2024-11-05 11:05:45

C#之winform 猜拳小游戏的相关文章

猜拳小游戏

1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 3 <title>无标题文档</title 4 ><script type="text/javascript"> 5 function rd(a) 6 { 7 var c; 8 c=Math.floor(Math.random(

Java猜拳小游戏(剪刀、石头、布)

import java.util.Random; import java.util.Scanner; public class caiquan { public static void main(String[] args) { Random r=new Random(); int diannao=r.nextInt(3)+1; Scanner s=new Scanner(System.in); System.out.println("=========猜拳小游戏=========")

JS小游戏----猜拳小游戏

这周学习了JS 的基础数据 函数 和 对象 每一个都是很多的属性和方法 下面是对象做的Xmind 有很多方法 创建对象的方法 遍历对象 添加删除对象中的属性 访问对象的方法 点 中括号 访问法 猜拳游戏 实际原理其实很简单  规则大家全世界都通用 所以 这个游戏 短短几行 switch就可以 把简易的原理实现出来 但是要做的 像一个小游戏一样 能应对各种情况 和 前进 和 后退的操作 加了一些switch 语句 让分支语句更多  是考虑到的情况更加全面  然后用 函数包装 功能模块 列如 判断模

winform小程序---猜拳小游戏

因为学的时间不长,所以借鉴了一些资料做了这个小程序,大家共同学习,共同进步.感觉很有自信,世上无难事,只怕有心人. 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threadi

人机猜拳小游戏

朋友做的小案例,结构很清晰 void Main() { Game gmr = new Game(); gmr.Init(); gmr.Playing(); gmr.ShowResult(); Console.WriteLine ("程序结束"); } //玩家类 class Player { //玩家昵称 public string Name { get; set; } //积分 public int Score { get; set; } //出拳方法 public int Show

No.21 Java猜拳小程序

猜拳小游戏 import java.util.*; //导入包public class game { public static void main (String[]args){ Scanner in = new Scanner(System.in); //导入 Scanner System.out.println("-----------------猜拳游戏-------------------"); System.out.println("请出拳 (1.剪刀 2.石头

Java石头剪刀布小游戏

package com.neusoft.test; import java.awt.BorderLayout; import java.awt.Choice; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.a

微信小程序开发入门学习(1):石头剪刀布小游戏

从今天起开始捣鼓小程序了2018-12-17   10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(text).图像组件(image)和按钮组件(button).在创建小程序工程时,默认建立了两个页面:index 和 logs.我们不需要管 logs,在这个例子中只修改和 index 页面相关的文件,index 是小程序第一个显示的页面,其中 index.wxml 文件是 index 页面的布局文件.

软件工程 Android小游戏 猜拳大战

一.前言 最近学校举办的大学生程序设计竞赛,自己利用课余时间写了一个小游戏,最近一直在忙这个写这个小游戏,参加比赛,最终是老师说自己写的简单,可以做的更复杂的点的.加油 二.内容简介 自己玩过Android系统下的节奏大师,自己也就考虑做一个类似的,然后自己写技术水平有限,还是在学习Android阶段,自己就想到可以写一个猜拳的比较小游戏. 这是一款基于Android平台小游戏—猜拳大战,简单,易操作,趣味强,训练反应速度,内存小,没有广告,安全. 最大的特点:训练人的反应速度. 游戏规则:在3