Пример #1
0
        // ia AR avec sol avec aller et retour sur meme plateform
        public void collision_ia_AR_sol(IA_Manager_max ia, ref Platform_manager platform_m)
        {
            bool b, b2, b3, b4;
            int top, pos;
            for (int i = 0; i < ia.Ia_manage.Count; ++i) // pour chaque ia
            {
                b = false; top = 0; pos = 0;
                b2 = false; b3 = false; b4 = false;
                foreach (platform plato in platform_m.plato)// pour chaque platform
                {
                    //voir si l ia est sur la plaeform
                    if ((ia.Ia_manage[i].rectangle_C.Bottom >= plato.rectangle_C.Top && ia.Ia_manage[i].rectangle_C.Right >= plato.rectangle_C.Left &&
                        ia.Ia_manage[i].rectangle_C.Left <= plato.rectangle_C.Right && ia.Ia_manage[i].rectangle_C.Bottom - 9 <= plato.rectangle_C.Top))
                    {
                        b |= true;
                        top = plato.rectangle_C.Top;
                        // voir si l ia doit aller ds l autre sens
                        if (ia.Ia_manage[i].rectangle_C.Right + ia.Ia_manage[i].Speed / 3 > plato.rectangle_C.Right)
                        {
                            // verification si on est sur deux plateform a la fois donc on va ds la meme direction
                            foreach (platform plato2 in platform_m.plato)
                            {
                                b4 |= (plato != plato2 && ((ia.Ia_manage[i].rectangle_C.Bottom >= plato2.rectangle_C.Top && ia.Ia_manage[i].rectangle_C.Right >= plato2.rectangle_C.Left &&
                                    ia.Ia_manage[i].rectangle_C.Left <= plato2.rectangle_C.Right && ia.Ia_manage[i].rectangle_C.Bottom - 9 <= plato2.rectangle_C.Top)));
                            }
                            b2 ^= true;
                            pos = plato.rectangle_C.Right - ia.Ia_manage[i].rectangle_C.Width - ia.Ia_manage[i].decalageX - ia.Ia_manage[i].Speed - 1;

                        }
                        if (ia.Ia_manage[i].rectangle_C.Left - ia.Ia_manage[i].Speed / 3 < plato.rectangle_C.Left)
                        {
                            foreach (platform plato2 in platform_m.plato)
                            {
                                b4 |= (plato != plato2 && ((ia.Ia_manage[i].rectangle_C.Bottom >= plato2.rectangle_C.Top && ia.Ia_manage[i].rectangle_C.Right >= plato2.rectangle_C.Left &&
                                    ia.Ia_manage[i].rectangle_C.Left <= plato2.rectangle_C.Right && ia.Ia_manage[i].rectangle_C.Bottom - 9 <= plato2.rectangle_C.Top)));

                            }
                            b3 ^= true;
                            pos = plato.rectangle_C.Left + ia.Ia_manage[i].decalageX + ia.Ia_manage[i].Speed + 1;
                        }
                        break;
                    }
                }
                if (b)
                {
                    ia.Ia_manage[i].tombe = false;
                    ia.Ia_manage[i].rectangle.Y = top - ia.Ia_manage[i].rectangle_C.Height-15;

                }
                else
                    ia.Ia_manage[i].tombe = true;
                if (!b4 && (b2 || b3))
                {
                    ia.Ia_manage[i].dir = -ia.Ia_manage[i].dir;
                    ia.Ia_manage[i].rectangle.X = pos;
                }

            }
        }
Пример #2
0
 //collision IA missile action ia.vie --
 public void collision_ai_missile(ref sripte_V sprite, IA_Manager_max iamanage)
 {
     for (int i = 0; i < sprite.bulletL.Count; ++i)
         foreach (vaisseau_IA ai in iamanage.Ia_manage)
             if (sprite.bulletL[i].rectangle_C.Intersects(ai.rectangle_C))
             {
                 ai.vie -= sprite.bulletL[i].degat;
                 sprite.bulletL.RemoveAt(i);
             }
 }
Пример #3
0
 // collision hero avec missille ou ia avetion game over
 public void hero_missile(IA_Manager_max ia_manage, ref sripte_V sprite)
 {
     for (int i = 0; i < ia_manage.bulletL.Count; ++i)
         if (ia_manage.bulletL[i].rectangle_C.Intersects(sprite.rectangle_C))
         {
             sprite.vie -= ia_manage.bulletL[i].degat;
             ia_manage.bulletL.RemoveAt(i);
         }
 }
Пример #4
0
 //collision IA hero action: vie--
 public void col_H_IA(IA_Manager_max ia_manage, ref sripte_V sprite)
 {
     foreach (vaisseau_IA ia in ia_manage.Ia_manage)
         if (ia.rectangle_C.Intersects(sprite.rectangle_C))
         {
             ia.vie = -30;
             sprite.vie -= 30;
         }
 }
Пример #5
0
        //collision IA allen action vie--
        public void coll_AL_IA(IA_Manager_max ia_manage, ref sprite_broillon sprite)
        {
            for (int i = 0; i < ia_manage.Ia_manage.Count; ++i)
            {
                if (ia_manage.Ia_manage[i].rectangle_C.Bottom > sprite.rectangle_C.Top && sprite.rectangle_C.Bottom > ia_manage.Ia_manage[i].rectangle_C.Top)
                {// attaque vers droite
                    if (!sprite.atq)
                    {
                        if ((ia_manage.Ia_manage[i].dir == 1 &&
                            ia_manage.Ia_manage[i].rectangle_C.Right + ia_manage.Ia_manage[i].longueur_Attaque >= sprite.rectangle_C.Left &&
                            ia_manage.Ia_manage[i].rectangle_C.Right < sprite.rectangle_C.Left) ||
                            (ia_manage.Ia_manage[i].dir == -1 &&
                            ia_manage.Ia_manage[i].rectangle_C.Left - ia_manage.Ia_manage[i].longueur_Attaque <= sprite.rectangle_C.Right &&
                            ia_manage.Ia_manage[i].rectangle_C.Left > sprite.rectangle_C.Right))
                        {
                            sprite.vie--;
                            //bool pr dire qd on attaque
                            ia_manage.Ia_manage[i].attaque = true;
                        }
                        // attaque vers la gauche-
                        else
                            ia_manage.Ia_manage[i].attaque = false;
                    }
                    else
                    {
                        if (!sprite._dir && ia_manage.Ia_manage[i].rectangle_C.Left - sprite.longattaque < sprite.rectangle_C.Right &&
                             ia_manage.Ia_manage[i].rectangle_C.Left > sprite.rectangle_C.Right)
                        {
                            --ia_manage.Ia_manage[i].vie;
                        }
                        else if (sprite._dir &&
                          ia_manage.Ia_manage[i].rectangle_C.Right + sprite.longattaque >= sprite.rectangle_C.Left &&
                                        ia_manage.Ia_manage[i].rectangle_C.Right < sprite.rectangle_C.Left)
                        {
                            --ia_manage.Ia_manage[i].vie;
                        }

                    }
                }
                else
                    ia_manage.Ia_manage[i].attaque = false;
            }
        }
Пример #6
0
        //ia stalker
        // collision ia_sprite sol fini
        public void collision_ia_sol(IA_Manager_max ia, ref Platform_manager platform_m)
        {
            bool b;
            int top = 0;
            for (int i = 0; i < ia.Ia_manage.Count; ++i)
            {
                b = false;
                foreach (platform plato in platform_m.plato)
                {

                    if (!b && (ia.Ia_manage[i].rectangle_C.Bottom >= plato.rectangle_C.Top && ia.Ia_manage[i].rectangle_C.Right >= plato.rectangle_C.Left &&
                        ia.Ia_manage[i].rectangle_C.Left <= plato.rectangle_C.Right && ia.Ia_manage[i].rectangle_C.Bottom - 9 <= plato.rectangle_C.Top))
                    {
                        top = plato.rectangle_C.Top;
                        b |= true;
                    }
                }
                if (b)
                {
                    ia.Ia_manage[i].tombe = false;
                    ia.Ia_manage[i].rectangle.Y = top - ia.Ia_manage[i].rectangle_C.Height - ia.Ia_manage[i].decalageY;
                }
                else
                    ia.Ia_manage[i].tombe = true;
            }
        }