Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / Problème d'affichage de chiffres jeu squaro Python

Problème d'affichage de chiffres jeu squaro Python

Remonter à Forum général Python

Problème d'affichage de chiffres jeu squaro Python

Envoyé par chanane le 16 Mars 2014 à 17:38

Bonjour à tous !

Je suis en Terminale S et je suis en option ISN. Depuis le début de l'année scolaire je développe une application avec le langage de programmation Python, il s'agit du jeu "Squaro". Depuis le début de l'année j'ai bien avancé. En effet, pour l'instant j'ai crée une fenêtre graphique qui ressemble à ceci :

Pour le moment j'ai réussi à afficher les chiffres, les cercles et les carrés. Mais le problème c'est que je génère les chiffres (compris entre 0 et 4) de manière aléatoire, mais avec cette méthode ma grille n'est pas faisable, c'est-à-dire qu'il est impossible de gagner mon jeu. 
J'ai donc essayer une autre méthode que voici : (voir "squaro image")



#Je crée une matrice "circle". Il s'agit de la matrice qui représente les 36 cercles de ma fenêtre graphique. Un cercle séléctionné vaut 1, et un cercle non séléctionné vaut 0 :

global circle

circle = [[random.randrange(0,1) for i in range(0,6)] for j in range(0,6)]


#Lorsque on clique sur le cercle en haut gauche : 

circle[0][0] = 1


#Je crée une matrice "chiffre". Il s'agit de la matrice qui représente les 25 chiffres (compris entre 0 et 4) à l'intérieur des cases :

chiffre = [[0 for i in range(0, 5)] for j in range(0, 5)]


#Affichage des 25 chiffres :

xLabel1 = 50
yLabel1 = 50
for i in range (0,5):

for j in range(0,5):

chiffre[i][j] = circle[i][j] + circle[i][j+1]+circle[i+1][j]+circle[i+1][j+1]
label = policeDeTexte.render(str(chiffre[i][j]), True, (0, 0, 0))
fenetre.blit(label, (xLabel1, yLabel1))

Mais avec cette méthode il n'y a que des zéros qui s'affichent, et donc la grille n'est pas jouable. J'espère que quelqu'un va pouvoir m'aider.

Merci d'avance de votre aide 

Pièces jointes

Re: Problème d'affichage de chiffres jeu squaro Python

Envoyé par jacko le 17 Mars 2014 à 14:00

Bonjour,

Je ne comprends pas tout à votre programme, mais une chose est sûre :

randrange(0,1) donne toujours 0 : entiers aléatoires entre 0 inclus et 1 exclus.

Donc l'instruction :

circle = [[random.randrange(0,1) for i in range(0,6)] for j in range(0,6)]

remplit votre matrice de 0.

De là, vient peut-être que seuls des zéros soient affichés ensuite.

Si vous voulez des 0 ou des 1 aléatoires, il faut : randrange(0,2), car la borne sup est exclue.

NB : dans tous les "range", il est inutile de donner la valeur initiale si elle vaut 0. Donc randrange(0,2) s'écrit plus simplement randrange(2), de même que range(0,6) s'écrit range(6).


 

 

Rendu par Ploneboard