Labyrinthes

Étape 1 : Création d'une grille

Les deux fonctions principales de Processing

La fonction setup()

Permet d'initialiser le programme, comme la fenêtre d'affichage

La fonction draw()

Permet d'afficher la fenêtre, cette fonction s'exécute par défaut 60 fois par seconde

À faire : Écrire et exécuter le code suivant

Ce code affiche une fenêtre de pixels avec un fond gris foncé.

1
def setup():
2
  size(600,400)
3
  
4
def draw():
5
  background(51)
6

MéthodeLa grille

On va créer une grille de dimensions à partir de cases.

  • Chaque case est repérée par des coordonnées (abscisse : n° de colonne ; ordonnée : n° de ligne).

    (pour que l'origine et les coordonnées correspondent à l'environnement Processing)

  • Chaque case possède un indice (un numéro).

  • Chaque case possède 4 murs.

  • Chaque case est de même dimension ( ),

  • On dispose d'une formule pour passer des coordonnées à l'indice de la case.

Voici un exemple de grille

Ces cases seront stockées dans une liste grid, ainsi grid[17] correspondra à la case de coordonnées

On crée une classe Cell (pour nos cases )

On crée une classe dans un nouvel onglet de Processing.

(cela crée un fichier cell.py dans le même dossier que maze_generator)

1
# coding=utf-8 (nécessaire dans Processing)
2
class Cell:
3
4
    def __init__(self,j,i,w=30):
5
        self.i=i
6
        self.j=j
7
        self.w=w
8
        self.walls=[True,True,True,True]
9
10
        
11
    def highlight(self): 
12
        '''
13
14
        '''
15
        x=self.i*self.w
16
        y=self.j*self.w
17
        w=self.w
18
        noStroke()
19
        fill(0,0,255,100)
20
        rect(x,y,w,w)
21
        
22
    def show(self):
23
        '''
24
25
        '''
26
        x=self.i*self.w
27
        y=self.j*self.w
28
        w=self.w
29
        stroke(255)
30
        if self.walls[0]:
31
            line(x,y,x+w,y)
32
        if self.walls[1]:
33
            line(x+w,y,x+w,y+w)
34
        if self.walls[2]:
35
            line(x+w,y+w,x,y+w)
36
        if self.walls[3]:
37
            line(x,y+w,x,y)
38
        

Puis on crée la grille dans le setup() en on fait afficher le tout dans le draw()

1
from cell import Cell
2
3
w=40
4
grid=[]
5
def setup():
6
    '''
7
    initialisation
8
    '''
9
    size(610,410)
10
    global cols,rows # déclarées comme globales
11
    cols=width//w
12
    rows=height//w
13
    # création du tableau
14
    for j in range(rows):
15
        for i in range(cols):
16
            cell=Cell(j,i,w)
17
            grid.append(cell)
18
  
19
def draw():
20
  background(51)
21
  for i in range(len(grid)):
22
        grid[i].show()
23
  grid[26].highlight()

À faire : Écrire ce code, vous devez obtenir une grille avec une case en bleu.

Expliquer pourquoi cette case est en bleu, vous commenterez les méthodes de la classe Cell

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)