Logicielsmoto.com

Nous sommes le 28 Mar 2024, 21:58

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6, 7 ... 19  Suivante
Auteur Message
MessagePosté: 08 Nov 2020, 03:34 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
humm, mon erreur est avant ce calcul en faite !

pour calculer l'écart de case entre PAC et BLINK je fais ça :

Code:
    LDA player_tileY            *|| diff Y player <-> blinky tile.   
    SUBA blinky_tileY           *||
    STA DIST_tileY              *||


j'obtiens pour DIST_tileY = $FC (-3), mais il me faut le résultat non signé, donc 3

si j'arrive à avoir l'écart (donc nombre positif) tout sera OK

du coup j'ai fais ça et j'obtiens $04 au lieu de $FC, ce qui me parait mieux !
Code:
    LDA player_tileY            *|| diff Y player <-> blinky tile
    SUBA blinky_tileY           *||
    BGE pos1
    NEGA
pos1    STA DIST_tileY              *||

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 13:30 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Oui c'est comme ca qu'il faut faire.

Sinon pour les cycles, DCMoto les donne en mode débug. L'assembleur c6809 les donne aussi dans le fichier *.lst issu de la compile. Et enfin la doc "programming manual du 6809" les donne dans un beau tableau récapitulatif à la fin: JMP en mode étendu c'est 3 octets et 4 cycles processeurs.

Pour la distance min, les perso n'allant que dans le sens horiz ou vertical (pas de diagonale +/- penchée ici), la distance dite de Manhattan (abs(delta-x) + abs(delta-y)) ne serait elle pas mieux pour trouver l'ennemi le plus proche, en nombre de pas total plutôt qu'en distance euclidienne vu qu'ils ne peuvent traverser les murs et aller en diagonale.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 13:48 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
j'ai été voir, la distance dite de Manhattan.
ça m'a l'air bien, à tester, en plus y'a pas de MUL ou de carre !

distance = (X2-X1) + (Y2-Y1)

Merci.

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 13:52 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Attention c'est des valeurs absolues qu'il faut additionner.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 13:54 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
oui c'est ce que je regardais avec ton abs...

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 15:31 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
bon j'ai sortie le papier crayon, la technique simple ne fonctionne pas !

Dans le calcul en rouge, on arrive trop souvent à des valeurs identiques, du coup on peut pas choisir la direction !

Image

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 16:07 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
En fait la distance de Manhattan après un movement est est égale à la distance avant le mouvement +/-1. On a +1 si on part dans la mauvaise direction (en sud ou ouest), et -1 si dans "une" bonne direction (nord ou est). Cela ne permet pas de décider entre nord ou est, et c'est normal vu que avec les mouvements autorisés (horiz/vertical, et on ne tient pas compte des murs), le fantôme fait le même nb de pas par un chemin ou l'autre.

Euclid peut mieux marcher, mais une formule comme max(abs(deltax),abs(deltay)) me semble aussi remplir l'objectif, à savoir décider entre N/S/E/W sans trop de calcul:
Code:
dx = playerx - fantomex
dy = playery - fantomey
if abs(dx)>abs(dy) then -- le max est dx (horiz), donc aller N/S ne change pas la distance
  if dx>0 then aller(E) else aller(W) end
else -- le max est dy (verti) donc aller E/W ne change pas la distance mais N/S si
  if dy>0 then aller(N) else aller(S) end
end

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 18:05 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Yes ! ça marche, :bien:
- faut maintenant que je rajoute la collision les murs en testant les "TILE" et c'est bon pour BLINKY mode attack

https://oxustudio.com/to8/forum/IA_GHOST/test-blinky-ia-01.mp4

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Nov 2020, 23:19 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
bon ça marche mais ça bug, car il faut faire le test seulement aux intersections,
Car lorsqu'une direction est décidé, le déplacement dois continuer pareil jusqu'a la prochaine intersection !...

arrrg. bon ça avance quand même :D

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 09 Nov 2020, 00:38 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Oui s'il y a des murs à droite/gauche il faut ignorer le choix E/W et forcer le if qui décide N/S (cela revient à forcer le max dans la direction N/S). Inversement si des murs à en haut/bas.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 09 Nov 2020, 21:07 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
ha! j'ai trouvé le truc qui manque pour l'IA BLINKY,
bon, jusque là tout fonctionne, pour que ça soit parfait, à chaque changement de direction, il faut interdire l'inverse de la direction en cours...

https://oxustudio.com/to8/forum/IA_GHOST/test-blinky-ia-02.mp4

et là ça sera comme la vrai IA de l'arcade...

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 10 Nov 2020, 23:59 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Bingo :bien:

voilà la premiere AI.

https://oxustudio.com/to8/forum/IA_GHOST/test-blinky-ia-03.mp4

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 11 Nov 2020, 00:30 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Mais c'est qu'il est tenace ce fantôme! Bravo :good:

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 11 Nov 2020, 00:50 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
il lâche pas l'affaire :W
Je verrais les histoires de vitesse après...

Prochaines actions :
- pacman se fait bouffer + l'animation bouffage et vie -1
- pacman bouffe une super pacgum + IA ghost qui s'enfuit en bleu

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 11 Nov 2020, 01:01 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
l'avantage de se barrer, c'est que c'est pile la direction opposée :)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6, 7 ... 19  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 27 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com