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. ASP.NET Error Handling

    https://docs.microsoft.com/en-us/aspnet/web-forms/overview/getting-started/getting-started-with-aspn ...

  2. 修改Mysql数据库的字符集

    1.先检查数据库的默认字符集是否是引起不能存储中文的原因: 登录数据库后执行下面的命令 mysql> show variables like 'character%'; 由上图可以看出,data ...

  3. 2018 ICPC Asia Singapore Regional A. Largest Triangle (计算几何)

    题目链接:Kattis - largesttriangle Description Given \(N\) points on a \(2\)-dimensional space, determine ...

  4. upc组队赛12 Cardboard Container【枚举】

    Cardboard Container Problem Description fidget spinners are so 2017; this years' rage are fidget cub ...

  5. array排序(按数组中对象的属性进行排序)

    使用array.sort()对数组中对象的属性进行排序 <template> <div> <a @click="sortArray()">降序& ...

  6. 力扣算法题—143ReorderList

    Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You may not mod ...

  7. java 重新学习 (一)

    一 垃圾回收特点 1.垃圾回收的工作目标是回收物对象的内存空间,这些内存空间都是jvm堆内存里的空间,垃圾回收器值回收内存资源,对他的物理资源:数据库连接,磁盘I/O等资源则无能为力 2.更快进行垃圾 ...

  8. Passive Event Listeners——让页面滑动更加流畅的新特性

    Passive Event Listeners - 被动事件监听器 在写webapp页面的时候,Chrome 提醒 code 1 <code>[Violation] Added non-p ...

  9. flask中配置并使用mongodb

    在你安装并运行了mongodb的情况下: 随便在一个文件中写入以下代码: import pymongo client = pymongo.MongoClient(host="localhos ...

  10. python3中浮点数相减问题(大部分时候只需要关注整数的二进制形式就行了)

    首先直接上判断方法:一切判断直接将整数部分装化成二进制,如果位数相等则相减后的值是等于的,如果不相等,相减大的结果一定不等于你要比较的结果. 如66.6-60.6==6.0的情况,66.6的二进制:1 ...