Commodore 64 > Aiuto & Domande
spostare un sprite in basic con il comando getA$
input:
salve ragazzi, qualcuno puo spiegarmi i tasti assegnati per lo spostamento dello sprite non funzionano: volevo solo far spostare lo sprire in direzione orizzontale grazie, questo e il listato:
10 V=53248: x=100
11 POKEV+21,1
12 POKE2040,13
20 FOR N=0 TO 62: READ Q: POKE832+N,Q: NEXT
30 pokev+0,X
40 pokev+1,X
50 geta$: IFA$="" THEN 50
55 IF A$="D" x=x+1
58 IF A$="S" x=x-1
60 GOTO 30
200 data 0,127,0,1,255,192,3,255,224,3,231,224
210 data 7,217,240,7,223,240,7,217,240,3,231,224
220 data 3,255,224,3,255,224,2,255,160,1,127,64
230 data 1,62,64,0,15,128,0,156,128,0,73,0,0,73,0
240 data 0,62,0,0,62,0,0,62,0,0,28,0 :dho:
input:
Ragazzi grazie comunque, sono riuscito a risolvere il problema , nel listato che ho postato prima avevo dimenticato di inserire i then nelle righe delle coordinate x e y , ma non per questo non funzionava.
la causa è che il comando get con gli sprite le lettere maiuscole non hanno nessun effetto, ho causalmente inserire quelle minuscole e tutto funziona, non so il perche. se qualcuno sa spiegarmelo le sarei molto grato . posto il listato funzionante
10 V=53248: x=100
11 POKEV+21,1
12 POKE2040,13
20 FOR N=0 TO 62: readQ: POKE832+n,q: NEXT
30 pokev+0,x
40 pokev+1,100
50 GETA$: IFA$="" THEN 50
52 if a$="s" then x=x-1
54 if a$="d"then x=x+1
55 poke 650,128
60 goto 30
200 data 0,127,0,1,255,192,3,255,224,3,231,224
210 data 7,217,240,7,223,240,7,217,240,3,231,224
220 data 3,255,224,3,255,224,2,255,160,1,127,64
230 data 1,62,64,0,15,128,0,156,128,0,73,0,0,73,0
240 data 0,62,0,0,62,0,0,62,0,0,28,0
0scur0:
Non li ho provati ma ad occhio entrambi i programmi dovrebbero funzionare allo scopo.
Però, vedo che nel secondo hai attivato l'autorepeat con POKE 650,128; in questa modalità, viene sparato nel keybuffer il carattere del tasto premuto finché quel tasto non viene rilasciato, mentre nel primo caso no. L'effetto a video è che nel secondo programma lo sprite si muove fino al rilascio del tasto S o D.
Nel primo programma invece, il buffer viene riempito solo alla prima pressione del tasto, per cui lo sprite si muove di un solo pixel ad ogni pressione del tasto S o D (ecco perché ti sembra che il primo programma non funzioni).
input:
hai ragione, ho riprovato è tutto ok :ciauz:
input:
ciao a tutti. eccomi di nuovo qua ragazzi, da 2 giorni che sto provando a far muovere il mio sprite oltre la posizione 256, con il ciclo riesco a farlo, ma con il controllo dei tasti, non ne vengo a capo, qualcuno puo delucidarmi, ho darmi la soluzione grazie tantissimo questo è il mio programma che non riesco a far funziona. grazie anticipatamente
10 V=53248: x=200
11 POKEV+21,1
12 POKE2040,13
20 FOR N=0 TO 62: readQ: POKE832+n,q: NEXT
30 pokev+0,x
40 pokev+1,100
50 GETA$: IFA$="" THEN 50
52 if a$="s" then x=x-1
54 if a$="d"then x=x+1
55 if X=>255 then goto 80
56 poke 650,128
58 goto 30
80 pokev+16,0
90 pokev+0,x
102 pokev+16,1
110 goto 30
130 data 0,127,0,1,255,192,3,255,224,3,231,224
140 data 7,217,240,7,223,240,7,217,240,3,231,224 :dho:
150 data 3,255,224,3,255,224,2,255,160,1,127,64
160 data 1,62,64,0,15,128,0,156,128,0,73,0,0,73,0
170 data 0,62,0,0,62,0,0,62,0,0,28,0
Navigazione
[0] Indice dei post
Vai alla versione completa