// 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; } } }
//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); } }
// 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); } }
//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; } }
//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; } }
//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; } }