Kommunauty
Connexion
Inscription

Projet besoin d'aide URGENNNNTT !!


Binero Messages : 1

Bonjour,

J'écris sur ce forum car j'ai un projet à rendre en binôme. Je dois programmer un Takuzu (Python sous Linux) en console mais aussi en graphique (sur une fenêtre, comme un vrai jeu). Cependant je n'y arrive vraiment pas, j'ai fais pas mal de recherche et tout ce que je trouve se sont des codes que je n'ai jamais vu en cours donc difficile de les comprendre. J'espère vraiment que quelqu'un pourra m'aider car mon binôme et moi ne savons plus quoi faire pour avancer. Voici les consignes du jeu :

Le Takuzu est un puzzle logique de type Sudoku.

L’objectif du puzzle est de remplir une grille carrée de taille paire avec des 0 et des 1 en respectant les conditions suivantes :

• chaque ligne et colonne doit contenir autant de 0 que de 1 (cette condition implique que le carré est de taille paire),

• les lignes ou colonnes identiques sont interdites,

• il ne doit pas y avoir plus de deux 0 ou 1 placés l’un à coté ou en dessous de l’autre.

Les figures 1 et 2 présentent des exemples de Takuzu.

Le projet consiste à :

1. charger un puzzle depuis un fichier,

2. permettre à l’utilisateur d’essayer de résoudre le puzzle en mode terminal : le puzzle est affiché à chaque tour et l’utilisateur doit entrer au clavier les coordonnées d’une case. Si cette case est déjà occupée, son contenu est supprimé, si elle était libre, le programme demande à l’utilisateur la valeur qu’il souhaite y stocker. Le programme doit empêcher les coups illégaux et afficher un message lorsque l’utilisateur a gagné.

3. permettre à l’utilisateur d’essayer de résoudre le puzzle en mode graphique. La grille est affichée dans une fenêtre et un clic sur un case change sa valeur de façon cyclique entre 1, 0, et vide.

4. permettre à l’uitlisateur d’annuler, un par un, les coups précédents

La structure de donnée utilisée pour manipuler le puzzle sera une liste de listes. Le confort d’utilisation est un élément important. Il est possible par exemple :

1. de remplacer en mode graphique les chiffres 0 et 1 par des jetons blancs et noirs ou des ronds et des croix, etc. ;

2. de donner lorsqu’il le demande un indice à l’utilisateur, en essayant d’appliquer une des trois règles du jeu.

J'ai fais des quelques tentatives :

- pour le mode console :


from numpy import *

def titre():
 print('         Takuzu ')


def affiche_menu() :
 print('')
 print('Table de choix : ')
 print('Choix 0 : Règle du jeu ')
 print('Choix 1 : But du jeu ')
 print('Choix 2 : Niveau Débutant ')
 print('Choix 3 : Niveau Intermédiaire ')
 print('Choix 4 : Niveau Expert ')


def choix_pris(choix) :
 if choix == 0 :
  regle_du_jeu()
 elif choix == 1 :
  but_du_jeu()
 elif choix == 2 :
  print(grille_4x4())
 elif choix == 3 :
  print(grille_6x6())
 elif choix == 4 :
  print(grille_8x8())

def regle_du_jeu() :
 print('')
 print('Voici les règles du Takuzu : ')
 print('1 - Chaque ligne et colonnes doit contenir autant de 0 que de 1,')
 print('2 - Les lignes ou colonnes identiques sont interdites,')
 print("3 - Il ne doit pas y avoir plus de deux 0 ou 1 placés l'un à coté ou en dessous de l'autre.")

def but_du_jeu() :
 print('')
 print('But du jeu :')
 print("Remplir la grille avec des 0 ou des 1 de sorte qu'il y ait autant de 0 ")
 print("que de 1 sur chaque ligne et chaque colonne, qu'il n'y ait jamais plus de ")
 print("deux mêmes chiffres côte à côte et plusieurs lignes et/ou colonnes ")
 print("completes identiques")


def grille_4x4() :
 print('')
 print('Grille de taille 4 :')
 g = array([[0,1,2,1],
            [2,2,1,2],
            [2,0,2,0],
            [1,2,2,1]])
 return g


def grille_6x6() :
 print('')
 print('Grille de taille 6 :')
 g = array([[0,1,' ',' ',1,' '],
            [' ',' ',' ',1,' ',0],
            [0,' ',0,' ',1,' '],
            [' ',1,' ',0,' ',1],
            [1,' ',' ',' ',' ',' '],
            [' ',' ',1,' ',1,' ']])
 return g

def grille_8x8() :
 print('')
 print('Grille de taille 8 :')
 g = array([[0,' ',' ',' ',0,' ',' ',1],
            [' ',' ',0,' ',' ',' ',1,' '],
            [1,' ',1,' ',0,' ',' ',' '],
            [' ',0,' ',1,' ',0,' ',1],
            [' ',' ',0,' ',0,' ',' ',0],
            [0,' ',' ',0,' ',1,0,' '],
            [' ',1,' ',' ',' ',1,' ',0],
            [1,' ',' ',1,0,' ',' ',' ']])
 return g

"""def pas_de_modif() :
 
 
 
 return 0"""

def modif(i,j,n,choix) :
 g = choix_pris(choix)
 g[i][j] = 1
 return g

def main() :
 titre()
 affiche_menu()
 print('')
 choix = int(input('Quel choix désirez vous (0-4) ? ' ))
 choix_pris(choix)
 while choix == 0 or choix == 1 :
  affiche_menu()
  print('')
  choix = int(input('Quel choix désirez vous (0-4) ? ' ))
  choix_pris(choix)
#Pour les grilles, choix des coordonnées :
 if choix == 2 :
  i = int(input('Choix de la ligne n° : '))
  j = int(input('Choix de la colonne n° : '))
  n = int(input('Y mettre 0 ou 1 ? : '))
  modif(i,j,n,choix)

 return 0

if __name__ == '__main__':
 main()

Ici on a commencer à mettre les instructions pour que l'utilisateur choisi ses options, je n'arrive pas a rien afficher a la place des "2" ou des guillemets.

et le mode graphique :


from upemtk import *
def grille(n) :
 n= 4
 if n%2== 0 :
  x = 0
  y = 0
  cpt = 1
  print((x,y))
  while cpt<= n :
   z = cpt
   w = cpt
   cpt += 1
   print((z,y),(x,w),(z,w))

def main():
 n=int(input('Taille de la grille : '))
 while n%2!=0 :
  n=int(input('Taille de la grille : '))

 cree_fenetre(1000,1000)

 cpt = 0
 while cpt <= n :
  i=980*cpt/n + 10
  ligne(10,i,990,i)
  ligne(i,10,i,990)
  cpt+=1
 attente_clic()
 ferme_fenetre()
 return 0

if __name__ == '__main__':
 main()

On a créé une fonction pour faire des grille de taille désiré mais on ne voit pas comment faire la suite.

Pour les deux modes je ne sais plus rien faire d'autres

Merci d'avance pour votre aide.

mercredi 4 janvier 2017

Homer Messages : 1806

Salut,

avant de te lancer dans du code, prend un papier, un stylo et essai, en utilisant des mots, de définir l'algorithme que tu va utiliser.

Je présume que tu as déjà vu ces notions d'algorithme.

Le but, dans un premier temps, est de "coder" ton jeu avec des mots, afin de n'avoir qu'a traduire ensuite en utilisant ton langage de programmation.

Pour t'aider un peu dans la génération des grilles, il faut que tu trouve un moyen de générer automatiquement les grilles, comme ça, a chaque partie, tu génère ta grille complètement, puis tu n'affiche que quelques chiffres permettant la résolution de la grille. Ainsi, tu saura si le chiffre saisie par l'utilisateur est correcte ou non, ce qui est un gain de confort utilisateur.

Sur quoi bloque tu principalement ?

mercredi 4 janvier 2017

ghous Messages : 41

Projet est interessant mais tres technique. Il faut consulter avec le professionnel.

lundi 11 septembre 2017

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !