Ejemplo n.º 1
0
        }   //Fire()

        public override void IsOver()
        {
            //实现敌机死亡的方法
            if (this.Life <= 0)
            {
                //敌人飞机坠毁,应该把敌机从游戏中移除
                SingleObject.GetSingle().RemoveGame(this);
                //播放敌机爆炸的图片
                SingleObject.GetSingle().AddGameObject(new EnemyBoom(this.X, this.Y, this.EnemyType));

                //敌人发生爆炸,给玩家加分,根据不同的敌机,给玩家不同的分数
                switch (this.EnemyType)
                {
                case 0:
                    SingleObject.GetSingle().Score += 100;
                    break;

                case 1:
                    SingleObject.GetSingle().Score += 200;
                    break;

                case 2:
                    SingleObject.GetSingle().Score += 300;
                    break;
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 ///游戏初始化
 /// </summary>
 public void InitialGame()
 {
     //首先需要初始化的是我们的背景
     SingleObject.GetSingle().AddGameObject(new BackGround(0, -850, 5));
     //初始化英雄飞机
     SingleObject.GetSingle().AddGameObject(new PlaneHero(100, 100, 5, 3, GameObject.Direction.Up));
 }
Ejemplo n.º 3
0
        public override void Draw(Graphics g)
        {
            //当爆炸图片绘制到窗体的时候,需要根据当前飞机的类型来绘制
            switch (this.Type)
            {
            case 0:
                for (int i = 0; i < img1.Length; i++)
                {
                    g.DrawImage(img1[i], this.X, this.Y);
                }
                break;

            case 1:
                for (int i = 0; i < img2.Length; i++)
                {
                    g.DrawImage(img2[i], this.X, this.Y);
                }
                break;

            case 2:
                for (int i = 0; i < img3.Length; i++)
                {
                    g.DrawImage(img3[i], this.X, this.Y);
                }
                break;
            }
            //播放完爆炸图片后,应该被销毁
            SingleObject.GetSingle().RemoveGame(this);
        }
Ejemplo n.º 4
0
 //3.提供一个静态函数用于返回一个唯一的对象
 public static SingleObject GetSingle()
 {
     if (_single == null)
     {
         _single = new SingleObject();
     }
     return(_single);
 }
Ejemplo n.º 5
0
 public override void Draw(Graphics g)
 {
     for (int i = 0; i < imgs.Length; i++)
     {
         g.DrawImage(imgs[i], this.X, this.Y);
     }
     //绘制完成后,应该 将爆炸的图片移除
     SingleObject.GetSingle().RemoveGame(this);
 }
Ejemplo n.º 6
0
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //当窗口重绘时,我们就绘制我们的背景
            SingleObject.GetSingle().Draw(e.Graphics);
            string score = SingleObject.GetSingle().Score.ToString();

            //绘制玩家的分数
            e.Graphics.DrawString(score, new Font("宋体", 20, FontStyle.Bold),
                                  Brushes.Red, new Point(0, 0));
        }
Ejemplo n.º 7
0
        private void timerBG_Tick(object sender, EventArgs e)
        {
            this.Invalidate();     //每50毫秒刷新一次
            //不停的判断敌机的数量
            //获取敌方飞机的数量
            int count = SingleObject.GetSingle().listPlaneEnemy.Count;

            if (count <= 1)
            {
                //再次对敌机进行初始化
                InitialPlaneEnemy();
            }
            //不停的进行碰撞检测
            SingleObject.GetSingle().PZJC();
        }
Ejemplo n.º 8
0
 //初始化敌方飞机
 public void InitialPlaneEnemy()
 {
     //初始人敌方飞机
     for (int i = 0; i < 4; i++)
     {
         SingleObject.GetSingle().AddGameObject(new PlaneEnemy(r.Next(0, this.Width), -200,
                                                               r.Next(0, 2)));
     }
     //不应该每次都出现大飞机
     if (r.Next(0, 100) > 80)
     {
         SingleObject.GetSingle().AddGameObject(new PlaneEnemy(r.Next(0, this.Width), -200,
                                                               2));
     }
 }
Ejemplo n.º 9
0
 private void Form1_MouseDown(object sender, MouseEventArgs e)
 {
     //判断玩家是否按下了左键
     //如果玩家按下了左键,调用玩家飞机发射子弹的方法
     SingleObject.GetSingle().PH.Fire();
 }
Ejemplo n.º 10
0
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            //当鼠标在窗体移动的时候,让飞机跟着鼠标的移动而移动

            SingleObject.GetSingle().PH.MouseMove(e);  //调用玩家飞机的mouseMove方法
        }
Ejemplo n.º 11
0
        }   //Move()

        public void Fire()
        {
            SingleObject.GetSingle().AddGameObject(new EnemyZiDan(this, 20, 1));
        }   //Fire()
Ejemplo n.º 12
0
        public override void Move()
        {
            //根据游戏对象的方向进行移动
            switch (Dir)
            {
            case Direction.Up:
                this.Y -= this.Speed;
                break;

            case Direction.Down:
                this.Y += this.Speed;
                break;

            case Direction.Left:
                this.X -= this.Speed;
                break;

            case Direction.Right:
                this.X += this.Speed;
                break;

            default:
                break;
            }
            //移动完成后,判断一下游戏对象是否超过窗体
            if (this.X <= 0)
            {
                this.X = 0;
            }
            if (this.X >= 400)
            {
                this.X = 400;
            }
            if (this.Y <= 0)
            {
                this.Y = 0;
            }
            if (this.Y >= 780)
            {
                this.Y = 1400;  //敌人飞机到底部时,让敌人飞机离开窗体
                //同时当敌机离开窗体时,我们应该销毁敌机
                SingleObject.GetSingle().RemoveGame(this);
            }
            //当敌人的飞机类型是0 ,并且纵坐标>=某个值之后,我们不停的更换他的横坐标
            if (this.EnemyType == 0 && this.Y >= 200)
            {
                if (this.X >= 0 && this.X <= 240)
                {
                    //表示当前的小飞机在左边的范围内
                    //增加当前飞机的X值
                    this.X += r.Next(0, 50);
                }
                else
                {
                    this.X -= r.Next(0, 50);
                }
            }
            else    //如果飞机是1,2大飞机
            {
                //大飞机不更改坐标,改速度
                this.Speed += 1;
            }
            //百分之三十概率发射子弹
            if (r.Next(0, 100) > 90)
            {
                Fire();
            }
        }   //Move()
Ejemplo n.º 13
0
 public override void IsOver()
 {
     //实现英雄飞机死亡
     SingleObject.GetSingle().AddGameObject(new HeroBoom(this.X, this.Y));
 }
Ejemplo n.º 14
0
 //玩家飞机发射子弹的方法
 public void Fire()
 {
     //初始化我们玩家子弹到游戏中
     SingleObject.GetSingle().AddGameObject(new HeroZiDan(this, 10, 1));
 }