# Autres langages > Python > GUI > [Python 3.X] [PYGAME] Gestion de grille

## Zl4T_59

Bonjour, 

Actuellement en premire anne d'cole d'ingnieur en informatique j'ai pour la fin de l'anne un projet  rendre en python. 

Pour faire simple il s'agit d'un jeu de Black Box : http://fr.wikipedia.org/wiki/Black_Box_%28jeu%29 (cf. pour les rgles).

Nous avons dans la consigne l'obligation de laisser l'utilisateur choisir la taille de la grille dans laquelle il veut jouer. 

Pas de soucis jusque l (je prcise que je n'ai pour le moment rien cod car la deadline est dans un petit bout de temps).

Seulement en rflchissant je me suis dis, qui dit choix de l'utilisateur pour la taille de la grille demande par la suite au programme de crer et d'afficher lui mme cette grille.

D'un point de vue interne je n'ai pas de soucis il est assez simple de crer une liste  2 dimensions et d'en grer son contenu. 

Ce qui me pose problme c'est l'indexation des cases.

J'entends par l, comment puis je communiquer au programme (et surtout a pygame) les coordonnes d'une case, pour que l'utilisateur puisse par la suite cliquer et dclencher une action sur cette case ?

Ayant dj crer quelques jeux en pygame (Mastermind et Morpion) je sais qu'il est possible de dfinir " la main" l'emplacement d'une case pour que le programme, lorsque l'utilisateur clique  un endroit, dclenche une action.

C'est d'ailleurs ce que j'avais fait pour mes prcdents jeux sachant que pour le morpion je n'avais que 9 cases, il tait donc facile d'indexer ces cases au cas par cas via des coordonns en x et en y.

Le problme ici est, comme je l'ai indiqu dans l'intro de ce post, que je ne saurai pas  l'avance combien il y aura de cases. Je ne pourrai donc pas procder de cette manire en disant xCase1 = ... , yCase1 = ... etc.

Ma question est donc, comment puis je grer ma "grille" et les diffrents vnements se passant a l'intrieur sachant que le format de la grille sera variable ? 

J'espre que vous aurez russi  me comprendre.

Merci d'avance,

Zl4T

PS : Je pense que pour mieux saisir le sens de ma question il faut lire les rgles du jeu sur wiki.

----------


## wiztricks

Salut,

Soit une longueur L dcoupe en N cases.
Soit un x dans 0..L, le numro de la case est donn par la partie entire de x / N.

Il ne faut pas se laisser impressionner par l'ordinateur au point d'en oublier "bases" et "bon sens".

- W

----------


## Zl4T_59

Oui, calculer les coordonnes est tout  fait faisable j'en suis conscient. Le problme n'est pas de calculer les coordonnes mais d'indexer les cases pour que je puisse faire un If la case1 est clique : ... 

Sachant que pour faire cela il faut que les coordonnes de la case soient stocker dans une variable que pygame reconnait comme type rect. 

N'ayant pas la possibilit de crer des variables  travers une boucle je ne vois vraiment pas comment faire.

----------


## wiztricks

> Oui, calculer les coordonnes est tout  fait faisable j'en suis conscient. Le problme n'est pas de calculer les coordonnes mais d'indexer les cases pour que je puisse faire un If la case1 est clique : ...


D'aprs la formule prcdente,  partir de (x, y) exprims en pixels, on va trouver (i, j) "indices" de la case clique.
Ce qui conduit avoir un objet "cases" qui peut tre "dict" ou "list" de "list" pour arriver  la case (i,j) via cases[i ,j] ou cases[i][j].
note: dict et list sont des objets Python de base. Si vous n'arrivez pas encore  penser avec, prenez le temps d'apprendre car difficile de faire des choses compliques sans se faire un nud au cerveau sans eux.

exemple vite fait avec tkinter:


```

```

Ca ne fait pas grand chose sinon crer la case (i, j) correspondante au (x, y) sur lequel on a cliqu et rien si la case existe dj.
note: "cases" est juste en illustration, on peut faire la mme chose "sans".
Avec Pygame, le principe est le mme...

- W

----------


## Zl4T_59

Merci beaucoup ! Pour info je pratique python depuis presque 2 ans maintenant je matrise donc assez bien les structures de donnes en python j'avais donc pens  utiliser un dictionnaire mais je ne voyais pas comment l'utiliser en rapport avec Pygame.

Je vous remercie de m'avoir mis sur la piste ! 

Cordialement,

Zl4T

----------

