Aiuto: la funzione 'BASE' Peek ZX81 [duplicato]
Domanda
Questa domanda ha già una risposta qui:
- Aiuto: ZX81 BASIC “Peek” funzione 3 risposte
Ho bisogno di un modo per trovare se il carattere ( '<') ha colpito un muro (pixel nero Graphic)
-Su un gioco ZX81.
Sono stato a guardare un altro gioco ... che utilizza codice
se peek (peek 16398 + 256 * peek 16399) = codice " BlackPixel grafica ", quindi ...
che sembra funzionare per loro ...
E 'questo codice corretto?
Non sono veramente ben con gli indirizzi e ottenere la memoria e roba del genere.
Please help me ...
-Se si conosce un modo migliore. Risponda per favore :) -Qualcuno citato 'posizione del cursore' cosa diavolo è che su uno ZX81? Grazie,
Soluzione
PEEK(PEEK 16398+256*PEEK 16399)
è un idioma che significa “ottenere il numero carattere nella posizione di stampa corrente”. Questo funziona perché la parola di due byte 16398 viene utilizzato dal ZX81 BASIC / ROM per memorizzare un puntatore alla posizione di memoria nel blocco dati schermo corrispondente alla posizione di stampa.
Quindi, per fare il rilevamento delle collisioni, si sarebbe prima necessario impostare:
PRINT AT X,Y;
coordina a dove il >
è in procinto di muoversi, poi lettura
LET C= PEEK(PEEK 16398+256*PEEK 16399)
Quindi è possibile stampare il >
su schermo (sovrascrivendo il carattere precedente il cui codice è ora in C
) se si desidera prima di fare il controllo:
IF C=128 THEN ...
(sto cercando di indovinare il carattere desiderato è il carattere tutto nero 128, ¦.)
Oh ragazzi, mi sento vecchio.
Altri suggerimenti
Wow fa questo di nuovo in movimento. Non ho usato uno ZX81, ma ho fatto scrivere i giochi di un modo per tornare TRS-80 nel corso della giornata.
La parte interna:
(peek 16398 + 256 * peek 16399)
è praticamente prendendo il valore di due posizioni di memoria (8 bit) e la creazione di un 16 bit
numero da loro, che viene quindi utilizzato come indirizzo del peek esterno; si potrebbe riscrivere questo come:
addrToCheck = (PEEK 16398 + 256 * peek 16399)
pixelValue = peek (addrToCheck)
se pixelValue = codice "grafico BlackPixel" allora ...
Sto indovinando che il valore 'addrToCheck' è in realtà la posizione del carattere nel gioco, espresso come un indirizzo sullo schermo. Quindi, se il valore non è un muro, allora si dovrebbe aggiornare i valori di indirizzo 16398 e 16399 con una posizione di nuovo personaggio (con un 'colpire', senza dubbio).
Spero che questo aiuti