用C# Winform写个猜拳小游戏
简介
猜拳游戏,也叫划拳游戏. 顾名思义就是: 2个人在一起划拳,比谁赢,比谁输. 这里的猜拳游戏是人和电脑之间的较量.
原理
原理很简单, 给人3个值(字符串): 剪刀 石头 布. 电脑的出拳用的随机的Random函数得到整型值,然后将其转换成相应的字符串 用于显示在窗体界面上.同时再写一个方法将字符串(剪刀 石头 布)转成成相应的整型值. 写一个裁判的方法 将两者的整型值进行比较,得出输,赢,平局的结果.
界面设计(如图)
代码:
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; }
效果测试:
这样一个猜拳小游戏就做好了!~~~:)
作者:SilverSky(SoFlash)
出处:http://www.cnblogs.com/longwu/
欢迎学习和转载,转载请注明出处.