Deplacement

Messages postés
2
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
17 janvier 2008
- - Dernière réponse : 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

 
Afficher la suite 

2 réponses

Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
0
Merci
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+
Commenter la réponse de cs_Nasman
Messages postés
2
Date d'inscription
samedi 30 octobre 2004
Statut
Membre
Dernière intervention
17 janvier 2008
0
Merci
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.
Commenter la réponse de FireMan57