一個猜數字的小遊戲—C# 控制元件的動態載入和應用 多執行緒
阿新 • • 發佈:2019-02-15
- 用C#開發的一個猜數字的小遊戲
namespace 猜數字遊戲__執行緒
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int num = 0;
int number;
private void Form1_Load(object sender, EventArgs e)
{
this.Width = 396 ;
this.Height = 465;
this.MaximizeBox = false;
this.FormBorderStyle = FormBorderStyle.FixedDialog;
setnum();
}
bool flag = false;
private void StartBnt_Click(object sender, EventArgs e)
{
if (!flag)
{
Thread t1 = new Thread(new ThreadStart(TimeThread));
t1.Priority = ThreadPriority.Normal;
t1.Start(); //啟動執行緒
timer.Enabled = true;
StartBnt.Text = "復位";
flag = true;
}
else {
//this.Close();
groupBox.Controls.Clear();
num = 0 ;
timer.Enabled = false;
setnum();
label.Text = "0";
StartBnt.Text = "開始";
flag=false;
}
}
private void bt_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;//例項化一個按鈕,來進行事件的設定
if (flag) {
int temp;
if (int.TryParse(btn.Text, out temp))
{
if (temp < number)
{
btn.BackColor = Color.Red;
btn.Text = "小";
}
else if (temp > number)
{
btn.BackColor = Color.Blue;
btn.Text = "大";
}
else
{
timer.Enabled = false;
if (MessageBox.Show("恭喜你,猜對了!用時" + num + "秒", "finish") != 0)
{
num = 0;
label.Text = "0";
groupBox.Controls.Clear();
setnum();
StartBnt.Text = "開始";
flag = false;
}
}
}
}
}
private void TimeThread()
{
//BeginInvoke((ThreadStart)delegate()
//{
// num++;
//}, ThreadPriority.Normal);
Random random = new Random();
number = random.Next(1, 101);
}
private void timer1_Tick(object sender, EventArgs e)
{
label.Text = Convert.ToString(++num);
}
void setnum() {
int p_x = 10;
int p_y = 0;
//動態載入控制元件
for (int i = 0; i < 100; i++)
{
Button bt = new Button();
bt.Text = (i + 1).ToString();
bt.Name = (i + 1).ToString();
bt.Width = 35;
bt.Height = 35;
bt.Location = new Point(p_x, p_y);
bt.BackColor = Color.YellowGreen;
bt.Click += new EventHandler(this.bt_Click);//載入按鈕事件
p_x += 36;
if ((i + 1) % 10 == 0)
{
p_x = 10;
p_y += 36;
}
groupBox.Controls.Add(bt);
}
}
}
}