Magnifique, mon forum n'est pas mort !
Tout d'abord, j'ai pas tout compris le problème pour le retour au niveau 1.
Un bout de code m'aiderai beaucoup (reprenez celui-que j'ai écrit et corrigez-le)
Sinon, je peut pas me servir de mon logiciel pour les mails alors je vais afficher le code de mon prog ici.
ATTENTION ! CA VA PRENDRE DE LA PLACE ! :mrd:
<<< X-Tron.z80 >>>
#include "ASM.inc"
.org 9d95h
;CONFIGURATION FENETRE
B_CALL(_RunIndicOff)
B_CALL(_OP1SET0)
ld a,XMIN
B_CALL(_STOSYSTOK)
B_CALL(_OP1SET0)
ld a,YMIN
B_CALL(_STOSYSTOK)
B_CALL(_OP1SET1)
ld a,DELTAX
B_CALL(_STOSYSTOK)
B_CALL(_OP1SET1)
ld a,DELTAY
B_CALL(_STOSYSTOK)
;AFFICHAGE TITRE
B_CALL(_grbufclr)
ld hl,imgtitre
ld de,plotsscreen
ld bc,768
ldir
B_CALL(_grbufcpy)
B_CALL(_getkey)
;VALEUR DE DEPART (SAUVEGARDE POUR LES NIVEAUX)
ld hl,1
push hl
;TRANSITION (RIDEAU BLANC)
debut:
ld c,64
ld b,0
ld d,96
ld h,0
transit:
dec c
ld e,c
B_CALL(_ILine)
dec c
ld e,c
B_CALL(_ILine)
jp nz,transit
;CHARGEMENT NIVEAUX (1 et 2)
retour:
pop hl
ld a,(hl)
push hl
cp 1
call z,goimglvl1
cp 2
call z,goimglvl2
;VALEURS (a=/ b=x c=y d=ipoint/slow e=? h=direction l=?)
ld b,3
ld c,3
ld d,1
B_CALL(_ipoint)
ld h,2
;DEBUT PROGRAMME
getkey:
ld a,0ffh
out (1),a
ld a,0feh
out (1),a
in a,(1)
cp 253
jp z,gauche
cp 251
jp z,droite
cp 247
jp z,haut
cp 254
jp z,bas
ld a,0ffh
out (1),a
ld a,0fdh
out (1),a
in a,(1)
cp 191
jp z,stop
fingetkey:
ld a,h
cp 1
call z,gohaut
cp 2
call z,godroite
cp 3
call z,gobas
cp 4
call z,gogauche
;COMMANDES GRAPHIQUES
push bc
ld d,3
B_CALL(_ipoint)
pop bc
jp nz,perdu
ld d,1
B_CALL(_ipoint)
ld a,c
cp 63
jp z,gagne
ld a,b
cp 0
jp z,gagne
;RALENTISSEMENT
ld a,120
ld d,250
slow:
dec d
jp nz,slow
ld d,250
dec a
jp nz,slow
ld d,1
jp getkey
gauche:
ld h,4
jp fingetkey
droite:
ld h,2
jp fingetkey
haut:
ld h,1
jp fingetkey
bas:
ld h,3
jp fingetkey
gogauche:
dec b
ret
godroite:
inc b
ret
gohaut:
inc c
ret
gobas:
dec c
ret
;ARRET PROGRAMME
stop:
B_CALL(_clrlcdfull)
ret
;GESTION DE LA FIN (RECOMMENCE QUAND PERDU)
;(FAIT UNE TRANSITION RIDEAU ET CONTINUE QUAND GAGNE)
perdu:
jp retour
gagne:
pop hl
inc hl
push hl
jp debut
;CHARGEMENTS IMAGES (PAS IMPORTANT POUR L'ETUDE DES BUGS)
goimglvl1:
B_CALL(_grbufclr)
ld hl,imglvl1
ld de,plotsscreen
ld bc,768
ldir
B_CALL(_grbufcpy)
B_CALL(_getkey)
ret
imglvl1:
#include "imglvl1.asm"
goimglvl2:
B_CALL(_grbufclr)
ld hl,imglvl2
ld de,plotsscreen
ld bc,768
ldir
B_CALL(_grbufcpy)
B_CALL(_getkey)
ret
imglvl2:
#include "imglvl2.asm"
imgtitre:
#include "imgtitre.asm"
.end
END
<<< Fin >>>
Si vous comprenez pas tout pour la direction, c'est pas grave.
Les problèmes sont :
- Quand perdu, retour au 1er niveau même si on est au 2ème
- Quand crash dans une certaine direction, va au niveau 2 (???)
- Au niveau 2, quand crash ds une certaine direction, retour au lvl1
(+KEUBIZAR!!!)
Apparement, le prog aime pas trop mon push/pop ou mon (hl) pour la
gestion des sauvegardes.
Je tiens à préciser que sinon, tout le reste marche à la perfection.
Je n'ai mis ici que le prog principal, il n'y a pas les fichiers images ASM.
:bravo: Merci d'étudier mes problèmes !