| [Demande d'aide] A.I basique | |
|
|
Auteur | Message |
---|
maugun Bavard
Messages : 90
| Sujet: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 22:28 | |
| Bonjour, Etant nouveau sur ce forum, je vais commencer par me présenter. Je suis Maugun, j'ai 16 ans et je débute dans Game Maker, lequel je possède depuis hier dans sa version gratuite et limité. ^^ Pour le moment j'ai créé un petit casse brique en partie grâce au tuto de Bast -qui d'ailleurs est très bien expliqué- disponible sur votre site. Donc suite à cette petite prise en main de Game Maker je me suis dit : "Pourquoi ne pas faire un space invader ?". Seulement voilà, je me trouve confronter à un problème sur lequel je planche depuis plusieurs heures : l'A.I de mes enemies... Voici donc ce que j'aimerai faire : En premier lieu j'aimerai que mes enemies détectent si ils n'ont pas un de leurs "alliés" devant leur champs de tire. Si ils en ont un, ils ne tirent pas, si ils n'en ont pas ils tirent. [Résolut] Après j'aimerai aussi que mes enemies ne tirent pas tous en même temps. Je pense qu'il faut utiliser des variable pour cela, un truc du genre : Create :Var1=0 (relative) Step :Random_Var1(0;10) If Var1=5 { Create instance of object obj_tire } Je sais que cette façon d'écrire le code est fausse mais je ne connais pas encore le language de Game Maker. ^^ Enfin j'aimerai que mes enemies se déplacent en rythme de façon horizontale (de gauche à droite en ligne 1, de droite à gauche en ligne 2 ect...) et de dès qu'un enemie arrive à la limite de la room, au lieu de sortir de la room, il descend d'un cran pour arriver à la ligne d'en dessous et repartir dans le sens inverse du sens de la ligne où il vient. Je ne sais pas si j'ai était claire, en gros j'aimerai faire comme dans l'exemple à ce lien : ici (comme au milieu de l'animation) J'ai déjà fait la barre qui tire que le joueur contrôle et les blocs de défence qui se cassent au fure et à mesure qu'ils se prennent des tires dessus. Voilà j'espère avoir était assez claire et j'attends avec impatience votre aide.
Dernière édition par le Jeu 9 Aoû 2007 - 23:14, édité 1 fois |
|
| |
krocko2233 Utilisateur confirmé: Rang *
Messages : 228 Localisation : In my dreams...
| Sujet: Re: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 22:41 | |
| D'abord bienvenue à toi je te souhaite un bon séjour au cbna ! - Citation :
- il peux simplement faire si il veut un systeme de simple dés
ceil(random(6))
ou double
ceil(random(12)) ou ceil(random(6))+ceil(random(6)) |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 22:52 | |
| Je crois que son problème n'est pas tellement pour l'instant comment écrire un random, mais plutôt comment faire un tir non groupé. Pour cela, le mieux est une alarme. Dans l'objet ennemi, là ou tu met create, step, etc., il y a aussi les alarm. En fait, une alarm est une variable qui fait comme un compte à rebour. Dès qu'elle est à 0, ce qui est dans l'event "alarm0" sera éxécuté. Alors tu n'a qu'à mettre un random dans l'alarm0, et quand celle ci s'execute, tu fait un tir et tu remet un random dans l'alarm0. Pour le chemin des ennemis, le mieux est d'utiliser les paths. Je te laisse avec ce mot, fait tes propres recherches. |
|
| |
Death_egg *Excellent utilisateur*
Messages : 3807 Localisation : undefined Projet Actuel : ou qu'elle est passée la barre d'avancement
| Sujet: Re: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 22:54 | |
| Si tu trouves pas comment e servir des paths, Philippe Ragni á traduit l'aide de GM6 en francais. Je pense que ca peut t'aider si tu veux bien apprendre GameMaker |
|
| |
maugun Bavard
Messages : 90
| Sujet: Re: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 22:55 | |
| Effectivement un système de dès peut être une solution, mais pour que cela marche je ne suis pas sûr de la démarche à faire. Dans Step :piece of code : - Code:
-
ceil(random(12)) Mais après dois-je mettre un variable ? et que signifie ceil ? es-ce la variable justement ? Désolé de toutes ses question mes je débute vraiment et j'essaie de comprendre se que je fais. ^^ Edit : Entre temps le système d'alarme a était posté par M@d_Doc et me paraît plus abordable je vais donc l'utiliser. ^^ Je vais voir comment me servir des paths et lire un peut l'aide en français. ^^ En tout cas merci de vos réponses si rapides. ^^ |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 23:00 | |
| random(12) prend un nombre DECIMAL entre 0 et 12 exclus. Pour avoir les valeurs entières seulement, on arrondi, on tronque ou on fait quelqeuchose comme ça. La fonction ceil() permet de ramener à l entier supérieur. donc ceil(random(12)) donne un entier compris entre 1 et 12 inclus. Biensur, tu as là un nombre, mais il faut le stocker dans une variable. exemple : nomdelavariable=ceil(random(12)) et après, tu réutilise nomdelavariable pour retrouver ta valeur random précédente. Après tout cela, je pense que tu veux l'utiliser, pour faire un truc du style : si j'ai 1, ça fait l'action, sinon... non. Alors voilà le schéma : if [condition] { [code qui s'éxécute si condition est vraie] } Ca donne : - Code:
-
if nomdelavariable=1
{ //là tumet ce que tu veux.... } |
|
| |
maugun Bavard
Messages : 90
| Sujet: Re: [Demande d'aide] A.I basique Jeu 9 Aoû 2007 - 23:02 | |
| Merci pour ces précisions, je vais voir si j'utilise la technique avec random ou l'alarme. Edit :J'ai utilisé la random (je l'ai mis à 500 car sinon ça tirai dans tout les sens x)) dans l'alarme et ça marche niquel ! Merci pour votre aide. Maintenant je vais voir pour les paths et pour la détéction des allié. ^^ |
|
| |
maugun Bavard
Messages : 90
| Sujet: Re: [Demande d'aide] A.I basique Ven 10 Aoû 2007 - 1:49 | |
| Désolé de devoir faire un double poste mais j'ai un petit soucie avec les paths. Pour mieux vous montrer mon problème et vous expliquer ce que je veux faire, je vous propose de télécharger mon .gm6. TéléchargerEn gros mon problème c'est que seul le dernier des obj_enm_5 s'arrête à la fin du path. De plus à la fin de celui-ci ils devraient descendre d'une ligne (y-48 ) si j'ai bien compté, pour pouvoir repartir dans une autre path de sens inverse. Cette action serai fait par tout les enemies présent sur la room0. |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Demande d'aide] A.I basique Ven 10 Aoû 2007 - 15:28 | |
| Alors... j'ai vu ton GM6... c'est bien parti, mais pour ce genre de déplacement d'ennemis, je crois qu'il vaut encore mieux le coder que le faire avec un path... Ce que je propose : - Code:
-
Dans create :
hspeed=3 Dans Step : if x>room_width-32 or x<32 {hspeed=-hspeed y+=32} Rien d'autre. pas de path. et ça marche. |
|
| |
maugun Bavard
Messages : 90
| Sujet: Re: [Demande d'aide] A.I basique Ven 10 Aoû 2007 - 19:02 | |
| Merci, ça marche niquel, par contre pourrai tu m'expliquer se que veulent dire chaque commande (même si je pense comprendre ce qu'elles veulent dire dans l'ensemble), parce que j'aimerai être sûr de comprendre. ^^ En tout cas merci beaucoup. Edit : J'ai une autre question : serai-t-il possible de rajouter une commande qui fait que dès que l'un des obj_enm_5 descend d'un cran, tout les objet obj_enm_5 descandent d'un canr en même temps ? |
|
| |
jo *Excellent utilisateur*
Messages : 4879 Localisation : CENSURE T_T Projet Actuel : FAC
| Sujet: Re: [Demande d'aide] A.I basique Ven 10 Aoû 2007 - 19:12 | |
| hspeed=3 -> vitesse horizontale = 3 Dans Step : if x>room_width-32 or x<32 si x est plus grand que la largeur de la room - 32 pixel , ou que x est plus petit que 32 {hspeed=-hspeed -> la vitesse horizontale est egale a son opposéy =32} descendre de 32 pixel
x= axe horizontal y=axe vertical
:happy1: |
|
| |
maugun Bavard
Messages : 90
| Sujet: Re: [Demande d'aide] A.I basique Ven 10 Aoû 2007 - 20:30 | |
| Oki merci beaucoup pour ces précisions. |
|
| |
Contenu sponsorisé
| Sujet: Re: [Demande d'aide] A.I basique | |
| |
|
| |
| [Demande d'aide] A.I basique | |
|