0%

用C# Winform写个猜拳小游戏

简介

猜拳游戏,也叫划拳游戏. 顾名思义就是: 2个人在一起划拳,比谁赢,比谁输. 这里的猜拳游戏是人和电脑之间的较量.

原理

原理很简单, 给人3个值(字符串): 剪刀 石头 布. 电脑的出拳用的随机的Random函数得到整型值,然后将其转换成相应的字符串 用于显示在窗体界面上.同时再写一个方法将字符串(剪刀 石头 布)转成成相应的整型值. 写一个裁判的方法 将两者的整型值进行比较,得出输,赢,平局的结果.

界面设计(如图)

img

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
public FingerGuessingGame()
{
InitializeComponent();
//注册各个按钮的鼠标单击事件
this.btnJiandao.Click += (s, e) => { Jiandao(); };
this.btnShitou.Click += (s, e) => { Shitou(); };
this.btnBu.Click += (s, e) => { Bu(); };
}

/// <summary>
/// 玩家出剪刀
/// </summary>
public void Jiandao()
{
//将玩家单击按钮的内容显示在玩家出了的label框中
lblPlayer.Text = btnJiandao.Text;
//获取label框中的内容并转换成整数
int vPlayer = ChangeStrToInt(lblPlayer.Text);
//调用裁判的方法 将玩家和电脑的数据进行对比 并显示在结果框中
lblResult.Text = Judge(vPlayer, PC());
}

/// <summary>
/// 玩家出石头
/// </summary>
public void Shitou()
{
lblPlayer.Text = btnShitou.Text;
int vPlayer = ChangeStrToInt(btnShitou.Text);
lblResult.Text = Judge(vPlayer, PC());
}

/// <summary>
/// 玩家出布
/// </summary>
public void Bu()
{
lblPlayer.Text = btnBu.Text;
int vPlayer = ChangeStrToInt(btnBu.Text);
lblResult.Text = Judge(vPlayer, PC());
}

/// <summary>
/// 写一个将鼠标点击事件 将字符串转换成相应数值的方法
/// </summary>
/// <param name="str">玩家点击的按钮内容</param>
/// <returns>按钮相对应的整数值</returns>
public int ChangeStrToInt(string str)
{
int n = 0;
//对传入的字符串进行判断
switch (str)
{
case "剪刀":
n = 1;
break;
case "石头":
n = 2;
break;
case "布":
n = 3;
break;
default:
throw new Exception("未知出法");
}
return n;
}

/// <summary>
/// 写一个电脑随机出拳的方法
/// </summary>
/// <returns>电脑的出拳值</returns>
public int PC()
{
Random ran = new Random();
//random.Next方法 取最小值,但不取最大值, 所以在1-3内随机取值
int vPC = ran.Next(1, 4);
string strPC = string.Empty;
//进行简单判定 获取的随机值 同时转换成相应的字符串
switch (vPC)
{
case 1:
strPC = "剪刀";
break;
case 2:
strPC = "石头";
break;
case 3:
strPC = "布";
break;
default:
throw new Exception("未知错误:无法判断玩家出的拳!");
}
lblPC.Text = strPC;//显示电脑出的拳
return vPC;
}

/// <summary>
/// 比较玩家和电脑的值 判断谁赢谁输
/// </summary>
/// <param name="Player">玩家的出拳值</param>
/// <param name="PC">电脑的出拳值</param>
public string Judge(int Player, int PC)
{
//剪刀1 石头2 布3
//赢的情况有2种 1种是 玩家比电脑值大1 一种是小2
int tmp = Player - PC;
string judgedResult = string.Empty;
if (tmp == 1 || tmp == -2)
judgedResult = "你赢了";
//平的情况只有1种 即为出拳相同
else if (tmp == 0)
judgedResult = "平局";
//除此之外 只有输的情况了
else
judgedResult = "你输了";
return judgedResult;
}

效果测试:

img

img

img

这样一个猜拳小游戏就做好了!~~~:)

转自:https://www.cnblogs.com/longwu/archive/2011/10/17/2214531.html