Deplacement

FireMan57 Messages postés 2 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 17 janvier 2008 - 17 janv. 2008 à 01:50
FireMan57 Messages postés 2 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 17 janvier 2008 - 17 janv. 2008 à 11:02
Bonjour, je débute en asm x86 et j'aimerais savoir comment faire pour effectuer correctement le déplacement d'un personnage en mode graphique. J'ai déjà tenter quelque chose mais les touches utilisées ne sont pas bonnes et au lieu de simplement se déplacer mon "personnage" trace une ligne . Merci de votre aide voici mon morceau de code :

;---------PACMAN-------------------------------------------------------------------

                                                                         
    ;apparution
         mov si,y      ;mise en place de pacman
          imul si,320
          add si,x
        
         mov byte ptr es:[si],6  ; chiffre = couleur      
                                               
                                                                         
        

    ;deplacement
        mov ah,1     ;attente touche
        int 16h
       
        jz rien        ;pas de touche
       
        mov ah,0     ;touche
        int 16h

   
         cmp al,'p'
         jne quit
        
         jmp fini 
        
  quit:      
         cmp al,'z'        
         jne pashaut                                                        
         
         mov ax,0                                                     
         add x,ax
         mov ax,-1                                                     
         add y,ax                                                     
        
         jmp rien                                                   
  pashaut:                                                                  
         cmp al,'s'        
         jne pasbas                                                        
                                                             
         mov ax,0                                                     
         add x,ax
         mov ax,1                                                     
         add y,ax
        
         jmp rien                                                   
  pasbas:                                                                  
         cmp al,'q'        
         jne pasgauche 
                                                               
         mov ax,-1                                                     
         add x,ax
         mov ax,0                                                     
         add y,ax
                                                               
         jmp rien                                                   
  pasgauche:                                                                  
         cmp al,'d'        
         jne rien
                                                           
         mov ax,1                                                     
         add x,ax
         mov ax,0                                                     
         add y,ax

   
   
rien:   

    
;---------bouclage-----------------------------------------------------------------

    jmp boucle

 

2 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
17 janv. 2008 à 08:25
Bonjour Fireman57,

Je pense que ton problème vient du fait que tu dessines ton personnage quand tu le déplaces mais que tu ne restaures pas l'ancien emplacement. Il faudrait cependant que tu précises la résolution de ton écran (320 colonnes ?) et les boucles d'attente.


Nota: Pourquoi ajouter 0 à un nombre, à quoi celà sert-il ?


Pour mettre à zéro un registre, préférer xor registre,registre


A+
0
FireMan57 Messages postés 2 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 17 janvier 2008
17 janv. 2008 à 11:02
Pour ce qui est du mode graphqie c'est celui-ci :

    mov ax,13h ;mode video320*200 remplit de 0
    int 10h   

    mov ax,0a000h ;=ES  (mémoire vidéo)                     
    mov es,ax  

je pensais que remttre un zero a ce nombre m'anulerai sa position précédente.
Il faut donc que j'utilise xor est-il possible d'avoir une exemple pour un mouvement vers la drotie par exemple ?

Je vous remercie.
0
Rejoignez-nous