A propos est ce qu'il y a un equivalant de if, while, ou for...

.nolist
#include "ion.inc"
#define x_raquette saferam1
#define y_raquette saferam1+1
#define x_balle saferam1+1+1
#define y_balle saferam1+1+1+1
.list
#ifdef TI83P
.org progstart-2
.db $BB,6D
#else
.org progstart
#endif
ret
jr nc,lblStart
.db "Pong",0
lblStart:
ld hl,txtStartup
bcall(_puts)
bcall(_getkey)
ld a,47
ld (x_raquette),a
ld (y_raquette),a
ld a,10
ld (x_balle),a
ld (y_balle),a
directinput:
bcall(_cleargbuf)
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
ld ix,raquette
call Ionputsprite
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
add a,8
ld ix,raquetteb
call Ionputsprite
ld b,4
ld a,(y_balle)
ld l,a
ld a,(x_balle)
ld ix,balle
call Ionputsprite
call IonFastCopy
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
cp 253
call z,droite
cp 251
call z,gauche
jp directinput
gauche:
ld a,(x_raquette)
cp 1
jp z,return
push af
ld a,(x_raquette)
inc a
ld (x_raquette),a
pop af
ret
droite:
ld a,(x_raquette)
cp 70
jp z,return
push af
ld a,(x_raquette)
dec a
ld (x_raquette),a
pop af
ret
balle:
.db %0110
.db %1011
.db %1111
.db %0110
return:
ret
raquette:
.db %01111111
.db %10000000
.db %11111111
.db %01111111
.db %00000000
.db %00000000
.db %00000000
.db %00000000
raquetteb:
.db %11111110
.db %00000001
.db %11111111
.db %11111110
.db %00000000
.db %00000000
.db %00000000
.db %00000000
txtStartup:
.db "----------------"
.db "| Pong |"
.db "----------------"
.db "| Version 0.1 |"
.db "----------------",0
.end END
.nolist
#include "ion.inc"
#define x_raquette saferam1
#define y_raquette saferam1+1
#define x_balle saferam1+1+1
#define y_balle saferam1+1+1+1
.list
#ifdef TI83P
.org progstart-2
.db $BB,6D
#else
.org progstart
#endif
ret
jr nc,lblStart
.db "Pong",0
lblStart:
ld hl,txtStartup
bcall(_puts)
bcall(_getkey)
ld a,52
ld (x_raquette),a
ld (y_raquette),a
ld a,4
ld (x_balle),a
ld (y_balle),a
directinput:
bcall(_cleargbuf)
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
ld ix,raquette
call Ionputsprite
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
add a,8
ld ix,raquetteb
call Ionputsprite
ld b,4
ld a,(y_balle)
ld l,a
ld a,(x_balle)
ld ix,balle
call Ionputsprite
call IonFastCopy
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
cp 251
call z,droite
cp 253
call z,gauche
jp directinput
gauche:
ld a,(x_raquette)
cp 1
jp z,gaucheStop
push af
ld a,(x_raquette)
dec a
ld (x_raquette),a
pop af
ret
gaucheStop:
ld a,2
ld (x_raquette),a
ret
droite:
ld a,(x_raquette)
cp 80
jp z,droiteStop
push af
ld a,(x_raquette)
inc a
ld (x_raquette),a
pop af
ret
droiteStop:
ld a,79
ld (x_raquette),a
ret
balle:
.db %0110
.db %1011
.db %1111
.db %0110
raquette:
.db %00000000
.db %00000000
.db %00000000
.db %00000000
.db %01111111
.db %10000000
.db %11111111
.db %01111111
raquetteb:
.db %00000000
.db %00000000
.db %00000000
.db %00000000
.db %11111110
.db %00000001
.db %11111111
.db %11111110
txtStartup:
.db "----------------"
.db "| Pong |"
.db "----------------"
.db "| Version 0.1 |"
.db "----------------",0
.end
END
ld a,(variable)
cp 1
jp z,label
If variable=1 goto gaucheStop
If variable>1 and variable<10 goto gaucheStop
.nolist
#include "ion.inc"
#define x_raquette saferam1
#define y_raquette saferam1+1
#define x_balle saferam1+1+1
#define y_balle saferam1+1+1+1
#define vitesse_balleX saferam1+1+1+1+1
#define vitesse_balleY saferam1+1+1+1+1+1
.list
#ifdef TI83P
.org progstart-2
.db $BB,6D
#else
.org progstart
#endif
ret
jr nc,lblStart
.db "Pong",0
lblStart:
ld hl,txtStartup
bcall(_puts)
bcall(_getkey)
ld a,52
ld (x_raquette),a
ld (y_raquette),a
ld a,4
ld (x_balle),a
ld (y_balle),a
ld a,1
ld (vitesse_balleX),a
ld (vitesse_balleY),a
directinput:
bcall(_cleargbuf)
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
ld ix,raquette
call Ionputsprite
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
add a,8
ld ix,raquetteb
call Ionputsprite
ld b,4
ld a,(y_balle)
ld l,a
ld a,(x_balle)
ld ix,balle
call Ionputsprite
call IonFastCopy
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
cp 251
call z,droite
cp 253
call z,gauche
ld a,(vitesse_balleX)
ld c,a
ld a,(x_balle)
add a,c
ld (x_balle),a
cp 1
jp z,balleDroite
cp 80
jp z,balleGauche
ld a,(vitesse_balleY)
ld c,a
ld a,(y_balle)
add a,c
ld (y_balle),a
cp 1
jp z,balleBas
cp 52
jp z,collision
jp directinput
balleGauche:
ld a,(vitesse_balleX)
neg
ld (vitesse_balleX),a
jp directinput
balleDroite:
ld a,(vitesse_balleX)
neg
ld (vitesse_balleX),a
jp directinput
balleHaut:
ld a,(vitesse_balleY)
neg
ld (vitesse_balleY),a
jp directinput
balleBas:
ld a,(vitesse_balleY)
neg
ld (vitesse_balleY),a
jp directinput
collision:
ld a,(x_balle)
ld b,a
ld a,(x_raquette)
add 16
cp b
jp nc,collision2
ret
collision2:
ld a,(x_raquette)
cp b
jp c,balleHaut
ret
gauche:
ld a,(x_raquette)
cp 1
jp z,gaucheStop
;push af
;ld a,(x_raquette)
dec a
ld (x_raquette),a
;pop af
ret
gaucheStop:
ld a,2
ld (x_raquette),a
ret
droite:
ld a,(x_raquette)
cp 80
jp z,droiteStop
;push af
;ld a,(x_raquette)
inc a
ld (x_raquette),a
;pop af
ret
droiteStop:
ld a,79
ld (x_raquette),a
ret
balle:
.db %0110
.db %1011
.db %1111
.db %0110
raquette:
.db %00000000
.db %00000000
.db %00000000
.db %00000000
.db %01111111
.db %10000000
.db %11111111
.db %01111111
raquetteb:
.db %00000000
.db %00000000
.db %00000000
.db %00000000
.db %11111110
.db %00000001
.db %11111111
.db %11111110
txtStartup:
.db "----------------"
.db "| Pong |"
.db "----------------"
.db "| Version 0.1 |"
.db "----------------",0
.end
END
.nolist
#include "ion.inc"
#define x_raquette saferam1
#define y_raquette x_raquette+1
#define x_balle y_raquette+1
#define y_balle x_balle+1
#define direction_balleX y_balle+1
#define direction_balleY direction_balleX+1
#define vitesse direction_balleY+1
#define compteur_vitesse vitesse+1
#define score compteur_vitesse+1
.list
#ifdef TI83P
.org progstart-2
.db $BB,6D
#else
.org progstart
#endif
ret
jr nc,lblStart
.db "Pong par Noufnouf",0
lblStart:
bcall(_homeup)
bcall(_clrscrnfull)
ld hl,txtStartup
bcall(_puts)
bcall(_getkey)
ld a,50
ld (x_raquette),a
ld a,52
ld (y_raquette),a
ld a,4
ld (x_balle),a
ld (y_balle),a
ld a,1
ld (direction_balleX),a
ld (direction_balleY),a
ld a,0
ld (compteur_vitesse),a
ld a,50
ld (vitesse),a
ld hl,0
ld (score),hl
directinput:
ld hl,(score)
inc hl
ld (score),hl
ld b,1
call delay
ld a,(compteur_vitesse)
cp 10
call z,vitesseAugmente
inc a
ld (compteur_vitesse),a
bcall(_cleargbuf)
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
ld ix,raquette
call Ionputsprite
ld b,8
ld a,(y_raquette)
ld l,a
ld a,(x_raquette)
add a,8
ld ix,raquetteb
call Ionputsprite
ld b,4
ld a,(y_balle)
ld l,a
ld a,(x_balle)
ld ix,balle
call Ionputsprite
call IonFastCopy
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
cp 251
call z,droite
cp 253
call z,gauche
ld a,(direction_balleX)
ld b,a
ld a,(x_balle)
add a,b
ld (x_balle),a
cp 1
jp z,balleDroite
cp 80
jp z,balleGauche
ld a,(direction_balleY)
ld b,a
ld a,(y_balle)
add a,b
ld (y_balle),a
cp 1
jp z,balleBas
cp 52
jp z,collision
jp directinput
balleGauche:
ld a,(direction_balleX)
neg
ld (direction_balleX),a
jp directinput
balleDroite:
ld a,(direction_balleX)
neg
ld (direction_balleX),a
jp directinput
balleHaut:
ld a,(direction_balleY)
neg
ld (direction_balleY),a
jp directinput
balleBas:
ld a,(direction_balleY)
neg
ld (direction_balleY),a
jp directinput
collision:
ld a,(x_raquette)
add a,24
ld b,a
ld a,(x_balle)
add a,11
cp b
jp c,collision2
jp quitter
collision2:
ld a,(x_balle)
add a,32
cp b
jp nc,balleHaut
jp quitter
gauche:
ld a,(x_raquette)
cp 1
jp z,gaucheStop
;push af
;ld a,(x_raquette)
dec a
ld (x_raquette),a
;pop af
ret
gaucheStop:
ld a,2
ld (x_raquette),a
ret
droite:
ld a,(x_raquette)
cp 80
jp z,droiteStop
;push af
;ld a,(x_raquette)
inc a
ld (x_raquette),a
;pop af
ret
droiteStop:
ld a,79
ld (x_raquette),a
ret
delay:
ld a,1
call delay2
inc b
ld a,(vitesse)
ld c,a
ld a,b
cp c
jp c,delay
ret
delay2:
inc a
push af
ld a,(vitesse)
ld c,a
pop af
cp c
jp c,delay2
ret
vitesseAugmente:
ld a,(vitesse)
cp 0
jp z,return
dec a
ld (vitesse),a
ld a,0
ld (compteur_vitesse),a
ret
quitter:
bcall(_homeup)
bcall(_clrscrnfull)
ld hl,txtStartup
bcall(_puts)
ld hl,scoreStr
bcall(_puts)
ld hl,(score)
bcall(_disphl)
quitter2:
bcall(_getkey)
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
cp 251
call z,quitter2
cp 253
call z,quitter2
ret
wait:
jp wait
return:
ret
;high: .dw 0
balle:
.db %0110
.db %1011
.db %1111
.db %0110
raquette:
.db %00000000
.db %00000000
.db %00000000
.db %00000000
.db %01111111
.db %10000000
.db %11111111
.db %01111111
raquetteb:
.db %00000000
.db %00000000
.db %00000000
.db %00000000
.db %11111110
.db %00000001
.db %11111111
.db %11111110
txtStartup:
.db "+--------------+"
.db "| Pong |"
.db "+--------------+"
.db "| Version 0.1 |"
.db "+--------------+",0
scoreStr:
.db " Score : ",0
.end
END
.
:
ld b,42 ;si on le veut compris entre 0 et 42 call ionrandom ; a est ici un nombre aléatoire entre 0 et 42

: pour effacer un sprite il suffit de l'afficher 2 fois comme ca il s'annule 
... alors l'ideal ce serait d'effacer juste une partie du graph buffer, mais je sais pas si c'est possible...