Forum d'Entraide Informatique (FEI) 

Site d'assistance et de sécurité informatique.

Entraide pour le programmation en général (tous langages).
Règles du forum : Entraide concernant la programmation informatique en général, tous langages : recherche ou correction d'un code ou d'une fonction, aide à la réalisation d'un projet...
Pour la programmation web (HTML, CSS, PHP, MySQL...), il est conseillé de s'orienter dans le forum Webmastering.
Merci de lire et de respecter la charte générale du forum.
Avatar de l’utilisateur
par Binero
#182313
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 :
Code : Tout sélectionnerfrom 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 :
Code : Tout sélectionnerfrom 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.

Re..., Dis moi ,tu a désactivé le reste ok,as tu […]

Bonjour les membres! Juste vous faire part de la […]

Écran bleu au lancement d'un jeu

Bonjour, depuis que j'ai eu le malheur de lancer[…]

Bonjour, Je sais que le sujet date un peu mais le[…]