Autore Topic: spostare un sprite in basic con il comando getA$  (Letto 833 volte)

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
spostare un sprite in basic con il comando getA$
« il: 06 Marzo 2021, 16:25:36 »
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

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #1 il: 07 Marzo 2021, 00:36:57 »
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

  • Neo-iscritto
  • *
  • Post: 32
  • Gioco Preferito: -
Re:spostare un sprite in basic con il comando getA$
« Risposta #2 il: 08 Marzo 2021, 12:18:37 »
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

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #3 il: 08 Marzo 2021, 14:04:21 »
hai ragione, ho riprovato è tutto ok  :ciauz:

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #4 il: 08 Marzo 2021, 14:13:27 »
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

eregil

  • Administrator
  • Utente
  • *****
  • Post: 696
  • Gioco Preferito: Impossible Mission
Re:spostare un sprite in basic con il comando getA$
« Risposta #5 il: 08 Marzo 2021, 15:59:30 »
Hai già un thread e non cambi argomento, thread unito.

Sono sbagliati l'ordine delle istruzioni e la destinazione del goto alla linea 55, inoltre manca una POKE: segui bene il flusso di esecuzione e te ne accorgerai.
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #6 il: 08 Marzo 2021, 22:21:49 »
sono riuscito ad andare oltre i 255, cioe raggiungere il bordo destro , ma quando torno indietro  a circa 3/4 di schermo  mi da errore  illegal quantita error in 30 , ho provato di tutto di quello che so , ma non ci riesco,  :facepalm:

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #7 il: 08 Marzo 2021, 22:23:24 »
scusa ho dimenticato di inserire le modifiche
questo e il nuovo listato senza i data

1 rem INIZIALIZZAZIONE
10 V=53248: x=21         
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


45 rem GESTIONE TASIERA
46 GETA$: IFA$="" THEN 46
47 if a$="s" then x=x-5
49 if a$="d"then x=x+5
51 if X=>255 then goto 70
53  poke 650,128
55 goto 30
 
57 rem MUOVI OLTRE 255

70 pokev+16,0 :x=0
75 pokev+1,x
85 pokev+16,1
90 goto 45

0scur0

  • Neo-iscritto
  • *
  • Post: 32
  • Gioco Preferito: -
Re:spostare un sprite in basic con il comando getA$
« Risposta #8 il: 08 Marzo 2021, 23:12:54 »
Se mi posso permettere, se vuoi imparare davvero scrivi meno codice possibile e soprattutto, rifletti a fondo sul significato di ogni riga di codice che scrivi. Ad esempio, che senso ha saltare ad una riga che contiene un commento (REM)?  Ancora, perché impostare due volte di seguito un registro utente (53264)?

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #9 il: 08 Marzo 2021, 23:38:50 »
consiglio molto utile  per chi sa programmare. ma per chi non ha le idee molto chiare  non si rende conto ,    per questo chiedo aiuto  per imparare, i consiglio sono sempre bene accetti perche costruiscono .
Mentre   quanto riguarda il primo salto è stato un errore involontario,  dovevo  puntare alla riga successiva del programma .
invece Per  quando riguarda i due 53264    per quello che ho capito il primo (70 pokev+16,0)  abilita     lo spostamento dello sprite  in senso orizzontale da 256 a 320,
invece il  secondo (85 pokev+16,1)  so che  fa in modo che il disegno puo iniziare di nuovo a spostarsi  dal margine sinistro dello schermo .
 ora non so se queste informazioni li ho capito male , ho li ho impostati male.

0scur0

  • Neo-iscritto
  • *
  • Post: 32
  • Gioco Preferito: -
Re:spostare un sprite in basic con il comando getA$
« Risposta #10 il: 09 Marzo 2021, 10:01:15 »
per chi non ha le idee molto chiare  non si rende conto
Il punto è proprio "rendersi conto" di come funzionano i registri del calcolatore e di come questi interagiscono tra di loro; arrivati a quel punto, si può pensare a come utilizzarli per far fare alla macchina ciò che si vuole.
Per  quando riguarda i due 53264    per quello che ho capito il primo (70 pokev+16,0)  abilita     lo spostamento dello sprite  in senso orizzontale da 256 a 320,
invece il  secondo (85 pokev+16,1)  so che  fa in modo che il disegno puo iniziare di nuovo a spostarsi  dal margine sinistro dello schermo .
 ora non so se queste informazioni li ho capito male , ho li ho impostati male.
Non so da dove hai preso queste informazioni ma evidentemente non hai compreso come funziona quel registro; ma a parte questo, la tua risposta alla mia seconda domanda mi fa capire che devi innanzitutto acquisire la giusta mentalità.
Come fare? Non per niente, questo sito è pieno zeppo di riviste e manuali. Il mio consiglio è: se vuoi imparare davvero, usali  :)

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #11 il: 09 Marzo 2021, 10:38:51 »
- puo anche essere che non ho capito come funziona. la fonte è il manuale per l utente  pag.76
- lo so che questo sito è pieno zeppo molte cose utili,  ho imparate molto da questo sito,
 ma quello che al momento mi serve non c'e
- se ero bravo come voi non avrei chiesto aiuto, perche avrei capito da solo
- solo richiami è osservazioni che sto sbagliando, ma nessun aiuto su come si risolve il problema
- se in questo sito chiedere aiuto e come essere sottoposto ad un processo preferisco non chiedere piu nulla
grazie lo stesso , buona giornata.

eregil

  • Administrator
  • Utente
  • *****
  • Post: 696
  • Gioco Preferito: Impossible Mission
Re:spostare un sprite in basic con il comando getA$
« Risposta #12 il: 09 Marzo 2021, 11:46:34 »
Non ti offendere, ma il fatto è che a guardare il tuo codice si capisce che stai proprio sbagliando la logica di ciò che deve essere fatto, e non (soltanto) il modo di farlo. Se ogni minimo problema è occasione di una nuova domanda, "aiutarti a farlo" rischia di tradursi in "farlo al posto tuo". Se si arriva a questo punto, decisamente non va bene, è una mancanza di rispetto del tempo di chi ti aiuta, e il motivo per cui le risposte ti possono sembrare stizzite.

A un certo punto reimposti x a 0, perché? Cosa succede quando provi a spostare nuovamente lo sprite a sinistra dopo averlo fatto? Non è meglio se gestisci la "tua" variabile di dove deve stare lo sprite separatamente rispetto a come sono impostati i registri del VIC?

Quando vedi un illegal quantity, chiedi il list della riga dell'errore e fai il print delle variabili che possono essere la causa dell'illegal quantity? Magari se lo fai capisci anche da solo il problema.
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #13 il: 09 Marzo 2021, 13:35:37 »
grazie , ci provero. la mia risposta non era una polemica .

input

  • Neo-iscritto
  • *
  • Post: 35
  • Gioco Preferito: arkanoid
Re:spostare un sprite in basic con il comando getA$
« Risposta #14 il: 10 Marzo 2021, 14:21:46 »
per chi fosse interessato questo è il codice completo,   è funzionante, grazie a eregil e  OscurO

1 rem INIZIALIZZAZIONE
10 V=53248: x=21
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

45 rem GESTIONE TASIERA
46 GETA$: IFA$="" THEN 46
47 if a$="s" then x=x-5
49 if a$="d"then x=x+5
51 pokev,x AND 255: pokev+16,ABS(X>255)
53  poke 650,128
55 goto 46

56 rem DATA
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