Jeu samegame python

Fermé
polin - 3 déc. 2014 à 16:48
 polin - 5 déc. 2014 à 14:55
Bonjour tout le monde,
Après avoir fait un DUT en statistique, je suis rentré en L3 en début d'année, et un de nos profs nous a proposé de réaliser un jeu samegame en Python avec tkinter. N'ayant jamais fait de python auparavant, j'aurais besoin d'une âme charitable pour me réaliser ce projet. Je sais que c'est un peu facile de demander à ce qu'on me fasse mes devoirs, mais j'ai passé tellement de temps dessus sans parvenir à réaliser quelque chose d'intéressant que j'aurais bien besoin d'aide.

J'ai quand même réaliser une fonction pour repérer les voisins qui me parait pas trop mal :
def neighbour(self, col, row, color):
"""Lists neighbors of the same symbol"""
Zone = []
symbol = self[row][column]
Zone.append([row,col])
i=0
while i < len(Zone):
if self[Zone[row][0]-1][Zone[row][1]] == color:
if [Zone[row][0]-1,Zone[row][1]] not in Zone:
Zone.append([Zone[row][0]-1,Zone[row][1]])
# Checks top neighbour

if self[Zone[row][0]+1][Zone[row][1]] == color:
if [Zone[row][0]+1,Zone[row][1]] not in Zone:
Zone.append([Zone[row][0]+1,Zone[row][1]])
# Checks bottom neighbour

if self[Zone[row][0]][Zone[row][1]-1] == color:
if [Zone[row][0],Zone[row][1]-1] not in Zone:
Zone.append([Zone[row][0],Zone[row][1]-1])
# Checks left neighbour

if self[Zone[row][0]][Zone[row][1]+1] == color:
if [Zone[row][0],Zone[row][1]+1] not in Zone:
Zone.append([Zone[row][0],Zone[row][1]+1])
# Checks right neighbour
i += 1
return Zone



Donc si quelqu'un pouvait me venir en aide, je le remercie par avance.

A voir également:

6 réponses

Bertrand_Labevue Messages postés 18 Date d'inscription mardi 27 mai 2014 Statut Membre Dernière intervention 9 mars 2015
4 déc. 2014 à 13:36
Bonjour,

peux-tu expliquer les règles de ton jeu ?

Mais déjà au premier coup d'oeil, la structure de ta boucle while i < len(Zone) me parait un peu bizarre. Il me parait plus pythonesque d'écrire à la place:

for z in Zone:

(en plus sans while c'est déjà moins riqué ;) )
0
Bonjour Bertrand,
déja, je te remerci de ta réponse.
Voici le sujet du jeu :

Ecrire un programme samegame qui implémente le jeu classique du même nom. Avant de commencer à jouer, l'utilisateur doit spécifier les paramètres du jeu, c'est-à-dire la taille de la grille, ainsi que le nombre de couleurs utilisées pour les cases. La grille initiale peut être créée soit entièrement au hasard (en choisissant une couleur aléatoire pour chaque case, avec le risque d'obtenir certaines configuration où il sera impossible de gagner), soit en assurant qu'il existe effectivement une solution pour la configuration proposée. Une fois la grille créée, se met en place une boucle d'interaction dans laquelle le joueur va sélectionner une case à chaque tour, pour tenter d'éliminer l'ensemble des couleurs de la grille. La fin du jeu doit être détectée par le programme: soit lorsque la grille a été entièrement vidée, soit lorsqu'il n'y a plus de coup jouable.

Exemple d'exécution :
================================================================================
SAMEGAME
Note : enter an empty line to stop the interaction loop
================================================================================
<> Enter game configuration : size=9x4 colors=3
A B C D E F G H I
+---+---+---+---+---+---+---+---+---+
1 | X | Y | Z | Z | Y | Y | X | Z | Y |
+---+---+---+---+---+---+---+---+---+
2 | Z | Z | Y | X | X | Y | X | Y | Y |
+---+---+---+---+---+---+---+---+---+
3 | Z | Y | Y | Y | X | Y | Y | Z | Z |
+---+---+---+---+---+---+---+---+---+
4 | X | Z | X | X | Y | X | Z | X | X |
+---+---+---+---+---+---+---+---+---+
<> Enter cell : C1
A B C D E F G H I
+---+---+---+---+---+---+---+---+---+
1 | X | Y | | | Y | Y | X | Z | Y |
+---+---+---+---+---+---+---+---+---+
2 | Z | Z | Y | X | X | Y | X | Y | Y |
+---+---+---+---+---+---+---+---+---+
3 | Z | Y | Y | Y | X | Y | Y | Z | Z |
+---+---+---+---+---+---+---+---+---+
4 | X | Z | X | X | Y | X | Z | X | X |
+---+---+---+---+---+---+---+---+---+
<> Enter cell :


Voila, et encore merci de prendre de ton temps pour me répondre.
0
Bertrand_Labevue Messages postés 18 Date d'inscription mardi 27 mai 2014 Statut Membre Dernière intervention 9 mars 2015
4 déc. 2014 à 15:16
ok. as-tu des questions plus précises sur la manière de t'y prendre ? Ton souci est plus de modéliser ça ou certains aspects du code te laissent perplexes ?
0
En fait, le problème c'est que notre prof de programmation ne nous a jamais fait coder nous même, il nous présentait juste des programmes que lui avait réaliser. Du coup, je n'arrive pas à comprendre Python, et je ne vois pas comment je peux réussir à supprimer certaines cases juste en sélectionnant ses coordonnées.
Je ne sais même pas comment créer une matrice composée de valeurs aléatoires...
Je ne suis donc pas rendu au bout de ce projet...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bertrand_Labevue Messages postés 18 Date d'inscription mardi 27 mai 2014 Statut Membre Dernière intervention 9 mars 2015
5 déc. 2014 à 09:40
Bon. 1ere chose à faire: trouve toi un bon tutoriel (https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python par exemple)

Oublie quelques heures ton projet et concentre-toi là dessus. Va au moins jusqu'au chapitre sur l'objet.

Une fois que tu auras fait tes games, reviens là-dessus et ça te paraitra déjà moins compliqué :)

A mon avis, il va te falloir plusieurs objets séparés:
_la grille
_l'info contenue dans tes cases (qui se manipule indépendamment de la grille)

En tapant les bons mots-clés sur le net par la suite, tu trouveras les fonctions dont tu as besoin pour réaliser telle ou telle chose (une matrice, la remplir aléatoirement, la parcourir et calculer les couleurs entourant chaque case...)

Mais encore une fois, commence par les gammes, décompose au max ce que tu dois faire en opérations simples et sépare ta grille des "couleurs" :)
0
Ok, merci, je vais essayer avec ce tuto, en espérant réussir à faire quelque chose dans la semaine ;)
En tout cas, merci beaucoup d'avoir pris du temps pour me répondre.
0