Accueil > > > JEU DE CASSE-BRIQUE EN EMU 8086
JEU DE CASSE-BRIQUE EN EMU 8086
Information sur la source
Description
Pour le jeu que je propose, c’est un jeu de casse-briques aussi. Vous devez, à l’aide d’une raquette, dirigeable de gauche à droite et de droite à gauche que vous pourrez contrôler à l’aide des touches « W » et « X », orienter une balle qui rebondit depuis la raquette vers les briques présentées sous forme de croix (représentant ainsi des obstacles) en les faisant disparaître jusqu’à la dernière pour remporter la manche. je l'est programmer en EMU 8086 . n'hésitez pas de me laisser des commentaires ou des suggestions et merci!!
Source
- ORG 100h
-
- CALL lancement
- CALL cadre
- CALL briques
- CALL raquette
-
-
-
- game:
- ; On se positionne en haut de l'ecran a gauche
-
-
- MOV BX, 0
- MOV CH, 1
- MOV CL, 2
-
- MOV AX, 142h ; 142h = 322d
- MOV DX, 142h
-
-
- ;ici rebond1, rebond2, rebond3 ,
- ; rebond4 sont les 4 directions possibles de la balle apres une collision
-
-
-
- rebond1: CALL deplacement
- MOV BX, AX ; AX represente l'ancienne position
- MOV [00h+BX], 0x0F20h ;Couleur de fond
-
- MOV BX, DX ; DX represente la position actuelle
- MOV AX, [00H + BX]
- MOV [00H + BX], 0xF020h ;On utilise AX pour stocker temporairement
-
-
- CMP AH, 0x0Bh ; couleur de l'obstacle balle
- JNZ test_raquette_rebond1
- ; traitement de l'obstacle
-
- MOV BX, AX ;la couleur de la case pour effectuer un test ulterieurement
- MOV AX, DX
-
-
- CALL score
-
- CMP BL, 0x2Dh ; on teste le symbole present 2D
- JZ rebond2
- JMP rebond4
-
- test_raquette_rebond1: MOV BX, [0A0h+BX] ; vers haut gauche
- MOV AX, DX
- CMP BL, 58h
- JZ rebond2
-
- suite_rebond1:
-
- ADD DX,0xA2h
-
- INC CL
- INC CH
-
- CMP CL,26
- JGE fin_de_jeu
-
- CMP CH,79
- JGE rebond4
-
- JMP rebond1
-
-
-
-
- rebond2: CALL deplacement
- MOV BX, AX
- MOV [00h+BX], 0x0F20 ;Couleur de fond DE LA balle
-
- MOV BX, DX
- MOV AX, [00H + BX]
- MOV [00H + BX], 0xF020h
-
- CMP AH, 0x0Bh ; couleur de l'obstacle ??
- JNZ test_raquette_rebond2
- ; traitement de l'obstacle
-
- MOV BX, AX
- MOV AX, DX
-
- CALL score
-
- CMP BL, 0x2Dh ;on teste le symbole present 2D= '-'
- JZ rebond1
- JMP rebond3
-
- test_raquette_rebond2: MOV BX, [0A0h+BX] ; vers haut droite
- MOV AX, DX
- CMP BL, 3Dh ; 3Dh destination balle apres collision raquette
- JZ rebond2
-
- suite_rebond2:
- SUB DX,0x9Eh
-
- DEC CL
- INC CH
-
- CMP CL,2
- JLE rebond1
-
- CMP CH,79
- JGE rebond3
-
- JMP rebond2
-
-
-
-
-
-
- rebond3: CALL deplacement
- MOV BX, AX
- MOV [00h+BX], 0x0F20 ;Couleur de fond
-
- MOV BX, DX
- MOV AX, [00H + BX]
- MOV [00H + BX], 0xF020h
-
- CMP AH, 0x0Bh ; couleur de l'obstacle ??
- JNZ test_raquette_rebond3
- ; traitement de l'obstacle
-
- MOV BX, AX
- MOV AX, DX
-
- CMP BH, 0x0Ah
- JNZ suite_rebond3
- CALL score
-
- CMP BL, 0x2Dh ; on teste le symbole present
- JZ rebond4
-
- JMP rebond2
-
- test_raquette_rebond3: MOV BX, [0A0h+BX] ; vers haut droite
- MOV AX, DX
- CMP BL, 3Dh ; 3Dh destination balle apres collision raquette
- JZ rebond4
-
- Suite_rebond3:
- SUB DX,0xA2h
-
-
- DEC CL
- DEC CH
-
-
- CMP CL,2
- JLE rebond4
-
- CMP CH,1
- JLE rebond2
-
- JMP rebond3
-
-
-
-
-
-
- rebond4: CALL deplacement
- MOV BX, AX
- MOV [00h+BX], 0x0F20 ;Couleur de fond
-
- MOV BX, DX
- MOV AX, [00H + BX]
- MOV [00H + BX], 0xF020h
-
- CMP AH, 0x0Bh ; couleur de l'obstacle ??
- JNZ test_raquette_rebond4
- ; traitement de l'obstacle
-
- MOV BX, AX
- MOV AX, DX
-
- CMP BH, 0x0Ah
- JNZ suite_rebond4
- CALL score
-
-
- CMP BL, 0x2Dh ;on teste le symbole present
- JZ rebond3
- JMP rebond1
-
- test_raquette_rebond4: MOV BX, [0A0h+BX] ; vers haut droite
- MOV AX, DX
- CMP BL, 58h ; 3Dh destination balle apres collision raquette
- JZ rebond3
-
-
- Suite_rebond4:
- ADD DX,0x9eh
-
- INC CL
- DEC CH
-
- CMP CL,26
- JGE fin_de_jeu
-
- CMP CH,1
- JLE rebond1
-
- JMP rebond4
-
-
-
- fin_de_jeu:
-
- CALL vie
-
- CMP ES:[2], 0 ; compare ES:[2] (nbr de vies) avec 0 si = 0 jump at procedure perdue
-
- JNZ game
-
- CALL perdue ; appelle procedure perdu
-
- RET ; FIN DU PROGRAMME PRINCIPAL, ON REND LA MAIN AU DOS
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!! PROCEDURE LANCEMENT !!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- lancement PROC
-
- MOV AX, 0B800h ; On initialise le registre DS a B800h qui correspond au debut de la memoire video
- MOV DS, AX
-
- MOV AX, 02000h ; On initialise le registre ES a 2000h pour stocker des valeurs necessaires au fonctionnement du jeu
- MOV ES, AX
-
- MOV ES:[0], 0 ; score a 0
- MOV ES:[2], 3 ; nombre de point de vie a 3
- MOV ES:[4], 50 ; position raquette a l'ecran 50 / 160
-
- MOV [00h], 'S'
- MOV [02h], 'c'
- MOV [04h], 'o'
- MOV [06h], 'r'
- MOV [08h], 'e'
- MOV [0Ah], ':'
- MOV [0Eh], '0'
- MOV [10h], '0'
- MOV [12h], '0'
- MOV [14h], '0'
- MOV [16h], '0'
-
- MOV [32h], 'V'
- MOV [34h], 'i'
- MOV [36h], 'e'
- MOV [38h], 's'
- MOV [3Ch], ':'
- MOV [3Eh], '3'
-
-
-
-
- RET
-
- lancement ENDP
-
-
-
- ; !!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE CADRE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- cadre PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
- ; On trace la partie gauche et droite du cadre
-
- MOV AX, 02h
- MOV BX, 00h
- MOV CX, 23 ; On a 23 lignes
- MOV DX, 0A0h
-
- cadre2:
- MOV [0140h + BX], 0x0F49h
- MOV [01DEh + BX], 0x0F49h
- ADD BX, 0A0h
-
- LOOP cadre2 ; Si CX != 0, on reboucle
-
-
-
-
- ; On trace le haut du cadre
-
- MOV BX, 00h
- MOV CX, 80 ; On a 80 colonnes
-
- cadre1:
- MOV [0A0h + BX], 0x0F5Fh
- ADD BX, 2
-
- LOOP cadre1 ; Si CX != 0, on reboucle
-
-
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
-
- cadre ENDP
-
-
-
-
- ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE BRIQUE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- briques PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
- MOV DX, 0A0h
- MOV BX, 00h
- MOV AX, 02h
- MOV CX, 10
-
- MOV [7D0h + BX], 0x0B2Bh ; Equivaut A MOV [7D0h], '+'(creation symbole milieu)
-
- boucle:
- ADD BX, AX
- MOV [7D0h + BX], 0x0B2Dh
- SUB BX, AX
-
- SUB BX, AX
- MOV [7D0h + BX], 0x0B2Dh ; Equivaut à MOV [7D0h], '-' 2D = '-' (symbole brique)
- ADD BX, AX
-
- ADD BX, DX
- MOV [7D0h + BX], 0x0B7Ch ; Equivaut à MOV [7D0h], '|' 7C = '|'(symbole brique)
- SUB BX, DX
-
- SUB BX, DX
- MOV [7D0h + BX], 0x0B7Ch
- ADD BX, DX
-
- ADD AX, 2
- ADD DX, 0A0h
-
- LOOP boucle ; Si CX != 0, on reboucle
-
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
-
- briques ENDP
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE SCORE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- score PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
-
- INC ES:[0]
-
- MOV AX, ES:[0]
-
- MOV DX, 0
- MOV BX, 10000
-
- DIV BX
-
- ADD AX, 48
-
- ; affichage de ax
-
- MOV [0Eh], AL
-
- MOV AX, DX
- MOV DX, 0
- MOV BX, 1000
-
- DIV BX
-
- ADD AX, 48
-
- ; affichage de ax
- MOV [10h], AL
-
- MOV AX, DX
- MOV DX, 0
- MOV BX, 100
-
- DIV BX
-
- ADD AX, 48
-
- ; affichage de ax
- MOV [12h], AL
-
- MOV AX, DX
- MOV DX, 0
- MOV BX, 10
-
- DIV BX
-
- ADD AX, 48
-
- ; affichage de ax
- MOV [14h], AL
-
- ADD DX, 48
-
- ; affichage de ax
- MOV [16h], DL
-
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
-
- score ENDP
-
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE VIE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- vie PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
- DEC ES:[2]
- ; decremente le nombre de point de vie
- MOV AX, ES:[2]
-
- ADD AX, 48
-
- ; affichage de ax
- MOV [3Eh], AL ; 3CH position de l'affichage des points de vie
-
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
-
- vie ENDP
-
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!PROCEDURE PERDUE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- perdue PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- PUSH DS
-
- ; Ecriture de la premiere barre (du haut)
-
- MOV DH, 11
- MOV DL, 30
- MOV BH, 0
- MOV AH, 2
- int 10h
-
-
- MOV AX, SEG msg2
- MOV DS, AX
- MOV DX, OFFSET msg2
- MOV AH, 9
- int 21h
-
- ; Ecriture du texte
-
- MOV DH, 12
- MOV DL, 30
- MOV BH, 0
- MOV AH, 2
- int 10h
-
-
- MOV AX, SEG msg
- MOV DS, AX
- MOV DX, OFFSET msg
- MOV AH, 9
- int 21h
-
-
-
-
- ; Ecriture de la seconde barre (du bas)
- MOV DH, 13
- MOV DL, 30
- MOV BH, 0
- MOV AH, 2
- int 10h
-
-
- MOV AX, SEG msg1
- MOV DS, AX
- MOV DX, OFFSET msg1
- MOV AH, 9
- int 21h
-
-
- msg1 db " +-----------------+ $"
- msg db " | Manche Perdue | $"
- msg2 db " +-----------------+ $"
-
-
- POP DS
- POP DX
- POP CX
- POP BX
- POP AX
-
-
- RET
-
- perdue ENDP
-
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE RAQUETTE !!!!!!!!!!!!!!!!!!!!!!!
-
-
-
- raquette PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
- MOV BX, ES:[4] ; On recupere la position (la colonne) du centre de la raquette
- ; On ajoute F00h (24eme ligne)pour se trouver sur la derniere ligne
-
- MOV [0EFCh + BX], 'X' ; centre - 4
- MOV [0EFEh + BX], 'X' ; centre - 2
- MOV [0F00h + BX], 'X' ; centre +BX pour connaitre la position que le joueur a ajoute
- MOV [0F02h + BX], 'X' ; centre + 2
- MOV [0F04h + BX], 'X' ; centre + 4
-
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
- raquette ENDP
-
-
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE EFFACE RAQUETTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
- dropraquette PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
- MOV BX, ES:[4] ; On recupere la position (la colonne) du centre de la raquette
- ; On ajoute F00h pour se trouver sur la derniere ligne
-
- MOV [0EFCh + BX], ' ' ; centre - 4
- MOV [0EFEh + BX], ' ' ; centre - 2
- MOV [0F00h + BX], ' ' ; centre
- MOV [0F02h + BX], ' ' ; centre + 2
- MOV [0F04h + BX], ' ' ; centre + 4
-
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
- dropraquette ENDP
-
-
-
-
-
-
-
-
-
- ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE DEPLACEMENT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
- deplacement PROC
-
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
-
- MOV DX, 0
- MOV AX, 0
-
- MOV AH, 6
- MOV DL, 255
- int 21h
-
-
-
-
-
-
- CMP AL, 119
- JZ vers_la_gauche
-
- CMP AL, 120
- JZ vers_la_droite
-
- JMP fin
-
-
-
- vers_la_gauche:
- CMP B.ES:[4], 4
- JLE fin
- CALL dropraquette
- SUB B.ES:[4], 2
- JMP suite
-
-
- vers_la_droite:
- CMP B.ES:[4], 160
- JZ fin
- CALL dropraquette
- ADD B.ES:[4], 2 ; ES:[4] POSITION RAQUETTE
- JMP suite
-
-
- suite:
- CALL raquette
-
-
- fin:
- POP DX
- POP CX
- POP BX
- POP AX
-
- RET
- deplacement ENDP
ORG 100h
CALL lancement
CALL cadre
CALL briques
CALL raquette
game:
; On se positionne en haut de l'ecran a gauche
MOV BX, 0
MOV CH, 1
MOV CL, 2
MOV AX, 142h ; 142h = 322d
MOV DX, 142h
;ici rebond1, rebond2, rebond3 ,
; rebond4 sont les 4 directions possibles de la balle apres une collision
rebond1: CALL deplacement
MOV BX, AX ; AX represente l'ancienne position
MOV [00h+BX], 0x0F20h ;Couleur de fond
MOV BX, DX ; DX represente la position actuelle
MOV AX, [00H + BX]
MOV [00H + BX], 0xF020h ;On utilise AX pour stocker temporairement
CMP AH, 0x0Bh ; couleur de l'obstacle balle
JNZ test_raquette_rebond1
; traitement de l'obstacle
MOV BX, AX ;la couleur de la case pour effectuer un test ulterieurement
MOV AX, DX
CALL score
CMP BL, 0x2Dh ; on teste le symbole present 2D
JZ rebond2
JMP rebond4
test_raquette_rebond1: MOV BX, [0A0h+BX] ; vers haut gauche
MOV AX, DX
CMP BL, 58h
JZ rebond2
suite_rebond1:
ADD DX,0xA2h
INC CL
INC CH
CMP CL,26
JGE fin_de_jeu
CMP CH,79
JGE rebond4
JMP rebond1
rebond2: CALL deplacement
MOV BX, AX
MOV [00h+BX], 0x0F20 ;Couleur de fond DE LA balle
MOV BX, DX
MOV AX, [00H + BX]
MOV [00H + BX], 0xF020h
CMP AH, 0x0Bh ; couleur de l'obstacle ??
JNZ test_raquette_rebond2
; traitement de l'obstacle
MOV BX, AX
MOV AX, DX
CALL score
CMP BL, 0x2Dh ;on teste le symbole present 2D= '-'
JZ rebond1
JMP rebond3
test_raquette_rebond2: MOV BX, [0A0h+BX] ; vers haut droite
MOV AX, DX
CMP BL, 3Dh ; 3Dh destination balle apres collision raquette
JZ rebond2
suite_rebond2:
SUB DX,0x9Eh
DEC CL
INC CH
CMP CL,2
JLE rebond1
CMP CH,79
JGE rebond3
JMP rebond2
rebond3: CALL deplacement
MOV BX, AX
MOV [00h+BX], 0x0F20 ;Couleur de fond
MOV BX, DX
MOV AX, [00H + BX]
MOV [00H + BX], 0xF020h
CMP AH, 0x0Bh ; couleur de l'obstacle ??
JNZ test_raquette_rebond3
; traitement de l'obstacle
MOV BX, AX
MOV AX, DX
CMP BH, 0x0Ah
JNZ suite_rebond3
CALL score
CMP BL, 0x2Dh ; on teste le symbole present
JZ rebond4
JMP rebond2
test_raquette_rebond3: MOV BX, [0A0h+BX] ; vers haut droite
MOV AX, DX
CMP BL, 3Dh ; 3Dh destination balle apres collision raquette
JZ rebond4
Suite_rebond3:
SUB DX,0xA2h
DEC CL
DEC CH
CMP CL,2
JLE rebond4
CMP CH,1
JLE rebond2
JMP rebond3
rebond4: CALL deplacement
MOV BX, AX
MOV [00h+BX], 0x0F20 ;Couleur de fond
MOV BX, DX
MOV AX, [00H + BX]
MOV [00H + BX], 0xF020h
CMP AH, 0x0Bh ; couleur de l'obstacle ??
JNZ test_raquette_rebond4
; traitement de l'obstacle
MOV BX, AX
MOV AX, DX
CMP BH, 0x0Ah
JNZ suite_rebond4
CALL score
CMP BL, 0x2Dh ;on teste le symbole present
JZ rebond3
JMP rebond1
test_raquette_rebond4: MOV BX, [0A0h+BX] ; vers haut droite
MOV AX, DX
CMP BL, 58h ; 3Dh destination balle apres collision raquette
JZ rebond3
Suite_rebond4:
ADD DX,0x9eh
INC CL
DEC CH
CMP CL,26
JGE fin_de_jeu
CMP CH,1
JLE rebond1
JMP rebond4
fin_de_jeu:
CALL vie
CMP ES:[2], 0 ; compare ES:[2] (nbr de vies) avec 0 si = 0 jump at procedure perdue
JNZ game
CALL perdue ; appelle procedure perdu
RET ; FIN DU PROGRAMME PRINCIPAL, ON REND LA MAIN AU DOS
;!!!!!!!!!!!!!!!!!!!! PROCEDURE LANCEMENT !!!!!!!!!!!!!!!!!!!!!!!!!
lancement PROC
MOV AX, 0B800h ; On initialise le registre DS a B800h qui correspond au debut de la memoire video
MOV DS, AX
MOV AX, 02000h ; On initialise le registre ES a 2000h pour stocker des valeurs necessaires au fonctionnement du jeu
MOV ES, AX
MOV ES:[0], 0 ; score a 0
MOV ES:[2], 3 ; nombre de point de vie a 3
MOV ES:[4], 50 ; position raquette a l'ecran 50 / 160
MOV [00h], 'S'
MOV [02h], 'c'
MOV [04h], 'o'
MOV [06h], 'r'
MOV [08h], 'e'
MOV [0Ah], ':'
MOV [0Eh], '0'
MOV [10h], '0'
MOV [12h], '0'
MOV [14h], '0'
MOV [16h], '0'
MOV [32h], 'V'
MOV [34h], 'i'
MOV [36h], 'e'
MOV [38h], 's'
MOV [3Ch], ':'
MOV [3Eh], '3'
RET
lancement ENDP
; !!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE CADRE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cadre PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; On trace la partie gauche et droite du cadre
MOV AX, 02h
MOV BX, 00h
MOV CX, 23 ; On a 23 lignes
MOV DX, 0A0h
cadre2:
MOV [0140h + BX], 0x0F49h
MOV [01DEh + BX], 0x0F49h
ADD BX, 0A0h
LOOP cadre2 ; Si CX != 0, on reboucle
; On trace le haut du cadre
MOV BX, 00h
MOV CX, 80 ; On a 80 colonnes
cadre1:
MOV [0A0h + BX], 0x0F5Fh
ADD BX, 2
LOOP cadre1 ; Si CX != 0, on reboucle
POP DX
POP CX
POP BX
POP AX
RET
cadre ENDP
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE BRIQUE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
briques PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX, 0A0h
MOV BX, 00h
MOV AX, 02h
MOV CX, 10
MOV [7D0h + BX], 0x0B2Bh ; Equivaut A MOV [7D0h], '+'(creation symbole milieu)
boucle:
ADD BX, AX
MOV [7D0h + BX], 0x0B2Dh
SUB BX, AX
SUB BX, AX
MOV [7D0h + BX], 0x0B2Dh ; Equivaut à MOV [7D0h], '-' 2D = '-' (symbole brique)
ADD BX, AX
ADD BX, DX
MOV [7D0h + BX], 0x0B7Ch ; Equivaut à MOV [7D0h], '|' 7C = '|'(symbole brique)
SUB BX, DX
SUB BX, DX
MOV [7D0h + BX], 0x0B7Ch
ADD BX, DX
ADD AX, 2
ADD DX, 0A0h
LOOP boucle ; Si CX != 0, on reboucle
POP DX
POP CX
POP BX
POP AX
RET
briques ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE SCORE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
score PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
INC ES:[0]
MOV AX, ES:[0]
MOV DX, 0
MOV BX, 10000
DIV BX
ADD AX, 48
; affichage de ax
MOV [0Eh], AL
MOV AX, DX
MOV DX, 0
MOV BX, 1000
DIV BX
ADD AX, 48
; affichage de ax
MOV [10h], AL
MOV AX, DX
MOV DX, 0
MOV BX, 100
DIV BX
ADD AX, 48
; affichage de ax
MOV [12h], AL
MOV AX, DX
MOV DX, 0
MOV BX, 10
DIV BX
ADD AX, 48
; affichage de ax
MOV [14h], AL
ADD DX, 48
; affichage de ax
MOV [16h], DL
POP DX
POP CX
POP BX
POP AX
RET
score ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE VIE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
vie PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
DEC ES:[2]
; decremente le nombre de point de vie
MOV AX, ES:[2]
ADD AX, 48
; affichage de ax
MOV [3Eh], AL ; 3CH position de l'affichage des points de vie
POP DX
POP CX
POP BX
POP AX
RET
vie ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!PROCEDURE PERDUE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
perdue PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
; Ecriture de la premiere barre (du haut)
MOV DH, 11
MOV DL, 30
MOV BH, 0
MOV AH, 2
int 10h
MOV AX, SEG msg2
MOV DS, AX
MOV DX, OFFSET msg2
MOV AH, 9
int 21h
; Ecriture du texte
MOV DH, 12
MOV DL, 30
MOV BH, 0
MOV AH, 2
int 10h
MOV AX, SEG msg
MOV DS, AX
MOV DX, OFFSET msg
MOV AH, 9
int 21h
; Ecriture de la seconde barre (du bas)
MOV DH, 13
MOV DL, 30
MOV BH, 0
MOV AH, 2
int 10h
MOV AX, SEG msg1
MOV DS, AX
MOV DX, OFFSET msg1
MOV AH, 9
int 21h
msg1 db " +-----------------+ $"
msg db " | Manche Perdue | $"
msg2 db " +-----------------+ $"
POP DS
POP DX
POP CX
POP BX
POP AX
RET
perdue ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE RAQUETTE !!!!!!!!!!!!!!!!!!!!!!!
raquette PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX, ES:[4] ; On recupere la position (la colonne) du centre de la raquette
; On ajoute F00h (24eme ligne)pour se trouver sur la derniere ligne
MOV [0EFCh + BX], 'X' ; centre - 4
MOV [0EFEh + BX], 'X' ; centre - 2
MOV [0F00h + BX], 'X' ; centre +BX pour connaitre la position que le joueur a ajoute
MOV [0F02h + BX], 'X' ; centre + 2
MOV [0F04h + BX], 'X' ; centre + 4
POP DX
POP CX
POP BX
POP AX
RET
raquette ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE EFFACE RAQUETTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
dropraquette PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV BX, ES:[4] ; On recupere la position (la colonne) du centre de la raquette
; On ajoute F00h pour se trouver sur la derniere ligne
MOV [0EFCh + BX], ' ' ; centre - 4
MOV [0EFEh + BX], ' ' ; centre - 2
MOV [0F00h + BX], ' ' ; centre
MOV [0F02h + BX], ' ' ; centre + 2
MOV [0F04h + BX], ' ' ; centre + 4
POP DX
POP CX
POP BX
POP AX
RET
dropraquette ENDP
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! PROCEDURE DEPLACEMENT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
deplacement PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX, 0
MOV AX, 0
MOV AH, 6
MOV DL, 255
int 21h
CMP AL, 119
JZ vers_la_gauche
CMP AL, 120
JZ vers_la_droite
JMP fin
vers_la_gauche:
CMP B.ES:[4], 4
JLE fin
CALL dropraquette
SUB B.ES:[4], 2
JMP suite
vers_la_droite:
CMP B.ES:[4], 160
JZ fin
CALL dropraquette
ADD B.ES:[4], 2 ; ES:[4] POSITION RAQUETTE
JMP suite
suite:
CALL raquette
fin:
POP DX
POP CX
POP BX
POP AX
RET
deplacement ENDP
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|