buonasera ragazzi, ho quasi finito di creare un gioco in basic stile pac man, ma mi sono arenato sulle collisioni: so che per abilitare sprite/sprite la lecazione e pokev+30 mentre sprite/sfondo è pokev+31 .
in poche parole, con pokev+30 abilito la collisione dello sprite 0 e con peekl(v+30) ne leggo il suo contenuto , e dopo le faccio fare le azione a mio piacimento tramite delle condizioni.
Il mio problema è , perche quando creo con lo sprite 0 (valore 1) una collissione con lo sprite 2 (valore 4) , totale valore 5 , lo sprite 0 continuare ad attraversarlo senza fermarsi. invece vorrei che quando si verifica la collisione, lo sprite rimanesse fermonella stessa posizione prima della collisione , come se avesse un muro davanti. ma questo non succede, non capisco dove sto sbagliando.
questo è un piccolo listato di esempio grazie
2 x=100 : Y=139 : XX=80: YY=100:t=0 :REM Coordinate posizione iniziale sprite 0 e 2
3 poke650,128 :REM ripetizione automatica dei tasti
5 print chr$(147) :REM cancella lo schescrmo
10 V=53248 :REM inizio registro video
11 POKEV+21,5 :REM abilita lo sprite 0 e 2
12 poke2040,192: poke2042,193: REM Variabile inizio puntatore forma dal 192 e 193 blocco
13 FOR N =12288 to 12350 :READQ: POKEN, Q: NEXT :REM legge dati sprite 0
15 FOR N =12416 to 12478 :READQ: POKEN, Q: NEXT :REM legge dati sprite 2
17 print chr$(147)
19 pokev+30,0 :REM abilita collisione sprite 0
40 POKEV+0,x :REM coordinate x sprite 0
42 POKEV+1,y :REM coordinate Y sprite 0
44 POKEV+4,xx :REM coordinate Y sprite 2
46 POKEV+5,yy :REM coordinate Y sprite 2
47 REM PUNTEGGIO
48 print "{home}",t
59 REM CONTROLLO MOVIMENTO
69 geta$: ifa$=" " then 69
70 if a$=chr$(157) then x=x-5 :REM SINISTRA(5 = velocita di spostamento)
80 if a$=CHR$(29 ) then x=x+5 :REM DESTA IDEM
86 if a$=chr$(17) then y=y+5 :REM GIU IDEM
95 if a$=CHR$(145) then y=Y-5 :REM SU IDEM
150 REM conserva il valore letto in B
155 B=peek(v+30)
158 REM B assume il valore di 5 se collidono gli sprite 0 e 2
159 REM (sprite 0=1, sprite 2=4)tot=5
160 if peek (v+30) = 5 then gosub 200
165 goto 40
200 print "collisione{home}"
250 REM POSIZIONI DEI DUE SPRITE PRIMA DELLA COLLISIONE
270 x=x-5
280 x=x-5
286 y=y-5
295 y=Y-5
296 REM PUNTEGGIO
297 t=t+1
310 return