IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Un écran noir apparaît quand je lance mon script


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2023
    Messages : 1
    Par défaut Un écran noir apparaît quand je lance mon script
    Bonjour,

    Je ne comprend pas le problème avec mon script. Quand je le lance un simple écran noir apparaît, j'ai fait ce code sur PyCharm.
    Si vous avez des solution je suis vraiment preneur.

    Le but est qu'un bot fasse du morpion pour après lui faire apprendre grâce au machine Learning ou autre mais ça c'est pour après déjà il faudrait que l'interface du morpion marche.

    Voici tout le code que j'ai pour l'instant (j'utilise pygame comme bibliothèque)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    import pygame
     
    # Initialisation de Pygame
    pygame.init()
     
    # Définition des couleurs
    BLACK = (0, 0, 0)
    WHITE = (255, 255, 255)
     
    # Définition de la taille de la fenêtre
    WINDOW_SIZE = (500, 500)
     
    # Définition de la police de caractères
    FONT = pygame.font.Font(None, 50)
     
    # Création de la fenêtre
    screen = pygame.display.set_mode(WINDOW_SIZE)
    pygame.display.set_caption("Morpion")
     
    # Initialisation de la matrice du jeu
    game_matrix = [['', '', ''], ['', '', ''], ['', '', '']]
     
    # Définition du joueur courant
    player = 'X'
     
    # Définition de l'état du tour de jeu
    player_turn = True
     
    # Fonction pour dessiner la grille
    def draw_grid():
        # Dessiner les lignes verticales
        pygame.draw.line(screen, BLACK, (166, 0), (166, 500), 5)
        pygame.draw.line(screen, BLACK, (332, 0), (332, 500), 5)
     
        # Dessiner les lignes horizontales
        pygame.draw.line(screen, BLACK, (0, 166), (500, 166), 5)
        pygame.draw.line(screen, BLACK, (0, 332), (500, 332), 5)
     
    # Fonction pour dessiner une croix ou un rond
    def draw_XO(row, col):
        # Calculer les coordonnées du centre de la case
        x = col * 166 + 83
        y = row * 166 + 83
     
        # Dessiner une croix ou un rond en fonction du joueur courant
        if player == 'X':
            pygame.draw.line(screen, BLACK, (x - 50, y - 50), (x + 50, y + 50), 5)
            pygame.draw.line(screen, BLACK, (x + 50, y - 50), (x - 50, y + 50), 5)
        else:
            pygame.draw.circle(screen, BLACK, (x, y), 50, 5)
     
    # Fonction pour vérifier si le jeu est terminé
    def check_game_over():
        global running, winner
        if player_turn:
            for event in pygame.event.get():
                if event.type == pygame.MOUSEBUTTONDOWN:
                    # Récupérer la position de la souris
                    pos = pygame.mouse.get_pos()
                    row = pos[1] // 166
                    col = pos[0] // 166
     
                    # Vérifier si la case est vide
                    if game_matrix[row][col] == '':
                        # Marquer la case avec le symbole du joueur
                        game_matrix[row][col] = player
     
                        # Vérifier s'il y a un gagnant
                        if check_win():
                            winner = player
                            print(f"Le joueur {winner} a gagné !")
                            running = False
     
                        # Changer de joueur
                        player = 'O' if player == 'X' else 'X'
                        player_turn = False
     
     
    # Fonction pour vérifier s'il y a un gagnant
    def check_win():
        # Vérifier les lignes
        for row in range(3):
            if game_matrix[row][0] == game_matrix[row][1] == game_matrix[row][2] != '':
                return True
     
        # Vérifier les colonnes
        for col in range(3):
            if game_matrix[0][col] == game_matrix[1][col] == game_matrix[2][col] != '':
                return True
     
        # Vérifier les diagonales
        if game_matrix[0][0] == game_matrix[1][1] == game_matrix[2][2] != '':
            return True
        if game_matrix[0][2] == game_matrix[1][1] == game_matrix[2][0] != '':
            return True
     
        # Aucun gagnant
        return False
     
    # Boucle principale du jeu
    winner = None
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if player_turn:
                    # Récupérer la position de la souris
                    pos = pygame.mouse.get_pos()
                    row = pos[1] // 166
                    col = pos[0] // 166
     
                    # Vérifier si la case est vide
                    if game_matrix[row][col] == '':
                        # Marquer la case avec le symbole du joueur
                        game_matrix[row][col] = player
     
                        # Vérifier s'il y a un gagnant
                        if check_win():
                            winner = player
                            print(f"Le joueur {winner} a gagné !")
                            running = False
     
                        # Changer de joueur
                        player = 'O' if player == 'X' else 'X'
                        player_turn = False
     
                        # Appel de la fonction pour vérifier si le jeu est terminé
                        check_game_over()
     
                # Dessiner le symbole sur la grille
                draw_grid()
                draw_XO(row, col)
     
            # Mettre à jour l'affichage
            pygame.display.update()
     
        # Si le jeu est terminé, afficher le message de fin
        if winner:
            font = pygame.font.Font(None, 36)
            text = font.render(f"Le joueur {winner} a gagné !", True, BLACK)
            text_rect = text.get_rect(center=(screen.get_width() // 2, screen.get_height() // 2))
            screen.blit(text, text_rect)
            pygame.display.flip()
            pygame.time.delay(3000)  # Attendre 3 secondes avant de fermer la fenêtre
            running = False
     
    # Quitter Pygame
    pygame.quit()

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 829
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Plixon_ Voir le message
    Voici tout le code que j'ai pour l'instant (j'utilise pygame comme bibliothèque)
    Et tu trouves ça lisible? Surtout en Python où les indentations servent de repère des blocs de travail. Même pas tu es allé te promener dans le forum voir comment font les autres!!!

    Citation Envoyé par Plixon_ Voir le message
    Le but est qu'un bot fasse du morpion pour après lui faire apprendre grâce au machine Learning ou autre
    Pas besoin. S'il commence il prend le centre et un coin et il a gagné. Et si un coin a été pris par le joueur en réponse à sa prise du centre alors il se contente de protéger et c'est match nul (sauf si le joueur fait une faute).
    Et s'il ne commence pas alors il prend le centre si dispo sinon un coin puis pareil, protection et nul.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 718
    Par défaut
    Citation Envoyé par Plixon_ Voir le message
    Si vous avez des solution je suis vraiment preneur.
    Si vous venez ici, c'est pour améliorer vos talents de programmeur pas pour qu'on code à votre place.

    Quand on ne sait plus trop où donner de la tête, on réduit ce que fait le code (par exemple, pour voir à partir de quel moment/action plus rien ne s'affiche), on ajoute des affichages (print) pour vérifier que l'état des variables utilisées dans les branchements conditionnels est bien celui attendu.

    Relire son code pour comprendre pourquoi il ne fait pas ce qu'on attend de lui est la base de la programmation.

    Normalement, c'est lors de petits exercices qu'on s'y entraîne (moins de lignes, moins d'abstractions,... c'est plus facile de comprendre comment Python fonctionne). Il faut avoir assimilé tout ça avant de se lancer dans un petit projet (où on montre qu'on commence à maîtriser).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [PHP-JS] problème avec mon script de connexion
    Par agencep dans le forum Langage
    Réponses: 5
    Dernier message: 31/01/2008, 17h08
  2. [MySQL] Divers petits problèmes avec mon script
    Par fourniey dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/12/2007, 16h20
  3. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54
  4. Problème avec mon script
    Par Toinou0123 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 30/09/2006, 18h37
  5. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo