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 BieCaiBaiKuai
{
public partial class Form1 : Form
{
Random g = new Random();
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 游戏开始
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text=="游戏开始")
{
button1.Text = "游戏暂停";
timer1.Start();
timer1.Interval = 937;
timer1.Tick += Timer1_Tick;
timer2.Start();
timer2.Interval = 15;
timer2.Tick += Timer2_Tick;
}
else
{
button1.Text = "游戏暂停";
timer1.Stop();
timer2.Stop();
}
}
/// <summary>
/// 生成的块下落
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
int sudu = 2;
private void Timer2_Tick(object sender, EventArgs e)
{
foreach (Control item in panel1.Controls)
{
//if (item.GetType().Name=="Label")
//{
// if (item.Tag.ToString()=="k"||item.Tag.ToString()=="bai")
// {
// item.Top++;
// }
//}
//添加鼠标点击事件
item.MouseClick += Item_MouseClick;
item.Top += sudu;
if (item.Top>=panel1.Height+item.Height)
{
item.Dispose();
}
}
}
/// <summary>
/// 黑块的鼠标点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
int zongshu = 0;
private void Item_MouseClick(object sender, MouseEventArgs e)
{
Label xiaochu = (Label)sender;
if (xiaochu.BackColor==Color.Black)
{
xiaochu.BackColor = Color.White;
zongshu++;
label2.Text = zongshu.ToString();
}
}
/// <summary>
/// 随机生成块
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Timer1_Tick(object sender, EventArgs e)
{
//黑块的生成
Label k = new Label();
k.Size = new Size(90,120);
k.BackColor = Color.Black;
k.Text = " ";
int p = g.Next(0,4)*90;
k.Location = new Point(p,-120);
k.BorderStyle = BorderStyle.FixedSingle;
k.Tag = "k";
panel1.Controls.Add(k);
//白块
Label k1 = Bk();
Label k2 = Bk();
Label k3 = Bk();
switch (p)
{
case 0:
k1.Location = new Point(90, -120);
k2.Location = new Point(180, -120);
k3.Location = new Point(270, -120);
k1.MouseClick += K1_MouseClick;
k2.MouseClick += K2_MouseClick;
k3.MouseClick += K3_MouseClick;
break;
case 90:
k1.Location = new Point(0, -120);
k2.Location = new Point(180, -120);
k3.Location = new Point(270, -120);
k1.MouseClick += K1_MouseClick;
k2.MouseClick += K2_MouseClick;
k3.MouseClick += K3_MouseClick;
break;
case 180:
k1.Location = new Point(0, -120);
k2.Location = new Point(90, -120);
k3.Location = new Point(270, -120);
k1.MouseClick += K1_MouseClick;
k2.MouseClick += K2_MouseClick;
k3.MouseClick += K3_MouseClick;
break;
case 270:
k1.Location = new Point(0, -120);
k2.Location = new Point(90, -120);
k3.Location = new Point(180, -120);
k1.MouseClick += K1_MouseClick;
k2.MouseClick += K2_MouseClick;
k3.MouseClick += K3_MouseClick;
break;
default:
break;
}
if (zongshu >= 20)
{
sudu = 3;
timer1.Interval = 625;
label1.Text = "第二关";
}
if (zongshu >= 40)
{
sudu = 4;
timer1.Interval = 460;
label1.Text = "第三关";
}
if (zongshu >= 60)
{
sudu = 5;
timer1.Interval = 370;
label1.Text = "第四关";
}
if (zongshu>=80)
{
sudu = 6;
timer1.Interval = 310;
label1.Text = "Max";
}
}
private void K3_MouseClick(object sender, MouseEventArgs e)
{
timer1.Stop();
timer2.Stop();
panel1.Controls.Clear();
MessageBox.Show("Game Over!");
MessageBox.Show("您的总得分:" + zongshu.ToString());
}
private void K2_MouseClick(object sender, MouseEventArgs e)
{
timer1.Stop();
timer2.Stop();
panel1.Controls.Clear();
MessageBox.Show("Game Over!");
MessageBox.Show("您的总得分:" + zongshu.ToString());
}
private void K1_MouseClick(object sender, MouseEventArgs e)
{
timer1.Stop();
timer2.Stop();
panel1.Controls.Clear();
MessageBox.Show("Game Over!");
MessageBox.Show("您的总得分:" + zongshu.ToString());
}
private Label Bk()
{
//实例化一个Label 这个Label是生成的白块
Label bai = new Label();
bai.Size = new Size(90, 120);
bai.BackColor = Color.White;
bai.Tag = "bai";
bai.BorderStyle = BorderStyle.FixedSingle;
bai.Text = " ";
panel1.Controls.Add(bai);
return bai;
}
private void Form1_Load(object sender, EventArgs e)
{
panel1.Size = new Size(360,600);
this.Size = new Size(500,700);
}
//重新开始
private void button2_Click(object sender, EventArgs e)
{
//panel1.Controls.Clear();
//label1.Text = "第一关";
//label2.Text = "";
//timer1.Start();
//timer2.Start();
Application.Restart();
}
}
}