Pregunta

Esta pregunta ya tiene una respuesta aquí:

Necesito una manera de encontrar si el personaje ( '<') ha chocado contra un muro (píxel Negro gráfico)

-En un juego ZX81.

Estoy estado buscando en otro juego ... que utiliza código

Si peek (PEEK 16398 + 256 * peek 16399) = código " gráfico blackpixel " entonces ...

que parece funcionar para ellos ...

Es este código correcto?

No estoy muy bien informado con direcciones y conseguir la memoria y otras cosas.

Por favor, ayúdame ...

-Si usted sabe una mejor manera. Por favor conteste :) -Alguien mencionado 'posición del cursor' ¿qué diablos es que en un ZX81? Gracias,

¿Fue útil?

Solución

PEEK(PEEK 16398+256*PEEK 16399) es una expresión idiomática que significa “obtener el número de caracteres en la posición de impresión actual”. Esto funciona porque la palabra de dos bytes a 16398 es utilizado por el ZX81 BÁSICO / ROM para almacenar un puntero a la posición de memoria en el bloque de datos de la pantalla correspondiente a la posición de impresión.

Así que para hacer la detección de colisiones, que le primero tiene que establecer:

PRINT AT X,Y;

coordina a donde el > está a punto de mover, después leer

LET C= PEEK(PEEK 16398+256*PEEK 16399)

A continuación, se puede imprimir el > en pantalla (sobrescribir el carácter anterior cuyo código está ahora en C) si desea antes de hacer el registro de entrada:

IF C=128 THEN ...

(supongo que el carácter que desea es todo negro el carácter 128, ¦.)

Oh, muchacho, qué me siento viejo.

Otros consejos

Wow hace volver marcha. No he utilizado un ZX81, pero yo escribir algunos juegos en una parte posterior forma TRS-80 en el día.

La parte interna:

(PEEK 16398 + 256 * peek 16399)

está tomando más o menos el valor de dos posiciones de memoria (8 bits) y la creación de un 16 bit

número de ellos, que se utiliza a continuación como la dirección de la mirada exterior; es posible volver a escribir esto como:

addrToCheck = (PEEK 16398 + 256 * peek 16399)

pixelValue = PEEK (addrToCheck)

Si pixelValue = código "gráfico blackpixel" entonces ...

supongo que el valor 'addrToCheck' es en realidad la posición de carácter en el juego, expresado como una dirección en la pantalla. Así que si el valor no es una pared, entonces sería actualizar los valores en la dirección 16398 y 16399 con una posición nueva de caracteres (utilizando un 'empuje', sin duda).

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top