当前位置:首页>>c#打字游戏

c#打字游戏

  • 2022-07-16 18:54:22

c#打字游戏

 

 

using System;
using System.Drawing;
using System.Windows.Forms;

namespace 打字游戏
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //创建飞机
        PictureBox plan = new PictureBox();
        Button kaiguan = new Button();
        Timer flytime = new Timer();//动画事件
        //创建的得分的label
        Label df = new Label();
        int x = 0;
        //实例化血条
        Label xt = new Label();
        Label xt1 = new Label();
        int xuetiao = 150;
        int dl = 0;

        //产生字母
        private void Form1_Load(object sender, EventArgs e)
        {
            this.KeyPreview = true;
            //游戏区域
            this.WindowState = FormWindowState.Maximized;
            this.Text = "打字游戏";
            panel1.Size = new Size(1000, 760);
            panel1.BackColor = Color.White;

            timer1.Start();
            bird.Tag = "b";
            bird.Width = 229;


            bird.Height = 111;
            bird.SizeMode = PictureBoxSizeMode.StretchImage;//
            bird.Location = new Point(0, 0);
            panel1.Controls.Add(bird);
            bird.Image = imageList1.Images[0];

           
            flytime.Interval = 80;
            //事件的添加:+、=、tab、tab;
            flytime.Tick += Flytime_Tick;

            plan.Tag = "plan";
            plan.Size = new Size(100, 100);
            //
            //plan.BackColor = Color.Red;
            plan.Location = new Point(panel1.Width / 2 - plan.Width / 2, panel1.Height - plan.Height);
            plan.Image = Image.FromFile(@"../../img/BP03.png");
            panel1.Controls.Add(plan);

            
            kaiguan.Text = "开始游戏";
            kaiguan.Location = new Point(1200,300);
            this.Controls.Add(kaiguan);
            kaiguan.Click += Kaiguan_Click;

         
        }

        private void Kaiguan_Click(object sender, EventArgs e)
        {
            if (kaiguan.Text=="开始游戏")
            {
                flytime.Start();
                timer2.Start();
                timer3.Start();
                kaiguan.Text = "暂停游戏";
            }
            else if (kaiguan.Text=="暂停游戏")
            {
                flytime.Stop();
                timer2.Stop();
                timer3.Stop();
                kaiguan.Text = "开始游戏";
            }
            //得分栏
            df.Size = new Size(130, 20);
            df.Location = new Point(1138, 210);
            df.Tag = "df";
            df.Text = "得分:0分";
            df.AutoSize = true;
            this.Controls.Add(df);
            //血条栏
            xt.Size = new Size(130,20);
            xt.Location = new Point(1200,500);
            xt.BackColor = Color.White;
            xt1.Size = new Size(130,20);
            xt1.Location=new Point(1200,500);
            xt1.BackColor = Color.Red;
            xt.Tag = "xt";
            xt1.Tag = "xt1";
            this.Controls.Add(xt);
            this.Controls.Add(xt1);


        }

        PictureBox bird = new PictureBox();//显示动画的容器;
        //动画事件
        int index = 0;
        private void Flytime_Tick(object sender, EventArgs e)
        {
            index++;
            bird.Image = imageList1.Images[index];
            if (index >= 10)
            {
                index = -1;
            }

        }

        Random r = new Random();
        //鸟的移动
        private void timer2_Tick(object sender, EventArgs e)
        {
            bird.Left += 2;
            if (bird.Left >= panel1.Width)
            {
                bird.Left = -bird.Width;
            }
        }
        //字母生成
        private void timer1_Tick_1(object sender, EventArgs e)
        {
            if (bird.Left >= 0 && bird.Left <= panel1.Width - bird.Width)
            {
                //每一个lebel是一个字母;
                Label lb = new Label();
                lb.Text = ((char)r.Next(97, 123)).ToString();
                lb.Font = new Font("", r.Next(20, 40));
                lb.Tag = "lb";
                lb.AutoSize = true;
                lb.ForeColor = Color.FromArgb(r.Next(255), r.Next(255), r.Next(255));
                lb.Top = bird.Height;
                lb.Left = bird.Left + bird.Width / 2 - lb.Width / 2;

                panel1.Controls.Add(lb);
            }
        }
        //字母下落
        private void timer3_Tick(object sender, EventArgs e)
        {
            //遍历循环语法
            foreach (Control item in panel1.Controls)
            {
                //每一个对象都有一个方法GetType
                if (item.GetType().Name == "Label")
                {
                    item.Top += 3;
                    if (item.Top >= panel1.Height)
                    {
                        item.Dispose();
                        xuetiao -= 10;
                        xt.Width = xuetiao;
                        dl++;
                        if (xt.Width==0)
                        {
                            flytime.Stop();
                            timer2.Stop();
                            timer3.Stop();
                            MessageBox.Show("Game over");
                        }
                        
                    }

                }
                if(item.GetType().Name== "PictureBox")
                {
                    if (item.Tag.ToString()=="zd")
                    {
                        item.Top -= 7;
                        if (item.Top+item.Height<=-item.Height)
                        {
                            item.Dispose();
                        }
                        foreach (Control ad in panel1.Controls)
                        {
                            if (ad.Tag.ToString()=="lba")
                            {
                                if (ad.Top+ad.Height>=item.Top&&item.Left==ad.Left+ad.Width/2-item.Width/2)
                                {
                                    item.Dispose();
                                    ad.Dispose();
                                    x += 10;
                                    df.Text = x.ToString()+"分";

                                    PictureBox baz = new PictureBox();//装播放爆炸图片的盒子;
                                    baz.Tag = 0;
                                    baz.Image = imageList2.Images[0];
                                    baz.Size = new Size(90,90);
                                    baz.SizeMode = PictureBoxSizeMode.StretchImage;
                                    baz.Location = new Point(ad.Left + ad.Width / 2 - baz.Width/2,ad.Top+ad.Height/2-baz.Height/2) ;
                                    panel1.Controls.Add(baz);

                                    Timer bofang = new Timer();
                                    bofang.Start();
                                    bofang.Interval = 60;
                                    bofang.Tag = baz;
                                    bofang.Tick += Bofang_Tick;
;                                    
                                }
                            }
                        }
                       
                    }
                }

            }

        }


        private void Bofang_Tick(object sender, EventArgs e)
        {
            Timer mnb = (Timer)sender;
            PictureBox picture = (PictureBox)mnb.Tag;
            picture.Image = imageList2.Images[(int)picture.Tag];
            picture.Tag = (int)picture.Tag + 1;
            if ((int)picture.Tag>=31)
            {
                picture.Dispose();

                mnb.Dispose();
            }

        }

        //按键消除
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //在按下任意按键的时候,判断一下本次按键值是否有对应的字母;
            //按键键值
            //被动行为
            foreach (Control item in panel1.Controls)
            {
                if (item.GetType().Name == "Label")
                {
                    if (item.Text == e.KeyChar.ToString()&&item.Tag.ToString()=="lb")
                    {
                        item.Tag = "lba";
                        plan.Left = item.Left + item.Width / 2 - plan.Width / 2;
                        //创建子弹

                        PictureBox bullet = new PictureBox();
                        bullet.Tag = "zd";
                        bullet.Size = new Size(6,20);
                        bullet.Image = Image.FromFile(@"../../img/Ammo4.png");
                        bullet.Location = new Point(plan.Left + plan.Width / 2 - bullet.Width / 2, plan.Top - bullet.Height);
                        bullet.SizeMode = PictureBoxSizeMode.StretchImage;
                        panel1.Controls.Add(bullet);
                        return;
                    }
                }
            }
        }
    }
}

c#打字游戏

上一篇:c#事件委托
下一篇:c#简易计算器

猜你喜欢