Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Intelligence artificielle
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Intelligence artificielle

Posté le 05/10/2015 18:47

Bonjour,
Cela fait un moment que je programme sur Casio graph 35, et j'ai comme projet de créer un bomberman.
Je compte ajouter des ennemis, mais je sis malheureusement pas comment créer une Intelligence Artificielle.
Pourriez-vous m'aider svp.


1, 2, 3 Suivante
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 05/10/2015 18:48 | #


Une IA peut être tout simplement un monstre que tu créés et qui suit un chemin que tu as prédéfini, qui fait par exemple un aller retour entre un point A et un point B ou même un point C si tu veux lui faire faire des passages dans plusieurs couloirs ou alors un passage aléatoire.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 05/10/2015 18:50 | #


tu peut aller dans ce topic qui t'explique les base mais chaque ia est differente en fonction du jeu que tu veut faire

There is only one thing that makes a dream impossible to achieve : the fear of failure
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 05/10/2015 18:55 | #


En fait, je voudrais créer une I.A qui puisse choisir son chemin aléatoirement, et lorsque qu'elle rencontre le héros, l'I.A tente de rattraper le héros et de le tuer (enfin vous voyez le genre). Merci pour vos réponses.
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 05/10/2015 19:05 | #


Et bien tu fais un chemin aléatoire entre un point A et B et entre un point C et D et tu lui fait faire ce chemin soit aléatoirement, soit tu choisis de d'abord faire A->B, C->D, l'inverse ou même permuter les lettres. Ensuite, tu fais en sorte que si le héros passe près du monstre donc à 1 ou 2 cases de sa position, elle suive sa position (tout ça, c'est des variables, pas très compliqué !)

Je te conseille de tester sur un terrain vide premièrement, ça sera plus simple
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 05/10/2015 19:06 | #


Peux-tu me donner un exemple stp.
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 05/10/2015 19:07 | #


comme le dit Eltoredo tu peut crée un chemin prédéfini pour ton monstre et quand le heros est dans le champ de vision du monstre il le poursuit

genre comme ça :


##############
# ----------<-------| #
# | #### h #### | #
# | #### | #### | #
# | #### | #### | #
# |---m-------->-- | #
###############
m=monstre
h=heros
|=trajet apres detection du heros



There is only one thing that makes a dream impossible to achieve : the fear of failure
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 05/10/2015 19:08 | #


Et bien...Tu mets une variable X à 5 par exemple et une variable Y à 5 aussi. Tu positionnes sur ce X ton personnage. Tu le fait descendre depuis le X (donc Y=0) jusqu'au Y=5, puis tu le fais remonter, en augmentant et en réduisant les variables, tout simplement.

Pour le suivi du héros, je n'ai pas d'exemple en tête, suis celui de Suruq
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 05/10/2015 19:11 | #


Merci beaucoup pour votre aide !!!
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 05/10/2015 19:13 | #


de rien
There is only one thing that makes a dream impossible to achieve : the fear of failure
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 05/10/2015 20:20 | #


Eltoredo a écrit :
Citer : Posté le 05/10/2015 19:08 | #
Et bien...Tu mets une variable X à 5 par exemple et une variable Y à 5 aussi. Tu positionnes sur ce X ton personnage. Tu le fait descendre depuis le X (donc Y=0) jusqu'au Y=5, puis tu le fais remonter, en augmentant et en réduisant les variables, tout simplement.

Pourrais-tu être plus précis stp.
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 05/10/2015 20:31 | #


Tout dépend de ta façon de programmer, il n'y a pas de recette miracle pour faire une IA.
Le plus souvent c'est un enchainement de conditions : si le héros est là, alors le personnage va par là, si ... alors, si ... alors.
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 05/10/2015 20:45 | # | Fichier joint


Suis-je aller trop loin ?
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 05/10/2015 21:15 | #


Je le refait en plus clair. Tu initialise la position X en abscisse de laquelle partira ton personnage au départ à 5 (X=5). Ensuite, tu fais pareil mais avec Y en ordonnée qui sera la position de ton personnage à la fin du trajet (Y=5). Ensuite, tu positionnes sur X, la position de départ, ton personnage (par exemple, Locate 5,1,"o"). Ensuite, tu fais en sorte qu'il fasse un aller retour entre X et Y continuellement avec une boucle do pour qu'elle fasse l'aller retour tant que le héro ne passe pas devant. Je pense avoir été plus clair, je te laisse faire la boucle Do, ça fait longtemps que je n'ai pas codé en basic.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 05/10/2015 21:46 | #


Merci, je vais essayer.

Ajouté le 05/10/2015 à 21:47 :
Merci, je vais essayer.

Ajouté le 06/10/2015 à 07:02 :
Est-ce que mon code est juste ?
X=5
Y=5
X=Y⇒"o"
Do
For X=Y→E To 250
Next
E=X+1→X
E=X-1→X
E=Y+1→Y
E=Y-1→Y
LpWhile Getkey≠47
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 06/10/2015 07:36 | #


L'as-tu testé pour savoir s'il est correct avant d'avoir posé la question ?

Et non, il ne l'est pas après ce que je t'ai dit au dessus. X (coordonnées 5,1) est censé être la position de départ du monstre et Y (coordonnées 5,5) est censé être la position de fin de ton personnage (il ne descend que de 5 pixels et il remonte de 5 pixels, c'est pas long pour un test !) alors que là, tu fais une condition à la ligne 3 qui affiche ton personnage quand X=Y, pourquoi ? Déjà, tu ne l'affiche pas là où il faut (sur X=5 pour Y=1 donc Locate 5,1,"o") et en plus, tu ne fais cette condition que quand les deux coordonnées sont égales, ce qui n'a aucun sens puisque ce sont 2 positions bien différentes à 2 points différents de la map.

Pour la boucle, je laisse quelqu'un d'autre te le dire mais ça devrait plutôt être ça pour le début :

X=5
Y=5
Locate 5,1,"o"


Voilà, là, j'affiche ton "o" aux coordonnées 5,1 (X,Y), il sera 5 pixels décalé vers la droite mais sur la première ligne de ta calculatrice. Et ton but est de le faire descendre en 5,1 puis de le faire remonter, à faire avec la boucle Do.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 06/10/2015 08:21 | #


non il faut mètre locate X,Y,"o"
sinon tu ne pourra pas le déplacer car la position sera bloque a 1,5

There is only one thing that makes a dream impossible to achieve : the fear of failure
Exagyde Hors ligne Membre Points: 86 Défis: 0 Message

Citer : Posté le 06/10/2015 18:23 | #


J'ai réussi, le seul problème est qu'il se téléporte au lieu d'avancer pas à pas.
Do
ClrText
Locate X,Y,"o"
For X=Y→E To 80
Int 21Ran# +1→X
Int 7Ran# +1→Y
Next
LpWhile Getkey≠31
Suruq game Hors ligne Membre de CreativeCalc Points: 621 Défis: 20 Message

Citer : Posté le 06/10/2015 18:30 | #


il faut que ton locate soit dans la boucle for car sinon les coordonne vont augmenter mais le perso ne sera pas afficher tant que la boucle n'est pas fini

There is only one thing that makes a dream impossible to achieve : the fear of failure
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 06/10/2015 18:37 | #


Oui, la boucle For sert justement à le faire bouger pas à pas (avec la fonction "Step" qui veut dire "Pas" en anglais)
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Fife86 Hors ligne Membre Points: 839 Défis: 0 Message

Citer : Posté le 06/10/2015 19:38 | # | Fichier joint


J'ai eu une petite idée de comment faire lorsque tu a créer ce topic mais je partage mes résultats maintenant car je les trouves intéressant.

L'IA suit un objectif: ici aller a une case de l'écran // N'importe laquelle.
Au départ son but est d'aller a son poste de garde puis de réaliser sa ronde.// Pouvant être une droite ou autre chose. On donne donc la case correspondant au début du tour de garde en objectif a l'IA.
Si l'IA voit le joueur alors son but change et il doit aller à l'endroit ou était situé le joueur la dernière fois qu'il la vu // Avec un, niveau de patience pour qu'il reprenne sa ronde si il ne trouve pas le joueur.

Je met en fichier joint le code que j'ai écrit.

AF: Affiche la map à l'écran.
C2:Check si l'IA ne voit pas le joueur en face de lui.
D2:Déplace l'IA
IA: Est le programme principal a lancer
J1 et J2: Sont le controle des décissions du joueur et de l'IA.
P2:Est l'algorithme de Pathfinding basic que j'ai créer. //A Améliorer
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
1, 2, 3 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 257 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd