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 = ;
switch(str)
{
case "石头": num = ; this.playerName = "石头"; break;
case "剪刀": num = ; this.playerName = "剪刀"; break;
case "布": num = ; 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,2,3之间的随机数
switch (num)
{
case : this.computerName = "石头"; break;
case : this.computerName = "剪刀"; break;
case : 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 =,
draw = ,
loss =
}
/// <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 == - || result== )
{
return (int)eResult.win;
}
else if (result == )
{
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]; }
}
}

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

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

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

    1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...

  2. 用Java编写的猜拳小游戏

    学习目标: 熟练掌握各种循环语句 例题: 代码如下: // 综合案例分析,猜拳案例 // isContinue为是否开始游戏时你所输入的值 char isContinue; //y为开始,n为借宿 S ...

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

    因为学的时间不长,所以借鉴了一些资料做了这个小程序,大家共同学习,共同进步.感觉很有自信,世上无难事,只怕有心人. using System; using System.Collections.Gen ...

  4. python学习-6 猜拳小游戏

    import random # 调用随机数模块 pc = random.randint(1,3) # 产生1-3的随机数 print("来玩个猜拳游戏吧!") a = '石头' b ...

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

    从今天起开始捣鼓小程序了2018-12-17   10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(tex ...

  6. Java石头剪刀布小游戏

    package com.neusoft.test; import java.awt.BorderLayout; import java.awt.Choice; import java.awt.Colo ...

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

    一.前言 最近学校举办的大学生程序设计竞赛,自己利用课余时间写了一个小游戏,最近一直在忙这个写这个小游戏,参加比赛,最终是老师说自己写的简单,可以做的更复杂的点的.加油 二.内容简介 自己玩过Andr ...

  8. 了解python,利用python来制作日常猜拳,猜价小游戏

    初次接触python,便被它简洁优美的语言所吸引,正所谓人生苦短,python当歌.python之所以在最近几年越发的炽手可热,离不开它的一些特点: 1.易于学习:Python有相对较少的关键字,结构 ...

  9. 分享几个原生javascript面向对象设计小游戏

    一.序言 不知大家是不是和我一样,当初都有个梦想.学编程,就是想开发游戏.结果进入大学学习之后,才知道搞的是数据库应用程序开发!在此,本人就分享下业余时间做的几个小游戏吧!本打算想用winform或w ...

随机推荐

  1. 腾讯云ubuntu16.04安装MySql5.7未提示密码设置且无法登陆解决

    一.安装 sudo apt-get update sudo apt install mysql-server 二.修改密码 1.由于安装过程中未提示要设置密码,且使用sudo mysql_secure ...

  2. MySQL 时间戳与日期格式的相互转换(转)

    1.UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 输出:2006-08-22 12:11:10 2.日期转换为U ...

  3. c++简单String类实现

    #include <iostream> #include <string> using namespace std; class String { public: String ...

  4. python学习笔记:通配符之glob模块(过滤)

    glob模块用来查找文件目录和文件,可以和常用的find功能进行类比.glob支持*?[]这三种通配符.返回的数据类型是list.常见的两个方法有glob.glob()和glob.iglob(),ig ...

  5. PAT甲级——A1154 VertexColoring【25】

    A proper vertex coloring is a labeling of the graph's vertices with colors such that no two vertices ...

  6. 数据库(二)—— MySQL索引优化

    目录 MySQL的索引优化 一.MySQL 5.7的初始化配置 二.MySQL配置文件 1.配置 2.配置文件作用 三.多实例 1.创建相关的目录 2.创建实例的配置文件 3.初始化 4.授权 5.启 ...

  7. 深入JAVA虚拟机笔记-垃圾收集器与内存分配策略

    第三章:垃圾收集器与内存分配 问题:1.哪些内存需要回收 2.什么时候回收 3.怎么回收 回收方法区:

  8. 正在从 Windows 应用商店下载... 无法从 Windows 应用商店下载。请检查网络连接。

    手贱关掉了一下服务,再打开就是嘛

  9. grep 正则2

    基本正则表达式所定义的元字符 元字符 作用 例子 例子说明 ^ 行首定位符 ^ty 匹配"t"开头,后面紧跟一个"y"的字符串 $ 行尾定位符 txt$ 匹配以 ...

  10. 【JDK1.8】Java HashMap实现细节

    底层是用数组实现的 /** * The table, initialized on first use, and resized as * necessary. When allocated, len ...