Projet Minecraft - 2 - créer un quadrillage

Le but de ce chapitre est de créer et d'afficher la carte que notre personnage pourra explorer.

Chaque carreau de la carte du jeu représentera une ressource différente. Nous allons commencer avec des surfaces de terre, d'herbe, d'eau et de charbon, mais tu pourras ensuite facilement changer ces ressources, ou même ajouter les ressources que tu auras imaginées.
 

 

Voici un diagramme de ce qui nous essayons d'obtenir:

Dans le diagramme ci-dessus, la ligne du haut a un carreau d'herbe, un carreau de charbon et un carreau de terre (de gauche à droite). Pour enregistrer les ressources de la ligne du haut, nous allons utiliser une liste.

Dans notre liste, nous utilisons un 0 pour représenter la terre, 1 pour représenter l'herbe, 2 pour l'eau et 3 pour le charbon. Voici à qui notre quadrillage va ressembler dans Python:

Ce quadrillage, cependant, représente seulement la première ligne. Nous allons devoir utiliser un tableau pour enregistrer des lignes et des colonnes.

Voici comment nous allons créer un quadrillage de 5 lignes, avec 3 nombres pour chaque ligne:

C'est un quadrillage à deux dimensions, mais difficile à lire: si je veux par exemple chercher le nombre de surfaces d'eau sur mon quadrillage, il faut que je cherche d'abord à quel numéro l'eau correspond (2), puis que je cherche le nombre de 2 dans le tableau. Pour rendre tout cela plus lisible, nous allons utiliser des constantes.

Une constante sert, comme une variable, à enregistrer quelque chose, mais c'est une variable dont la valeur ne change pas pendant l'exécution du programme (c'est constant!). Nous utilisons habituellement des lettres majuscules pour représenter les constantes. Si nous utilisons les constantes suivantes:

Alors nous pouvons changer notre quadrillage comme suit:

Nettement mieux! Si nous voulons afficher ce quadrillage dans notre jeu, nous avons besoin de lier chaque ressource à une couleur particulière. Nous pouvons à nouveau utiliser des constantes pour enregistrer les couleurs d'une façon facile à lire:

Nous pouvons ensuite utiliser un dictionnaire pour lier chaque ressource à sa couleur:

Afin d'afficher notre quadrillage dans pygame, nous devons d'abord faire une boucle sur chaque ligne du quadrillage. Sur chacune des lignes, nous devons ensuite faire une boucle sur chaque élément de la ligne, et recherche la couleur de la ressource située à cet endroit. Nous devons alors afficher un carré à la bonne position sur l'écran.

Ajoutons quelques constantes, afin que notre jeu soit plus facilement paramétrable. Nous devons connaître la taille de chaque carreau de notre quadrillage, ainsi que la largeur et la hauteur du quadrillage:

Voici le code complet à ce stade du projet, que nous allons expliquer plus en détail ci-dessous: minecraft-3.py

  • Expliquons d'abord la modification sur la ligne permettant d'afficher la surface de dessin:

Au lieu d'afficher simplement une surface 300 x 300, comme nous l'avons fait dans le chapitre précédent, nous devons adapter la taille de la surface au quadrillage. Par exemple, s'il y a 3 carreaux par colonne (LARGEUR_CARTE = 3), et que la largeur de chaque carreau est de 40 pixels (TAILLE_CARREAU = 40), la largeur de la surface doit être de 3 x 40 = 120 pixels (LARGEUR_CARTE * TAILLE_CARREAU).

  • Expliquons ensuite la ligne suivante:

Le code "couleurs[quadrillage[row][column]]" nous permet d'aller chercher la couleur correcte:

  • quadrillage[row][column] va chercher la ressource correspondant à la ligne et à la colonne dans le tableau quadrillage; par exemple TERRE;
  • couleurs[quadrillage[row][column]] va chercher dans le dictionnaire couleurs la couleur correspondant à la ressource. Par exemple couleur [TERRE] = marron.

Le code (column*TAILLE_CARREAU,row*TAILLE_CARREAU,TAILLE_CARREAU,TAILLE_CARREAU) permet de positionner le carré de couleur à la bonne position, avec la bonne taille. Par exemple, le carreau de la colonne 3 et de la ligne 2 (Herbe) doit être positionné aux coordonnées suivantes:

  • x (horizontalement) = 3 x 40 (taille d'un carreau) = 120
  • y (verticalement) = 2 x 40 = 80

Au final, voici le résultat que tu dois obtenir:

 

Défis:

  • change la largeur des carreaux, pour voir comment le quadrillage est modifié.
  • Ajoute deux autres colonnes au quadrillage, pour obtenir un quadrillage 5x5
  • Ajoute deux nouvelles ressources au jeu: la roche et la lave. La roche doit être grise et la lave doit être rouge. Ajoute ces deux nouvelles ressources à ton quadrillage, afin de les afficher.