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,

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top