Jeux simple en assembleur
Résolu
bene54800
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je suis étudiant et je dois réaliser un jeu simple (un personnage qui se dirige) en assembleur sous radasm.
J'ai affiché un personnage (pacman que mon collègue à fait)
nous avons a peut près réussis a faire un labyrinthe pour qu'il évolue.
Mais j'ai un problème, je ne parvient pas a faire bouger l'image correctement, je m'explique:
j'ai procédé de la manière suivante:
1- afficher l'image a partir d'un point de départ
2- suprimmer l'image
3- bouger le point de départ
4- construire l'image (tjs la même) a partir du nouvel origine
Mais lorsque je bouge l'image (15*15 pixel) elle se reconstruit jamais droite c'est à dire que si j'ajoute 15 à dx par exemple (dx: coordonné de Hauteur Y)
et bien le l'image ne monte/descend pas parfaitement, elle est décalé a droite ou a gauche. j'essaye de bidouiller mais je n'y arrive pas
De plus, Je souhaiterait avoir une idée pour le faire s'arrêter lorsque qu'il rencontre un mur... car je n'est aucune idée de comment l'empêcher de traverser les mur.
J'espere avoir été clair, merci d'avoir pris le temps de lire.
J'ai affiché un personnage (pacman que mon collègue à fait)
nous avons a peut près réussis a faire un labyrinthe pour qu'il évolue.
Mais j'ai un problème, je ne parvient pas a faire bouger l'image correctement, je m'explique:
j'ai procédé de la manière suivante:
1- afficher l'image a partir d'un point de départ
2- suprimmer l'image
3- bouger le point de départ
4- construire l'image (tjs la même) a partir du nouvel origine
Mais lorsque je bouge l'image (15*15 pixel) elle se reconstruit jamais droite c'est à dire que si j'ajoute 15 à dx par exemple (dx: coordonné de Hauteur Y)
et bien le l'image ne monte/descend pas parfaitement, elle est décalé a droite ou a gauche. j'essaye de bidouiller mais je n'y arrive pas
De plus, Je souhaiterait avoir une idée pour le faire s'arrêter lorsque qu'il rencontre un mur... car je n'est aucune idée de comment l'empêcher de traverser les mur.
J'espere avoir été clair, merci d'avoir pris le temps de lire.
A voir également:
- Jeux simple en assembleur
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick jeux - Télécharger - Jeux vidéo
- Iphone 14 simple - Guide
- Jeux zuma - Télécharger - Jeux vidéo
- Jeux java football - Télécharger - Jeux vidéo
17 réponses
Bonjour,
vérifie que tu spécifies bien le type de tes variables de position.
Du genre, précise mov ax, dword:[variableposX] si tu as défini la variable comme un dword (dd)
Une fois j'avais un problème à cause de ça.
Sinon, pour les collisions c'est très simple, a chaque fois qu'une action est lancée, aller d'un pixel à gauche par exemple, avant de repeindre le pixel tu vérifies que tes positions mur et positionX - 1 ne sont pas égales.
vérifie que tu spécifies bien le type de tes variables de position.
Du genre, précise mov ax, dword:[variableposX] si tu as défini la variable comme un dword (dd)
Une fois j'avais un problème à cause de ça.
Sinon, pour les collisions c'est très simple, a chaque fois qu'une action est lancée, aller d'un pixel à gauche par exemple, avant de repeindre le pixel tu vérifies que tes positions mur et positionX - 1 ne sont pas égales.
Salut, dsl de pa répondre vite mais je travaille beaucoup sur le jeux...
Donc j'ai réussis a faire bouger mon perso dans son labyrinthe (j'ai jouer sur la couleur du pixel d'après)
J'ai un nouveau problème je voudrais faire évoluer 2 personnage est donc stocker les coordonné de chacun en temps réel. Je m'explique:
1) bouger le 1er perso
2) sauvegarder sa nouvel position
3) bouger le 2eme perso
4) sauvegarder sa nouvel position
Le principe est assez simple me direz vous et la solution aussi je pense mais je ne trouve pas. Il me suffit de stocker les valeur de dx et cx ( cx et dx sont des coordonnées)
J'ai donc essayé : mov dx, variable1
mov cx, variable2
variable1 db 0 dup(0FFH)
variable2 db 0 dup(0FFH)
Mais sa ne marche pas.
Pour simplifié mon problème : Je ne sais pas comment stocker dx et cx dans des variable !
Donc j'ai réussis a faire bouger mon perso dans son labyrinthe (j'ai jouer sur la couleur du pixel d'après)
J'ai un nouveau problème je voudrais faire évoluer 2 personnage est donc stocker les coordonné de chacun en temps réel. Je m'explique:
1) bouger le 1er perso
2) sauvegarder sa nouvel position
3) bouger le 2eme perso
4) sauvegarder sa nouvel position
Le principe est assez simple me direz vous et la solution aussi je pense mais je ne trouve pas. Il me suffit de stocker les valeur de dx et cx ( cx et dx sont des coordonnées)
J'ai donc essayé : mov dx, variable1
mov cx, variable2
variable1 db 0 dup(0FFH)
variable2 db 0 dup(0FFH)
Mais sa ne marche pas.
Pour simplifié mon problème : Je ne sais pas comment stocker dx et cx dans des variable !
essaye mov dx, byte[variable1]
et mov cx, byte[variable2]
C'est ce que te disais plus tot. Le compilateur n'a aucun moyen de connaitre la taille de tes variables. Or tu dois quand même lui indiquer, grace a la taille suivie de crochets.
Pour sauvegarder :
mov byte[sauvegarde1], byte[variable1]
mov byte[sauvegarde2], byte[variable2]
Si c'est ce que tu veux... Mais je n'en vois pas l'interet.
Apres, pourquoi mets-tu un DUP() apres ta déclaration de variable ?
DUP est pour un tableau, or il n'y en a pas besoin la je crois...
et mov cx, byte[variable2]
C'est ce que te disais plus tot. Le compilateur n'a aucun moyen de connaitre la taille de tes variables. Or tu dois quand même lui indiquer, grace a la taille suivie de crochets.
Pour sauvegarder :
mov byte[sauvegarde1], byte[variable1]
mov byte[sauvegarde2], byte[variable2]
Si c'est ce que tu veux... Mais je n'en vois pas l'interet.
Apres, pourquoi mets-tu un DUP() apres ta déclaration de variable ?
DUP est pour un tableau, or il n'y en a pas besoin la je crois...
Je vien d'arrivé chez moi, je vais manger un petit truc pi je mis met, je te tiens au courant.
eu juste, je les déclare : variable1 db ??
eu juste, je les déclare : variable1 db ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
variable db ?
puisqu'au départ tu ne sais pas quelle valeur mettre dedans.
Sur mon site, peu complet d'ailleurs, va dans la section sources, et télécharge le projet "graph" tu auras la source, comme ça ca te donne certaines info, comment je l'ai fait etc...
C'est de l'asm 16 bits sous x86.
puisqu'au départ tu ne sais pas quelle valeur mettre dedans.
Sur mon site, peu complet d'ailleurs, va dans la section sources, et télécharge le projet "graph" tu auras la source, comme ça ca te donne certaines info, comment je l'ai fait etc...
C'est de l'asm 16 bits sous x86.
Re, alors j'ai essayé : mov byte[variable1] ( déclaration: variable1 db)
mov byte[variable1] ( déclaration: variable1 dw)
mov variable1 ( déclaration: variable1 db)
mov variable1 ( déclaration: variable1 dw)
et j'ai a chaque une erreur : pgp.asm(3868) : error A2006: undefined symbol : variable1
Je suis a bout..
mov byte[variable1] ( déclaration: variable1 dw)
mov variable1 ( déclaration: variable1 db)
mov variable1 ( déclaration: variable1 dw)
et j'ai a chaque une erreur : pgp.asm(3868) : error A2006: undefined symbol : variable1
Je suis a bout..
je vien de dl ton programme ozox, c'est pas mal jolie !!! lol
je vais voir un peu comment tu as fait pi je vais essayer de continuer, fait moi signe quand tu est la
je vais voir un peu comment tu as fait pi je vais essayer de continuer, fait moi signe quand tu est la
Alors grâce a ton programme j'ai vu que je n'avais pas de segment data... je débute en assembleur et honnêtement je ne savais pas qu'il fallait en mettre un.
mon ancien:
assume cs:cseg,ds:cseg,ss:cseg
cseg segment
TOUT MON PROGRAMME
cseg ends
Nouveau assume
cs:cseg,ds:data,ss:cseg
cseg segment
TOUT MON PROGRAMME
cseg ends
data segment
variable1 dw ?
variable2 dw ?
Mais ces instructions ne marche toujours pas:
mov dx[variable1] pgp.asm(3871) : error A2008: syntax error : in instruction
mov dx, byte[variable1] pgp.asm(3871) : error A2009: syntax error in expression
Celle-ci marche:
mov dx, variable1
est-ce-que la valeur de dx se retrouve dans variable1 ?
mon ancien:
assume cs:cseg,ds:cseg,ss:cseg
cseg segment
TOUT MON PROGRAMME
cseg ends
Nouveau assume
cs:cseg,ds:data,ss:cseg
cseg segment
TOUT MON PROGRAMME
cseg ends
data segment
variable1 dw ?
variable2 dw ?
Mais ces instructions ne marche toujours pas:
mov dx[variable1] pgp.asm(3871) : error A2008: syntax error : in instruction
mov dx, byte[variable1] pgp.asm(3871) : error A2009: syntax error in expression
Celle-ci marche:
mov dx, variable1
est-ce-que la valeur de dx se retrouve dans variable1 ?
Bizarre...
En tout cas, ss:cseg est faux. Dans tout programme il faut une pile.
Attention aussi, le langage asm dépend du processeur, mais aussi du compilateur. Cette synthaxe que je t'expliquet correspond au compilateur TASM.
En tout cas, ss:cseg est faux. Dans tout programme il faut une pile.
Attention aussi, le langage asm dépend du processeur, mais aussi du compilateur. Cette synthaxe que je t'expliquet correspond au compilateur TASM.
je suis sur le 8086, avec radasm, MASM
alors j'ai réussis a stocker en faisant: mov variable1, dx
mais je ne sais pas si on peut récrire sur variable1 paske j'ai fait quelque test non concluant...
Je dois mettre quoi a la place de ss:cseg ?
alors j'ai réussis a stocker en faisant: mov variable1, dx
mais je ne sais pas si on peut récrire sur variable1 paske j'ai fait quelque test non concluant...
Je dois mettre quoi a la place de ss:cseg ?
La variable se sotck bien ça marche niquel, mais j'ai l'impression que quand la valeur est modifié et que je la restock et bin elle ne se stock pas
ss:pile
Et plus bas tout a la fin mais avant end begin tu mets ça :
pile segment stack
Var 256 db DUP(?)
pile ends
end begin ( begin est en fait le nom de ton premier label ok ?)
Et plus bas tout a la fin mais avant end begin tu mets ça :
pile segment stack
Var 256 db DUP(?)
pile ends
end begin ( begin est en fait le nom de ton premier label ok ?)
Salut, désolé de répondre aussi tard mais j'ai terminer le jeux !!! =)
Pour la pile j'ai fait ce que tu ma dit OZOX. Enfin Je me suis aussi servis du programme sur ton sité, c'est surtout ça qui ma aidé, c'est pour ça que je veux te dir un gros merci paske j'ai eu 20/20 a mon jeux !!!! =)
Si tu veu laisse moi ton e-mail je te l'envoi.
merci pour tout a bientot peu etre
Pour la pile j'ai fait ce que tu ma dit OZOX. Enfin Je me suis aussi servis du programme sur ton sité, c'est surtout ça qui ma aidé, c'est pour ça que je veux te dir un gros merci paske j'ai eu 20/20 a mon jeux !!!! =)
Si tu veu laisse moi ton e-mail je te l'envoi.
merci pour tout a bientot peu etre