| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

La matrice sur z80

Page history last edited by PBworks 16 years, 5 months ago

La matrice et sa representation graphique

 

A) Basic pur

 

En Basic, les matrices se trouvent écrites sous la forme [x], ou x est la lettre de la matrice (de A à J)

 

I) Ecran principal

 

1) Theorie

 

La matrice la plus simple d'utilisation est bien entendu celle qui gere des graphismes ASCII, car les elements qui la composent se trouvent aux memes coordonnees que les caracteres a l'ecran. La matrice definit ce qui est a l'ecran pour votre programme. Le systeme de base le plus souvent utilise est simplissime: 0 dans la matrice, et il n'y a rien aux memes coordonnees sur l'ecran; 1 dans la matrice, et quelque chose est affiche a l'ecran a ces coordonnees.

Prenons par exemple la piece d'un RPG, et admettons qu'un mur soit represente par une croix (X) et un monstre par un 'M'.

L'ecran et la matrice seront alors comme ceci:

 

<image 1>

 

Au niveau des '0' dans la matrice, le personnage pourra se deplacer, mais il sera bloque au niveau des '1'. Le monstre et les murs sont tous deux des '1': le personnage ne pourra dans pas les recouvrir a l'ecran.

Comme cela a deja ete precise, les coordonnees a l'ecran sont les memes que dans la matrice: en (2;1) dans la matrice se trouve un '1', et en (2;1) de l'ecran se trouve un mur. Un simple test de la valeur matricielle a ces coordonnees permettra de connaitre ce qui est affiche. Bien entendu, vous ne pourrez pas vous contenter de '1' et de '0' dans votre matrice. Si vous desirez que l'on puisse combattre le monstre, sa valeur sera differente de celle du mur, par exemple '2'. Mais pour plus de facilite, choisissez une valeur 'bloquante' ou de 'passage'.

    -Toujours avec l'exemple du RPG, on decide que le '1' est bloquant. Ainsi, on teste la matrice pour savoir si le personnage peut avancer: si a ces coordonnees la matrice vaut '1', il ne pourra pas. Si elle vaut '0', ou toute autre valeur differente de '1', il pourra. De cette maniere, on attribue la valeur '3' aux coordonnees de la matrice correspondant a l'emplacement d'une flaque a l'ecran. Le personnage pourra passer dessus, car elle est differente de '1', mais si on a besoin de savoir qu'il y a une flaque a l'ecran, il suffira de tester la matrice.

    -Si au contraire, on decide que le '0' est la valeur de 'passage', alors il suffira de tester la matrice pour connaitre la valeur de ce qui est affiche a l'ecran: si c'est '0', on passe, pour toute autre valeur, on reste sur place.

Pour un programme qui utilise une matrice peu complexe, il vaut mieux utiliser la valeur 'de passage' qui est plus simple d'utilisation. Mais pour un programme utilisant une matrice plus compliquee, le choix d'une valeur 'bloquante' s'impose, car elle offre plus de possibilites au programmeur.

 

2) Pratique

 

<image 2>

 

Seulement deux valeurs dans la matrice: '1' est bloquant, '0' est de passage. Les X sont des murs, M est un monstre.

Voici maintenant le programme permettant le deplacement du personnage:

 

: 2->A

: 2->B

//A et B seront les coordonnees du perso

: Output(A,B,"0

//affichage du perso

: Repeat G=45

//debut de la boucle principale. Si CLEAR est presse, fin du programme

: Repeat G

: Getkey->G

: End

// On attend l'appui d'une touche

: Output (A,B,"_

// On efface le perso (c'est un espace)

: A->D

: B->E

// On sauve ses coordonnees

: D+(G=34)-(G=25->D

: E+(G=26)-(G=24->E

// Deplacement des coordonnees

: If not([A](D,E

: Then

: D->A

: E->B

: End

//si la matrice renvoie 0 aux nouvelles coordonnees on les garde, sinon on revient aux anciennes

: Output(A,B,"0

//on reaffiche le perso

: End

// Fin de la boucle principale et du programme

 

<image 3>

 

Comments (0)

You don't have permission to comment on this page.