C#实现石头剪刀布游戏

 更新时间:2020年10月11日 17:05:37   作者:Handsome Wong  
这篇文章主要为大家详细介绍了C#实现石头剪刀布游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C#实现石头剪刀布的具体代码,供大家参考,具体内容如下

代码

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 石头剪刀布
{
 public partial class Form1 : Form
 {
  int computer_sorce = 0;
  int user_sorce = 0;
  int i=0,j = 0;
  int last_step = -1;//0表示平局,1为电脑上步加一,2为用户上步加一
  public Form1()
  {
   InitializeComponent();
   this.Text = "石头剪刀布";
   label3.Text = ":";
   label1.Visible = false;
   label2.Visible = false;
   label3.Visible = false;
   label4.Visible = false;
   button1.Text = "开始游戏";
   button2.Text = "重新开始";
   button3.Text = "悔棋";
   button4.Text = "退出";
   button2.Visible = false;
   button3.Visible = false; 
   button4.Visible = false;
   pictureBox2.Visible = false;
   pictureBox3.Visible = false;
   pictureBox3.Visible = false;
   pictureBox4.Visible = false;
   pictureBox5.Visible = false;
   pictureBox6.Visible = false;
   pictureBox7.Visible = false;
   pictureBox8.Visible = false;
   pictureBox9.Visible = false;
   pictureBox10.Visible =false;
   pictureBox11.Visible = false;
  }
  private void Form1_Load(object sender, EventArgs e)
  {

  }
  private void button1_Click(object sender, EventArgs e)
  {
   pictureBox1.Visible = false;
   button1.Visible = false;
   button1.Enabled = false;
   pictureBox2.Visible = true;
   pictureBox3.Visible = true;
   pictureBox4.Visible = true;
   pictureBox5.Visible = true;
   pictureBox6.Visible = true;
   pictureBox7.Visible = true;
   pictureBox8.Visible = true;
   pictureBox9.Visible = true;
   pictureBox10.Visible = true;
   pictureBox11.Visible = true;
   button2.Visible = true;
   button3.Visible = true;
   button4.Visible = true;
   
  }
  private void game_computer()
  {
   Random rand = new Random();
   i = rand.Next(4);
   if (i == 1)
   {
    pictureBox10.Load("..\\..\\picture\\1.jpg");
   }
   else if (i == 2)
   {
    pictureBox10.Load("..\\..\\picture\\2.jpg");
   }
   else if(i == 3)
   {
    pictureBox10.Load("..\\..\\picture\\3.jpg");
   }
  }
  private void game_judgment()
  {
   if (i == 1)//电脑出石头
   {
    if (j == 1)
    {
     last_step = 0;
    }
    else if (j == 2)//用户出剪刀
    {
     computer_sorce++;
     last_step = 1;
    }
    else if (j == 3)//用户出布
    {
     user_sorce++;
     last_step = 2;
    }
   }
   else if (i == 2)//电脑出剪刀
   {
    if (j == 1)//用户出石头
    {
     user_sorce++;
     last_step = 2;
    }
    else if (j == 2)
    {
     last_step = 0;
    }
    else if (j == 3)//用户出布
    {
     computer_sorce++;
     last_step = 1;
    }
   }
   else if (i == 3)//电脑出布
   {
    if (j == 1)//用户出石头
    {
     computer_sorce++;
     last_step = 1;
    }
    else if (j == 2)//用户出剪刀
    {
     user_sorce++;
     last_step = 2;
    }
    else if (j == 3)
    {
     last_step = 0;
    }
   }
   if (computer_sorce == 2)//当电脑分数到2时,显示you lose
   {
    label1.Visible = true;
    pictureBox7.Enabled = false;//结果出来后三个图片按钮失效
    pictureBox8.Enabled = false;
    pictureBox9.Enabled = false;
    label1.Text = "YOU LOSE!";
   }
   else if (user_sorce == 2)//当用户分数到2时,显示you win
   {
    label1.Visible = true;
    pictureBox7.Enabled = false;
    pictureBox8.Enabled = false;
    pictureBox9.Enabled = false;
    label1.Text = "YOU WIN!";
   }
  }
  private void button4_Click(object sender, EventArgs e)//退出按钮
  {
   this.Close();
  }
  private void pictureBox7_Click(object sender, EventArgs e)//用户石头图片
  {
   j = 1;
   pictureBox10.Visible = true;//划拳图片显示正常
   pictureBox11.Visible = true;
   label2.Visible = true;//计分器三个label显示
   label3.Visible = true;
   label4.Visible = true;
   game_computer();
   game_judgment();
   label2.Text = computer_sorce.ToString();
   label4.Text = user_sorce.ToString();
   pictureBox11.Load("D:\\newdesktop\\1.jpg");
  }
  private void pictureBox8_Click(object sender, EventArgs e)//用户剪刀图片
  {
   j = 2;
   pictureBox10.Visible = true;//划拳图片显示正常
   pictureBox11.Visible = true;
   label2.Visible = true;//计分器三个label显示
   label3.Visible = true;
   label4.Visible = true;
   game_computer();
   game_judgment();
   label2.Text = computer_sorce.ToString();
   label4.Text = user_sorce.ToString();
   pictureBox11.Load("D:\\newdesktop\\2.jpg");
  }
  private void pictureBox9_Click(object sender, EventArgs e)//用户布图片
  {
   j = 3;
   pictureBox10.Visible = true;//划拳图片显示正常
   pictureBox11.Visible = true;
   label2.Visible = true;//计分器三个label显示
   label3.Visible = true;
   label4.Visible = true;
   game_computer();
   game_judgment();
   label2.Text = computer_sorce.ToString();
   label4.Text = user_sorce.ToString();
   pictureBox11.Load("D:\\newdesktop\\3.jpg");
  }
  private void button2_Click(object sender, EventArgs e)
  {
   pictureBox7.Enabled = true;//重新开始后三个图片按钮生效
   pictureBox8.Enabled = true;
   pictureBox9.Enabled = true;
   i = 0;
   j = 0;
   computer_sorce = 0;
   user_sorce = 0;
   label2.Text = computer_sorce.ToString();
   label4.Text = user_sorce.ToString();
   pictureBox10.Visible = false;
   pictureBox11.Visible = false;
   label1.Visible = false;
   label2.Visible = false;
   label3.Visible = false;
   label4.Visible = false;
  }
  private void button3_Click(object sender, EventArgs e)
  {
   label1.Visible = false;
   pictureBox7.Enabled = true;
   pictureBox8.Enabled = true;
   pictureBox9.Enabled = true;
   pictureBox10.Visible = false;
   pictureBox11.Visible = false;
   if (last_step == 0)
   {
   }
   else if (last_step == 1)
   {
    computer_sorce--;
    label2.Text = computer_sorce.ToString();
    label4.Text = user_sorce.ToString();
   }
   else if (last_step == 2)
   {
    user_sorce--;
    label2.Text = computer_sorce.ToString();
    label4.Text = user_sorce.ToString();
   }
   last_step = -1;
  }
 }
}

效果图

开始游戏

点击开始

划拳

判定胜败


重新开始

悔棋


退出

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#使用Twain协议实现扫描仪连续扫描功能

    C#使用Twain协议实现扫描仪连续扫描功能

    这篇文章主要介绍了C#使用Twain协议实现扫描仪连续扫描,只需一行代码,就可实现一次扫描多张,且不需要更改扫描仪的任何设置,需要的朋友可以参考下
    2022-01-01
  • C#中将dateTimePicker初始值设置为空

    C#中将dateTimePicker初始值设置为空

    本文主要介绍了C#中将dateTimePicker初始值设置为空,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • WPF中图像处理的方法介绍

    WPF中图像处理的方法介绍

    这篇文章介绍了WPF中图像处理的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#异步编程由浅入深(二)之Async/Await的使用

    C#异步编程由浅入深(二)之Async/Await的使用

    这篇文章主要介绍了C#异步编程由浅入深(二)之Async/Await的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#中JavaScriptSerializer帮助类用法实例

    C#中JavaScriptSerializer帮助类用法实例

    这篇文章主要介绍了C#中JavaScriptSerializer帮助类用法,实例分析了JavaScriptSerializer帮助类处理json字符串时的技巧,需要的朋友可以参考下
    2014-12-12
  • c#读取excel方法实例分析

    c#读取excel方法实例分析

    这篇文章主要介绍了c#读取excel方法,实例分析了C#读取excel文件的原理与相关技巧,需要的朋友可以参考下
    2015-06-06
  • 解决WPF绘制矢量图形模糊的问题

    解决WPF绘制矢量图形模糊的问题

    这篇文章介绍了WPF绘制矢量图形模糊问题的解决方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#8.0新语法using declaration

    C#8.0新语法using declaration

    这篇文章介绍了C#8.0的新语法using declaration,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#获取路径的几种方式实例分析

    C#获取路径的几种方式实例分析

    这篇文章主要介绍了C#获取路径的几种方式,实例分析了C#常用的路径操作技巧,需要的朋友可以参考下
    2015-06-06
  • C# Winform TextBox控件多行输入方式

    C# Winform TextBox控件多行输入方式

    这篇文章主要介绍了C# Winform TextBox控件多行输入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论