AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 [Demande d'aide] A.I basique

Aller en bas 
5 participants
AuteurMessage
maugun
Bavard



Messages : 90

[Demande d'aide] A.I basique Empty
MessageSujet: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 9 Aoû 2007 - 22:28

Bonjour,

Etant nouveau sur ce forum, je vais commencer par me présenter. Wink

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 :

fleche_d 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] fleche_d 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. ^^

fleche_d 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. Wink

Voilà j'espère avoir était assez claire et j'attends avec impatience votre aide. happy1


Dernière édition par le Jeu 9 Aoû 2007 - 23:14, édité 1 fois
Revenir en haut Aller en bas
krocko2233
Utilisateur confirmé: Rang *
krocko2233


Messages : 228
Localisation : In my dreams...

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 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))
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 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.
Revenir en haut Aller en bas
http://www.lecbna.org
Death_egg
*Excellent utilisateur*
Death_egg


Messages : 3807
Localisation : undefined
Projet Actuel : ou qu'elle est passée la barre d'avancement

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 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 super
Revenir en haut Aller en bas
maugun
Bavard



Messages : 90

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 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. ^^
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 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....
}
Revenir en haut Aller en bas
http://www.lecbna.org
maugun
Bavard



Messages : 90

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyJeu 9 Aoû 2007 - 23:02

Merci pour ces précisions, je vais voir si j'utilise la technique avec random ou l'alarme. Wink

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. gnii

Maintenant je vais voir pour les paths et pour la détéction des allié. ^^
Revenir en haut Aller en bas
maugun
Bavard



Messages : 90

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyVen 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.

fleche_d Télécharger

En 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. Wink
Revenir en haut Aller en bas
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyVen 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.
Revenir en haut Aller en bas
http://www.lecbna.org
maugun
Bavard



Messages : 90

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyVen 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. gnii

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 ?
Revenir en haut Aller en bas
jo
*Excellent utilisateur*
jo


Messages : 4879
Localisation : CENSURE T_T
Projet Actuel : FAC

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyVen 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:
Revenir en haut Aller en bas
http://psyckho.skyrock.com/
maugun
Bavard



Messages : 90

[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique EmptyVen 10 Aoû 2007 - 20:30

Oki merci beaucoup pour ces précisions. Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





[Demande d'aide] A.I basique Empty
MessageSujet: Re: [Demande d'aide] A.I basique   [Demande d'aide] A.I basique Empty

Revenir en haut Aller en bas
 
[Demande d'aide] A.I basique
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Yo ! lol :p besoin daide
» besoin daide IA pour zombie [résolu]
» problémes BASIQUE
» Script Chrono (basique)
» Système d'ombre basique [Résolu]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: