Autore Topic: Muovere Un Pixel In Uno Sprite  (Letto 2317 volte)

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Muovere Un Pixel In Uno Sprite
« il: 06 Agosto 2006, 23:41:10 »
 Incuriosito dalla ottima routine di iAN CooG per plottare una scritta sugli sprite, mi sono ricordato che in passato scrissi un programmino (rigorosamente in basic) per muovere un pixel in uno sprite. Ho provato a rifarlo.

- Utilizzo il joy2 per incrementare/decrementare due varibili di posizione orizzontale/verticale
- considerato che lo sprite alla fine è una matrice di pixel 24X21 e che la posizione del mio "oggeto" puo' essere identificata al suo interno con un numero univoco, ricavo detto numero dalle coordinate con formula posizione=x+(y*24)
- capisco in quale byte dello sprite mi trovo: byte attivo=INT(posizione/8)
- trovo la posizione del pixel in quel byte: pixel attivo=posizione-((INT(posizione/8))*8)
- ora il pixel attivo puo' variare da 0 (il piu' a sinistra del byte) e 7 (quello piu' a destra); per trasformare in decimale devo prima "ribaltare", per avere lo 0 a destra e il sette a sinistra:  =ABS(pixel attivo-7)
- trasformo in decimale elevando 2 alla "posizionesima" potenza
- poko il risultato nel byte attivo
 


Codice: [Seleziona]
start tok64 pixel.prg
1 PRINT"{clear}{light gray}1 pixel in 1 sprite{black}/{gray}albman 2006{black}/{light green}use joy2"
1010 POKE 2040,13: REM punta sprite0 a 832
1020 FORt=0TO62
1030 POKE832+t,0
1040 NEXTt
1100 POKE53269,1 :REM abilita sprite 1
1110 POKE53248,100: REM posiziona sprite
1120 POKE53249,100
3000 REM lettura joy
3510 IFPEEK(56320)=126THENy=y-1:GOSUB5000
3520 IFPEEK(56320)=125THENy=y+1:GOSUB5000
3530 IFPEEK(56320)=123THENx=x-1:GOSUB5000
3540 IFPEEK(56320)=119THENx=x+1:GOSUB5000
3550 GOTO 3000
5000 IF x<0 THEN x=0
5010 IF x>23THEN x=23
5020 IF y<0 THEN y=0
5030 IFy>20 THEN y=20
5035 p=x+(y*24)
5040 v=INT((p/8))
5050 b=p-((INT(p/8))*8)
5055 o=ABS(b-7)
5058 POKE 832+n,0
5060 POKE 832+v,(2^o)
5064 n=v
5065 REM print "{clear}{down}"x,y,v,b,o
5070 RETURN
stop tok64
(bastext 1.04)


a che serve? a muovere un pixel in uno sprite!! :mattsid:

scherzi a parte questo è il meglio che sono riuscito a produrre per realizzare un "motore" grafico all'interno di uno sprite, capace di visualizzare un pixel al suo interno date le sue coordinate x e y

Ulteriori sviluppi potrebbero essere muovere piu' oggetti, e addirittura realizzare semplici giochini tipo "pong" miniaturizzati.
Naturalmente rilievi di collisione e rimbalzi andranno realizzati con il confronto delle coordinate dei vari oggetti....
Graditi insulti, commenti, migliorie e anche commiserevoli silenzi.

PS : rimuovere la rem nella riga 5065 per visualizzare il valore delle variabili in tempo reale
"If you want to become the old figure, use the power of your friendship, and fight me"

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Muovere Un Pixel In Uno Sprite
« Risposta #1 il: 21 Agosto 2006, 10:24:21 »
Mi auto-rispondo per uploadare il .prg  a beneficio dei piu' pigri :)
« Ultima modifica: 21 Gennaio 2015, 22:26:29 da eregil »
"If you want to become the old figure, use the power of your friendship, and fight me"