Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Intelligence artificielle qui n'est pas intelligente
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Intelligence artificielle qui n'est pas intelligente

Posté le 07/11/2019 18:56

Je me demandais pourquoi ce code ne marche pas :

If C-A>D-B
Then A<C⇒1→E
A>C⇒2→E
IfEnd
If D-B>C-A
Then B<D⇒3→E
B>D⇒4→E
IfEnd
If U=3
Then E=1⇒C-1→C
E=2⇒C+1→C
E=3⇒D-1→D
E=4⇒D+1→D
0→U
IfEnd
...

Sachant que j'ai déjà mis un code de mouvements (A et B) à un perso que je déplace, ce code marche très bien mais l'IA quitte l'écran (elle n'effectue que les opérations -). Donc voilà mon problème


Pages : 1, 2Suivante
RedcmdHors ligneMembrePoints: 200 Défis: 5 Message

Citer : Posté le 07/11/2019 19:31 | #


I dont see any code to test if the AI is off the screen?
If X>21 OR X<1 OR Y>7 OR Y<1
Then 'Off screen
Else 'On screen
IfEnd

RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 07/11/2019 19:44 | #


Yes but it's because the AI should follow me, which she does not.
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
RedcmdHors ligneMembrePoints: 200 Défis: 5 Message

Citer : Posté le 07/11/2019 19:54 | #


Seeing the rest of the code would be nice
if C-A = D-B then E is not set to anything
so if its on the diagonal from you, it stops working correctly?
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper Sudoku
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 07/11/2019 20:07 | #


Oh. I didn't think about that

Ajouté le 07/11/2019 à 20:08 :
I go to test this now.
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 08/11/2019 07:57 | #


Regarde le code de ce programme. Il fait quelque chose de très similaire à la difference près qu'il y a 7 ia qui me suivent..
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 08/11/2019 08:50 | #


Merci je vais voir ça
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 10/11/2019 16:55 | # | Fichier joint


@Youstones: Donc pour répondre à ta demande, voici une explication suivie du code de mon programme Survival Game :



Tout d'abords, pour ceux qui n'auraient pas encore testé le jeu ou qui ne savent pas de quoi il s'agit, je vais expliquer. Ce jeu est un jeu de survie qui prends place sur tout l'écran texte. Vous, le joueur, êtes représentés par un point noir, tandis que le danger que vous fuyez, ici sept zombies, sont représentés par des cercles barrés. Le but donc est de survivre en vous déplaçant sur l'écran à l'aide des touches [REPLAY] le plus longtemps possible. Un compteur (ici de secondes, à titre indicatif) vous indique le temps actuel que vous avez survécu.

Intéressons nous maintenant (car c'est ce pourquoi vous avez lu tout ce qui précède ) au fonctionnement de ces sept zombies qui pourraient êtres appelés, par n'importe quelle personne lambda, des IA (Intelligences Artificielles).
Il faut tout d'abords savoir que ce sept zombies, qui se déplacent vers le joueur par défaut, sont tous pilotés par... un seul et même bout de code. Les caractéristiques de chaque zombie étant stockées dans une matrice de 3 lignes par 7 colonnes, une pour chaque zombie. (3 lignes: une pour la position X, l'autre pour la position Y, et enfin la dernière pour la quantité de vies qu'il reste au zombie (et oui, j'avais prévu un système d'armes mais ça n'as pas abouti.. c'est peut être pour bientôt)). Donc pour fonctionner, je définis en premier cette matrice, avec les positions de départ de chaque zombie, et leur niveaux de vies (tous les mêmes). Ensuite, dans la boucle principale du programme, celle qui gère les déplacements du joueur et aussi ceux des zombies, ce trouve une boucle for. Cette boucle lit une à une les colonnes de la matrice et, si le zombie concerné possède encore de la vie, elle effectue une suite de tests qui aboutissent au déplacement du zombie (modification des coordonnées X et Y). Ces tests sont guidés par une fonction randint() qui permet au programme de "choisir" si le zombie se déplace ou pas (si la fonction renvoie 1, alors le test est validé. Les bornes de la fonction randint() sont 0, et un nombre entre 1 et 10 définissant le niveau de difficulté). Ensuite, si le test est positif, un autre suit comparant la position du zombie avec celle du joueur pour faire aller le zombie vers le joueur en faisant varier d'une unité les coordonnées du zombie dans la bonne direction.
Certains se demandent donc: comment ces zombies font-ils pour ne pas sortir de l'écran et provoquer une erreur puisqu'il n'y as pas de test à ce sujet ? Je suis donc tenté de leur répondre que les zombies suivent le joueur, qui lui ne peut pas sortir de l'écran. Par conséquent les zombies ne le peuvent pas non plus.

Pour plus de clarté, voici le code. Je l'ai converti en .txt avec ma graph90 et corrigé à la main pour le rendre plus lisible (les caractères spéciaux étant représentés par leur code hexa). Donc si il y as des soucis dans la lecture, n'hésitez pas :

'ProgramMode:RUN
0->A~Z:0->r:1->D
"SGAME"->List 1 // Liste de sauvegarde du meilleur score

//...
// Pour éclaircir le code, j'ai retiré la partie de l'introduction et du texte
//...

Lbl Z
ClrText
Menu "###SURVIVAL GAME###","Survivez !",1,"Difficulté",2,"Meilleur score",3,"Sortie de secours",4 // Menu principal

//...
// Autres choix du menu
//...

Lbl A // Choix "Survivez !"
1->A:4->B:100->V:0->T
ClrMat
[[21,21,21,21,21,21,21][1,2,3,4,5,6,7][100,100,100,100,100,100,100]]->Mat I // matrice contenant les positions et les niveaux de vies des IAs

While Getkey<>47 // Boucle principale du programme
Isz T
Locate A,B,"_#E6A4_" //Affichage des valeurs de vies du joueur et du temps qui s'écoule
Locate 1,1,V
Locate 4,1,"_#E69D_"
Locate 10,1,T
Locate 15,1,"s"

For 1->r To 7
Locate Mat I[1,r],Mat I[2,r]," " // Effacement des zombies pour modifier leurs positions sans effacer tout l'écran
Next

For 1->r To 7 // Boucle de lecture de la matrice des zombies et de calcul de leurs nouvelles coordonnées
If Mat I[3,r]>0 // Test du niveau de vie (si = 0 alors le zombie est mort et ne bouge plus. Leur perte de vies n'est pas implémentée)
Then
If RanInt#(0,D)=1 // Random pour déterminer si le zombie se déplace ou non
Then
Mat I[1,r]>A=>Mat I[1,r]-1->Mat I[1,r] // En abscisses, si le zombie se trouve avant le joueur, alors il avance
Mat I[1,r]<A=>Mat I[1,r]+1->Mat I[1,r] // En abscisses, si le zombie se trouve après le joueur, alors il recule
Mat I[2,r]>B=>Mat I[2,r]-1->Mat I[2,r] // En ordonnées si le zombie se trouve au dessus du joueur, alors il descends
Mat I[2,r]<B=>Mat I[2,r]+1->Mat I[2,r] // En ordonnées si le zombie se trouve au dessous du joueur, alors il monte
IfEnd
IfEnd
Next

For 1->r To 7 // Boucle de test si un zombie se trouve sur le joueur, il lui retire alors de la vie
Locate Mat I[1,r],Mat I[2,r],"_#E6D1_" // Affichage du zombie
If Mat I[1,r]=A And Mat I[2,r]=B And V>0 // Test de position
Then Locate 1,1,"   "
V-1->V // Retrait d'une vie
IfEnd
Next

If V<=0 // Teste si le joueur est mort: fin de la partie et sauvegarde du meilleur score
Then
T>List 1[1]=>T->List 1[1]
Break
IfEnd

Getkey->K

If K<>0 // Déplacements du joueur
Then Locate A,B," " // Effacement du joueur pour le déplacer sans effacer tout l'écran
'DEPLACEMENT J
A<21=>K=27=>Isz A
A>1=>K=38=>Dsz A
B<7=>K=37=>Isz B
B>2=>K=28=>Dsz B
K=46=>Break
Locate A,B,"_#E6A4_" // Affichage du joueur
IfEnd
WhileEnd

Lbl Y // Affichage du meilleur score et retour au menu principal
ClrText
Locate 5,3,"Meilleur score:"
Locate 9,5,List 1[1
Locate 13,5,"s"
Locate 16,7,"[Exit]"
List 1[1]>100=>Locate 1,7,"Bien joué !"
Do
LpWhile Getkey
Do
LpWhile  Not Getkey
Goto Z


En relisant ainsi le code je m'aperçois que de nombreux morceaux peuvent êtres regroupés et simplifiés. Considérez ce code comme un exemple. Je vais travailler à l'optimiser

Je n'ai que très rarement expliqué ainsi un programme, je suis encore assez maladroit.. Donc n'hésitez pas à demander précisions

Ajouté le 10/11/2019 à 17:15 :
Code du jeu mis à jour. Celui qui est dans mon précédent post est obsolète mais sert d'exemple, l'aspect général et le fonctionnement n'ayant pas étés impactés par ma mise à jour. C'était une question d'optimisation
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 10/11/2019 22:09 | #


Donc j'ai bien lu tout ton code (et je t'en remercie grandement) mais je suis sincèrement désolé si je n'étais pas clair, mais ce que j'essayé de faire c'est que l'ennemi "réfléchisse" à quel chemin est le plus efficace pour tuer le joueur, sans dire sur ton code été inutile j'ai appris pas mal de chose (comme le fait de faire 0→A~Z). Hors mon programme était extrêmement bugué (et il l'est toujours ) car l'ennemi reste bloqué des fois sur l'axe de y ou x... Enfin, comme toi, je ne suis pas doué pour expliquer alors si tu a besoin de plus d'informations...

Ajouté le 10/11/2019 à 22:09 :
Ps : encore vraiment désolé de ce malentendu

Ajouté le 10/11/2019 à 22:39 :
Nous sommes d'accord que si le joueur (en mode texte) est en A=7;B=3 et que l'ennemi est en C=16;D=6, |A-C|>,< ou =|B-D| me permet de comparer la distance ?
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
LephenixnoirHors ligneAdministrateurPoints: 16165 Défis: 140 Message

Citer : Posté le 10/11/2019 22:39 | #


Oui, c'est ce qu'on appelle la Distance de Manhattan.
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 10/11/2019 22:48 | #



...
A-C→X
X<0⇒X*-1→X
B-D→Y
Y<0⇒Y*-1→Y
If X≥Y
Then
A>C⇒C+1→C
A<C⇒C-1→C
IfEnd
If X<Y
Then
B>D⇒D+1→D
B<D⇒D-1→D
IfEnd
Locate C,D, "¶"
...

Pourquoi cela marche pas ? (l'ennemi reste bloqué à certain endroit, incapable de monter...) et je n'ai pas oublié la possibilité d'un égal mais je n'avais pas le temp et la place pour...
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 11/11/2019 08:52 | #


Deja tu peux remplacer les
X<0⇒X*-1→X

Par la fonction abs de la calto. Regarde dans le catalogue ou le sous-menu [MATH].
Ensuite je ne suis pas sur de comprendre ce que tu veux faire.. tu veux que ce bot te rejoigne par le chemin le plus direct mais y a-t-il des obstacles... tu peux reformuler le problème stp ?
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 11/11/2019 09:20 | #


L'écran est vide, ton ennemi est en face de toi et... tu fuis comme un lâche ! Et l'ennemi essaye de te rattraper le plus vite pour te tuer. Donc il n'y a pas d'obstacles (pour l'instant) et on peut contrôler le joueur dans tout l'écran. Il n'y a qu'un ennemi, et la condition de mort est s'il te touche

Ajouté le 11/11/2019 à 09:30 :
Et le problème c'est que l'ennemi fait des mouvements Illogique (aller retour, reste bloqué,...)
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 11/11/2019 10:02 | #


Ben c'est exactement ce que fait mon programme
Mais avec 7 bots et pas de mort subite..
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 11/11/2019 10:02 | #


Pourtant tu ne compare pas les distance dans ton code, si ?

Ajouté le 11/11/2019 à 10:06 :
Parce que dans ton code il va normalement toujours se déplacer en abscisses (en X) d'abord avant de se déplacer en ordonnée (en y)
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 11/11/2019 10:06 | #


Ben si
Ici:
...
Mat I[1,r]>A=>Mat I[1,r]-1->Mat I[1,r] // En abscisses, si le zombie se trouve avant le joueur, alors il avance
Mat I[1,r]<A=>Mat I[1,r]+1->Mat I[1,r] // En abscisses, si le zombie se trouve après le joueur, alors il recule
Mat I[2,r]>B=>Mat I[2,r]-1->Mat I[2,r] // En ordonnées si le zombie se trouve au dessus du joueur, alors il descends
Mat I[2,r]<B=>Mat I[2,r]+1->Mat I[2,r] // En ordonnées si le zombie se trouve au dessous du joueur, alors il monte
...

Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 11/11/2019 10:22 | #


1) puisque tu le met cash, il execute la dernière fonction valable, non ?
2)tu compare au joueur, et non entre les distance X et y ?
3) si je t'envoie une vidéo par lien drive, ça marche ?
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 11/11/2019 11:14 | #


Par Drive.. l'ordi a fait une maj et drive deconne en ce moment, je prefere pas.
Non, le programme execute toutes les conditions si elles sont validées. Donc un bot peut se déplacer en diagonale. Ah oui je comprends pourquoi tu fait ça, en effet je ne compare pas les coordonnées x et y.. mais ou serait l'intérêt.. teste mon jeu (avec CBasic de préférence) tu verra que les bots vont assez vite et par un chemin que j'estime etre le plus court
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 11/11/2019 11:44 | #


Ah et bien tu sais quoi ? J'ai delete TOUT mon code et j'ai repris de zéro. Donc j'ai commencé avec ma base et j'ai juste quelques problèmes avec les locates qui efface le texte (ça clignote sans cesse) mais sinon ça marche ! Je crois que J'avais une erreur d'encodage qui corrompé mes fonctions,en empêchant donc à l'ennemi de bien se déplacer. Sinon je développe un petit système de tir peut-être que si je le termine je peux te le passer pour survival game ? (en dédommagement du temp pris)

Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
DisperseurHors ligneMembrePoints: 1672 Défis: 1 Message

Citer : Posté le 11/11/2019 11:50 | #


Non tkt, pas de soucis. Sinon ouais je veux bien voir ce que tu va faire, même si j'ai déjà une petite idée de ce que je vais faire.. Je pense aussi revoir le code et mettre des obstacles, faire en sorte que les bots me courent apres seulement apres m'avoir vu et tentent de me tuer. Ainsi je pourrais faire des lvls. Je pense faire un truc dans ce genre là, j'ai déjà fait des programmes avec des bouts de code utiles pour ce projet
Mes meilleurs jeux
N'hésitez pas, notez !

Jeux BasicCasio / CBasicCasio:
-World Tank War II
-Apollo 11
-GeoGraph ! Élu Jeu du Mois de Mars 2019 !
Jeux C:
-Planétarium 2 ! Chef d'Oeuvre !


√(2+2-2+2-2+2+2-2-2-2) = 0
YoustonesHors ligneMembrePoints: 186 Défis: 0 Message

Citer : Posté le 11/11/2019 11:54 | #


Mais stv tu me donne des bout de codes à faire cela ne me dérange pas ! Ici je vais essayer de mettre des obstacles et puis je travaillerai le tir du player.
Mon cerveau se répète tous les jours la mythique phrase : "Houston, je crois que nous avons un problème"
Pages : 1, 2Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 43 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