zoukankan      html  css  js  c++  java
  • 综合实践_猜数字小游戏

    用到的主要有线程,随机数

    为了实现多余组件的清空,用到了panel面板

    以及按钮的一些属性,注解很详尽

    代码如下:

     1 namespace Number_Games
     2 {
     3     public partial class Form1 : Form
     4     {
     5         public Form1()
     6         {
     7             Controls.Clear();
     8             InitializeComponent();
     9         }
    10         int rand_num;//定义随机数
    11         int i = 0;//定义计数
    12         Thread RunTime;//定义一条线程
    13 
    14         private void button1_Click(object sender, EventArgs e)
    15         {
    16             Clear_btn();//清掉多余组件
    17             int int_x = 20;//定义初始x坐标
    18             int int_y = 20;//定义初始y坐标
    19             for (int i = 1; i <= 100; i++)
    20             {   //按钮布局部分
    21                 Button bt = new Button();//创建button对象
    22                 bt.Text = i.ToString();//设置按钮文本
    23                 bt.Name ="bt_"+i.ToString();//按钮名字
    24                 bt.Size = new Size(35, 35);//按钮大小
    25                 bt.Click += new EventHandler(bt_click);//建立該按鈕的 Click 事件
    26                 bt.Location = new Point(int_x, int_y);//按钮位置
    27                 if (i % 10 == 0)
    28                 {
    29                     int_x = 20;
    30                     int_y += 37;
    31                 }
    32                 else
    33                 {
    34                     int_x += 37;
    35                 }
    36                 panel1.Controls.Add(bt);//向面板中添加按钮
    37             }
    38             //时间线程部分
    39             RunTime = new Thread(//使用一条线程 需要引用System.Threading空间
    40                 new ThreadStart(Count));//使用委托执行方法部分
    41             RunTime.IsBackground = true;//设置线程为后台线程(-与前台应用同时退出-)
    42             RunTime.Start();//启动线程
    43             rand_num = new Random().Next(1, 100);//设置随机数
    44             button1.Enabled = false;//开始按钮为不可用状体
    45                                     //避免多线程问题
    46         }
    47 
    48         //Click事件的实现
    49         void bt_click(object sender, EventArgs e)
    50         {
    51             
    52             Button b = (Button)sender;//向下转型为Button类型
    53             int num = int.Parse(b.Text.ToString());//获取按钮对应数字
    54             if (num != rand_num)
    55             {
    56                 b.BackColor = Color.Red;
    57                 if (num < rand_num)
    58                     b.Text = "";
    59                 else
    60                     b.Text = ""; 
    61             }
    62             else {
    63                 b.BackColor = Color.Green;
    64                 MessageBox.Show("恭喜你!任务完成
    用时:"+i+"","恭喜:");
    65                 RunTime.Abort();//停止线程
    66                 button1.Enabled = true;//启用开始按钮
    67                 i = 0;//计时器归0
    68             }
    69             
    70         }
    71         //计时方法
    72         void Count() {
    73             //int i = 0;
    74             while (true)
    75             {
    76                 i = ++i > 1000000 ? 0 : i++;
    77                 this.label2.Text = i.ToString()+"";
    78                 Thread.Sleep(1000);
    79             };
    80         }
    81         //清掉多余组件方法
    82         void Clear_btn() { 
    83             foreach(Button b in panel1.Controls){
    84                 panel1.Controls.Clear();//清除面板按钮
    85             }
    86         }
    87     }
    88 }

    经过多番调试,最终如下

    1>开始界面

    2>游戏运行

    3>游戏结束

  • 相关阅读:
    二维数组输出10行杨辉三角
    二维数组的练习----求和
    数组的异常及处理
    二维数组在内存中的结构
    Ubuntu系统中安装Mercurial 以支持hg
    什么是插补、直线插补、联动与插补
    压力表(负压表...)
    常用接近开关的原理和分类
    VMware Ubuntu安装详细过程
    Redis+Spring缓存实例(windows环境,附实例源码及详解)
  • 原文地址:https://www.cnblogs.com/feiyucha/p/9860989.html
Copyright © 2011-2022 走看看