Commodore 64 > Aiuto & Domande

collisioni sprite/sprite

<< < (2/5) > >>

eregil:

--- Citazione da: input - 09 Maggio 2021, 10:33:47 ---280 x=x
281 y=y

--- Termina citazione ---

Questi sono no-op, devi salvare il valore di prima della modifica.

input:
l ho avevo provato anche questo, ma non va,  ho memorizzato le variabili x e y prima della collisione in spx ed spy . e poi li ho richiamate con la sobrutina ma non va, qualcosa mi sfugge
questo e la porzione di codice che avevo provato prima ..  avevo  provato anche un altra  opzione simile a questa , ma funziona  perfettamente soltanto in un verso, delle quattro direzioni.
 c'e qualcosa che mi sfugge che non riesco a capire cosa, comunque grazie del consiglio

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
49  spx=x              :REM posizione  x prima della collisione
50  spy=y              :REM posizione  y prima della collisione 

53 REM PUNTEGGIO
54 print "{home}",t,b      Rem per un test collisione e punteggio
55 B=peek(v+30)

59 REM CONTROLLO MOVIMENTO
69  geta$: ifa$=" " then  69
71  if a$=chr$(157) then x=x-5 :REM SINISTRA
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 
157 print x
162 if B=5 then gosub 200 :REM

165  goto 40

200 print "collisione{home}"
250 REM POSIZIONI DELLO SPRITE 0  PRIMA DELLA COLLISIONE
280 x=spx
281 y=spy
 
297  t=t+1 
300 return

0scur0:

--- Citazione da: input - 09 Maggio 2021, 12:24:34 --- c'e qualcosa che mi sfugge che non riesco a capire cosa, comunque grazie del consiglio

--- Termina citazione ---
Ok, un altro suggerimento da vecchio. :maximo:

Prendi un foglio di carta e prova ad eseguire il programma passo-passo come se tu fossi la CPU, scrivendo lo stato iniziale delle variabili e dei registri e come questo cambia dopo ogni istruzione.
Lo so, è noioso e faticoso ma per programmini così semplici si può fare ed è il miglior metodo che io conosca per imparare a pensare algoritmicamente.

Buon lavoro!

P.S.: si chiama "subroutine", né "sobrutina" né "ruotina".

eregil:

--- Citazione da: input - 09 Maggio 2021, 12:24:34 ---49  spx=x              :REM posizione  x prima della collisione
50  spy=y              :REM posizione  y prima della collisione 

--- Termina citazione ---

Ricorda che per il C64 le variabili si distinguono solo in base ai primi due caratteri: spx e spy sono entrambe la stessa variabile (la variabile sp). Queste due righe in quest'ordine hanno dunque l'effetto di sp=y.

input:
l avevo letto neanche una settimana fa,  nonostante lo sapessi,
 non ci sarei mai arrivato, perche devo fare molta pratica ed esperienza ancora.
comunque adesso gli sprite si attaccano  correttamente, ma non si spostano piu, sono come incollati, gia e qualcosa .
adesso povero a trovare la soluzione per poterli spostare . Di nuovo grazie a voi che mi sostenete

Navigazione

[0] Indice dei post

[#] Pagina successiva

[*] Pagina precedente

Vai alla versione completa