Beispiel #1
0
        private void timer_EnemyAppearControl_Tick(object sender, EventArgs e) //定时器生成敌机
        {
            Obj.GetObj().time++;
            while (ListIndex <= LevelNow.listenemyAppears.Count - 1 && LevelNow.listenemyAppears[ListIndex].Time <= Obj.GetObj().time)
            {
                if (LevelNow.listenemyAppears[ListIndex].Type > 0)
                {
                    Obj.GetObj().AddGameObj(new PlaneEnemy(LevelNow.listenemyAppears[ListIndex].Type, LevelNow.listenemyAppears[ListIndex].X, LevelNow.listenemyAppears[ListIndex].Y, planePlayer));
                    ListIndex++;
                }
                else if (LevelNow.listenemyAppears[ListIndex].Type == -1)
                {
                    PlaneEnemy.StayY = LevelNow.listenemyAppears[ListIndex].X;
                    ListIndex++;
                }


                break;
            }
            if (ListIndex >= LevelNow.listenemyAppears.Count && Obj.GetObj().listplaneEnemies.Count == 0)
            {
                Game_Die die = new Game_Die();


                Obj.IsDead = true;
                Obj.GetObj().time = 0;
                Obj.GetObj().ClearData();
                Obj.PlayerProperty += (int)(Obj.GetObj().myScores.Score * 0.5);
                Obj.GameRun         = false;

                die.Show();
            }
        }
Beispiel #2
0
 //碰撞检测
 public void Crash()
 {
     //判断玩家子弹是否打中敌人
     for (int i = 0; i < listPlayerBullet.Count; i++)
     {
         for (int j = 0; j < listplaneEnemies.Count; j++)
         {
             if (listPlayerBullet[i].GetRectangle().IntersectsWith(listplaneEnemies[j].GetRectangle())) //判断玩家子弹矩形是否和敌人飞机矩形相交
             {
                 listplaneEnemies[j].HP -= listPlayerBullet[i].Power;                                   //当子弹射击到目标时,HP减去武器伤害值
                 listplaneEnemies[j].Explosion();                                                       //调用敌人类的爆炸函数,判断敌人是否死亡
                 listPlayerBullet.RemoveAt(i);                                                          //销毁射击到敌人身上的子弹
                 break;
             }
         }
     }
     //判断敌人子弹是否打中玩家
     for (int i = 0; i < listenemyBullets.Count; i++)
     {
         if (listenemyBullets[i].GetRectangle().IntersectsWith(this.PP.GetRectangle()))//判断敌人子弹矩形是否和玩家矩形相交
         {
             PP.HP -= listenemyBullets[i].Power;
             if (PP.HP < 0)
             {
                 this.PP.Explosion();
                 Game_Die die = new Game_Die();
                 die.Show();
                 Obj.IsPause = true;
             }
             listenemyBullets.RemoveAt(i);    //销毁子弹
             break;
         }
     }
     //判断玩家是否撞到敌人飞机
     for (int i = 0; i < listplaneEnemies.Count; i++)
     {
         if (listplaneEnemies[i].GetRectangle().IntersectsWith(this.PP.GetRectangle()))
         {
             listplaneEnemies[i].HP = listplaneEnemies[i].HP - 10;
             PP.HP -= 10;
             if (PP.HP <= 0)
             {
                 this.PP.Explosion();
                 Game_Die die = new Game_Die();
                 die.Show();
                 Obj.IsPause = true;
             }
             listplaneEnemies[i].Explosion();
             break;
         }
     }
     //判断供给是否与玩家接触
     for (int i = 0; i < listSupllies.Count; i++)
     {
         if (listSupllies[i].GetRectangle().IntersectsWith(this.PP.GetRectangle()))
         {
             if (listSupllies[i] is Medkit)
             {
                 this.PP.HP += (listSupllies[i] as Medkit).MedHp;
                 if (PP.HP > MaxHP)
                 {
                     PP.HP = MaxHP;
                 }
                 listSupllies.RemoveAt(i);
                 break;
             }
             else
             {
                 //此处放武器buff相关处理代码
                 this.PP.BulletType = doubleFire;
                 listSupllies.RemoveAt(i);
                 break;
             }
         }
     }
 }