Ce blog examinera comment créer un jeu appelé sudoku en python. Ce message n’est pas censé être l’alpha et l’oméga des jeux de sudoku, mais il devrait être un bon point de départ pour tous ceux qui recherchent un nouveau projet à construire et vous pouvez également l’utiliser dans votre CV. Vous pouvez également utiliser le jeu Sudoku dans le code source Python pour le mettre à jour et le rendre pour 10×10, 12×12, etc.

Nous allons construire un jeu de sudoku en utilisant Python et PyGame. Il aura une interface graphique de base qui chargera des puzzles préchargés à partir d’une API, puis l’utilisateur pourra remplir les lignes et les colonnes en appuyant sur les blocs.

Qu’est-ce qu’un jeu de sudoku ?

Sudoku est un jeu basé sur la logique et le but est de remplir des nombres dans une grille 9×9. Chaque ligne doit contenir les chiffres de 1 à 9. Et chaque colonne et sous-case de la grille doit contenir le nombre de fois que le chiffre 1 apparaît égal au nombre de fois que 9 apparaît.

Ce que nous devons faire pour construire un sudoku en Python

  1. Installez la bibliothèque pygame.
  2. Création d’un cadre de fenêtre pour le jeu.
  3. Ajout de la grille 9×9 pour les nombres.
  4. Mettre les numéros de départ des grilles de jeu à l’aide de l’API.
  5. Nous allons ajouter une fonctionnalité d’entrée qui est utilisée pour saisir les chiffres dans un espace vide.

Avant de commencer la programmation, installons une bibliothèque appelée Pygame pour Python. À l’aide de votre terminal / invite de commande, entrez la commande suivante. Cela téléchargera et installera le module Pygame, que nous utiliserons tout au long de notre projet.

pip3 install pygame

Cette commande fonctionnera dans tous les systèmes d’exploitation (Windows, Linux et Mac)

Commençons maintenant la programmation :

# importing the pygame
import pygame
# importing request library
import requests

# setting up the width and the background color of the window
WIDTH = 550
background_color = (38, 38, 38)
original_grid_element_color = (255, 255, 255)
buffer = 5

Dans cette section du code, nous avons importé la bibliothèque pygame, la bibliothèque de requêtes (la bibliothèque de requêtes utilisée en python pour obtenir et publier des appels) et nous avons également défini la taille de la couleur d’arrière-plan du cadre de la fenêtre et les couleurs de la grille.

#adding API in our sudoku game
response = requests.get("https://sugoku.herokuapp.com/board?difficulty=easy")
grid = response.json()['board']
grid_original = [[grid[x][y] for y in range(len(grid[0]))] for x in range(len(grid))]

Ici, dans cette section, nous allons utiliser une API et récupérer les numéros de départ dans la grille et pour cela, nous avons besoin de l’API sudoku car nous ne pouvons utiliser aucun nombre aléatoire, nous devons avoir un ensemble de nombres approprié pour l’utilisateur peut résoudre.

#adding the functionality that can add the number on user bases
def insert(win, position):
    i,j = position[1], position[0]
    #adding the font and its size
    myfont = pygame.font.SysFont('Comic Sans MS', 35)
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return
            if event.type == pygame.KEYDOWN:
                   
                if(grid_original[i-1][j-1] != 0):
                    return
                if(event.key == 48): #checking with 0
                    grid[i-1][j-1] = event.key - 48
                    pygame.draw.rect(win, background_color, (position[0]*50 + buffer, position[1]*50+ buffer,50 -2*buffer , 50 - 2*buffer))
                    pygame.display.update()
                    return
                if(0 < event.key - 48 <10):  #We are checking for valid input
                    pygame.draw.rect(win, background_color, (position[0]*50 + buffer, position[1]*50+ buffer,50 -2*buffer , 50 - 2*buffer))
                    value = myfont.render(str(event.key-48), True, (179, 179, 179))
                    win.blit(value, (position[0]*50 +15, position[1]*50))
                    grid[i-1][j-1] = event.key - 48
                    pygame.display.update()
                    return
                return

Dans cette section du code, nous avons ajouté la fonctionnalité du jeu de sudoku.

  • Ajout de la fonctionnalité permettant aux utilisateurs d’ajouter des nombres dans des espaces noirs pour terminer le jeu.
  • L’utilisateur ne doit pas pouvoir modifier le numéro d’origine généré par l’API.
  • Les utilisateurs doivent pouvoir modifier les numéros ajoutés par l’utilisateur, car on peut remarquer des erreurs et souhaiter les corriger.
  • L’utilisateur doit pouvoir ajouter n’importe quel nombre dans les espaces vides.

Et nous avons également ajouté le style et la taille des polices pour le chiffre

#initializing pygame
def main():   
    pygame.init()
    win = pygame.display.set_mode((WIDTH, WIDTH)) # creating the window
    pygame.display.set_caption("Sudoku")#giving caption
    win.fill(background_color) # filling the window with background color
    myfont = pygame.font.SysFont('Comic Sans MS', 35)  #adding the font and its size

Dans cette section du code, nous initialisons la bibliothèque pygame et créons le cadre de la fenêtre, lui donnons une légende et ajoutons la couleur d’arrière-plan dans le cadre de la fenêtre.

# creating grid
    for i in range(0,10):
        if(i%3 == 0):
            #drwaing the block line (vertical)
            pygame.draw.line(win, (255, 255, 255), (50 + 50*i, 50), (50 + 50*i ,500 ), 4 )
            #(Horizontal)
            pygame.draw.line(win, (255, 255, 255), (50, 50 + 50*i), (500, 50 + 50*i), 4 )

        #drwaing vertical line
        pygame.draw.line(win, (166, 166, 166), (50 + 50*i, 50), (50 + 50*i ,500 ), 2 )
        #drwaing horizental line
        pygame.draw.line(win, (166, 166, 166), (50, 50 + 50*i), (500, 50 + 50*i), 2 )
    pygame.display.update()
   
    for i in range(0, len(grid[0])):
        for j in range(0, len(grid[0])):
            if(0<grid[i][j]<10):
                value = myfont.render(str(grid[i][j]), True, original_grid_element_color)
                win.blit(value, ((j+1)*50 + 15, (i+1)*50 ))
    pygame.display.update()

Dans cette section, nous avons ajouté la grille 9×9 définissant l’épaisseur de la ligne de taille de ligne, et également ajouté les lignes en gras pour les blocs de sudoku.

#adding the function that if we press the quit key then the pygame window will close.   
    while True:
        for event in pygame.event.get():
            if event.type == pygame.MOUSEBUTTONUP and event.button == 1:
                pos = pygame.mouse.get_pos()
                insert(win, (pos[0]//50, pos[1]//50))
            if event.type == pygame.QUIT:
                pygame.quit()
                return
 
main()

Et enfin, nous ajoutons la fonction que si nous appuyons sur la touche Quitter, la fenêtre de pygame se fermera.

Sortir:

Une fois que vous avez terminé toutes les étapes nécessaires pour créer votre jeu de Sudoku, il ressemblera à l’image ci-dessus et aura toutes les fonctionnalités que nous avons ajoutées au cours de ce processus. Les utilisateurs ne peuvent pas modifier les chiffres qui ont été placés à l’origine dans leurs emplacements. Les utilisateurs peuvent saisir un nouveau numéro dans un espace vide en cliquant sur l’espace et en appuyant sur n’importe quel chiffre de 0 à 9 sur leur clavier. Les utilisateurs ne peuvent modifier que le chiffre qu’ils ont eux-mêmes ajouté.

Derniers mots

Sudoku, un jeu ou un puzzle à un joueur. Cela commence par une grille 9×9 composée de cellules, certaines vides et d’autres qui ont déjà un nombre compris entre 1 et 9. Les 81 cellules peuvent être divisées en neuf cases de 3×3. Lorsque chaque case, colonne et ligne contient exactement le même nombre qu’auparavant, le puzzle est terminé. Nous avons partagé le code source complet du jeu Sudoku en Python que vous pouvez utiliser dans vos projets.

Et dans cet article, nous avons expliqué comment vous pouvez créer ce jeu. Nous avons couvert tout ce que vous devez savoir sur la création d’un jeu de sudoku en python. Nous avons passé en revue la logique de base du jeu et la façon de commencer, ainsi que différentes façons de commencer. De l’installation à la création proprement dite. Inutile de dire que vous possédez maintenant les compétences nécessaires pour créer votre propre jeu de sudoku en Python ! Bien qu’il y ait toujours plus à apprendre, il est bon d’avoir une compréhension plus approfondie de ce qui se passe dans la création de jeux sympas. Nous espérons que vous avez apprécié ce tutoriel, si vous avez des questions ou des suggestions, n’hésitez pas à laisser un commentaire ci-dessous. Merci beaucoup d’avoir lu !

Voici quelques tutoriels utiles que vous pouvez lire :