Aide: ZX81 fonction 'BASIC' Peek [double]
Question
Cette question a déjà une réponse ici:
- Aide: ZX81 BASIC fonction « Peek » 3 réponses
Je besoin d'un moyen de trouver si le caractère ( '<') a frappé un mur (pixel noir graphique)
-Sur un jeu ZX81.
Je suis regardé un autre jeu ... qui utilise le code
si coup d'oeil (coup d'oeil 16398 + 256 * coup d'oeil 16399) = code " graphique BlackPixel " puis ...
Ce qui semble travailler pour eux ...
Est-ce bon code?
Je ne suis pas vraiment avec les adresses et knowledgable obtenir la mémoire et d'autres choses.
S'il vous plaît aidez-moi ...
-Si vous connaissez une meilleure façon. Répondre s'il vous plaît :) -Quelqu'un mentionné « la position du curseur » ce que l'enfer est que sur un ZX81? Merci,
La solution
PEEK(PEEK 16398+256*PEEK 16399)
est un idiome qui signifie « obtenir le numéro de caractère à la position d'impression en cours ». Cela fonctionne parce que le mot de deux octets à 16398 est utilisé par le ZX81 BASIC / ROM pour stocker un pointeur vers l'emplacement de mémoire dans le bloc de données d'écran correspondant à la position d'impression.
Donc, pour faire la détection de collision, vous auriez d'abord définir:
PRINT AT X,Y;
coordonne à l'endroit où le >
est sur le point de se déplacer, puis lire
LET C= PEEK(PEEK 16398+256*PEEK 16399)
vous pouvez imprimer la >
à l'écran (le caractère précédent remplaçant dont le code est maintenant en C
) si vous voulez avant de faire le chèque:
IF C=128 THEN ...
(je devine le caractère que vous voulez est le caractère tout-noir 128, ¦.)
Oh boy, je me sens vieux.
Autres conseils
Wow le fait Retour. Je ne l'ai pas utilisé un ZX81, mais je n'écrire des jeux sur un chemin TRS-80 dans la journée.
La partie interne:
(PEEK 16398 + 256 * peek 16399)
est à peu près prend la valeur de deux emplacements de mémoire (8 bits) et la création d'un bit 16
N ° d'eux, qui est ensuite utilisé en tant que l'adresse du PEEK externe; vous pouvez réécrire cela comme:
addrToCheck = (PEEK 16398 + 256 * peek 16399)
pixelValue = peek (addrToCheck)
si pixelValue = code "graphique BlackPixel", puis ...
Je suppose que la valeur « addrToCheck » est en fait la position de caractère dans le jeu, exprimé sous forme d'adresse à l'écran. Donc, si la valeur est un mur, alors vous mettez à jour les valeurs d'adresse 16398 et 16399 avec une nouvelle position de caractère (en utilisant un « Poke », sans doute).
Hope this helps