Topic de EnormeEtronDu92 :

Quelqu'un POUR m'aider dans MON CODE pygame ?

  • 1
#code python

while True:
    pygame.time.wait(500)

    mem = 0

    for event in pygame.event.get():

        if event == pygame.QUIT:

            sys.exit
        
        if event == pygame.KEYDOWN:

            match event:
                case pygame.K_UP:
                    if mem == 0:
                        head_direction = (0,1)
                        mem = 1
                case pygame.K_DOWN:
                    if mem == 0:
                        head_direction = (0,-1)
                        mem = 1
                case pygame.K_RIGHT:
                    if mem == 0:
                        head_direction = (1,0)
                        mem = 1
                case pygame.K_LEFT:
                    if mem == 0:
                        head_direction = (-1,0)
                        mem = 1
        
    if move() == 0:

        break

print("score = ",len(snake)+1)

sys.exit

j'ai mis juste la partie ou j'ai un probleme le reste je pense pas qu'il y ai de soucis

voila j'ai un petit probleme et c'est a la partie pygame.QUIT qui fonctionne pas, quand je lance le programme et que je clique sur la croix pour quitter, rien ne se passe... :(

si quelqu'un s'y connait en pygame je voudrais bien savoir pourquoi :-)

Il ne faut pas ajouter des parenthèses sur "sys.exit()" ?

Le 13 janvier 2023 à 15:34:43 :
Il ne faut pas ajouter des parenthèses sur "sys.exit()" ?

oui peut etre mais c'est pas ça le probleme

Le 13 janvier 2023 à 15:35:49 :

Le 13 janvier 2023 à 15:34:43 :
Il ne faut pas ajouter des parenthèses sur "sys.exit()" ?

oui peut etre mais c'est pas ça le probleme

Eh bien je sais pas, bon courage https://image.noelshack.com/fichiers/2022/38/4/1663852709-golemabasourdi.png

Le 13 janvier 2023 à 15:36:36 :

Le 13 janvier 2023 à 15:35:49 :

Le 13 janvier 2023 à 15:34:43 :
Il ne faut pas ajouter des parenthèses sur "sys.exit()" ?

oui peut etre mais c'est pas ça le probleme

Eh bien je sais pas, bon courage https://image.noelshack.com/fichiers/2022/38/4/1663852709-golemabasourdi.png

merci quille je me demande pourquoi ça marche pas comme un if vivant cette partie :snif:

Tu peux essayer exit() sinon
j'ai testé toujours pareil, faut que le if fonctionne deja et c'est pas le cas :(

Il semble que le problème vienne de la ligne "sys.exit" qui ne contient pas de parenthèses. En effet, sys.exit est une fonction qui arrête le programme, mais si vous ne l'appelez pas en mettant des parenthèses, elle ne sera pas exécutée.

Il faut donc remplacer la ligne "sys.exit" par "sys.exit()" pour que la fonction soit appelée et le programme s'arrête.

Aussi, dans la ligne "if event == pygame.QUIT:", il faut ajouter "break" pour quitter de la boucle while True.

Ainsi, le code devrait ressembler à ceci:

while True:
    pygame.time.wait(500)

    mem = 0

    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        
        if event.type == pygame.KEYDOWN:
            match event:
                case pygame.K_UP:
                    if mem == 0:
                        head_direction = (0,1)
                        mem = 1
                case pygame.K_DOWN:
                    if mem == 0:
                        head_direction = (0,-1)
                        mem = 1
                case pygame.K_RIGHT:
                    if mem == 0:
                        head_direction = (1,0)
                        mem = 1
                case pygame.K_LEFT:
                    if mem == 0:
                        head_direction = (-1,0)
                        mem = 1
        
    if move() == 0:
        break

print("score = ",len(snake)+1)
Sa depend surement de ton ordi, sous mac os pygame quit buguait pour moi

Le 13 janvier 2023 à 15:39:43 :
Il semble que le problème vienne de la ligne "sys.exit" qui ne contient pas de parenthèses. En effet, sys.exit est une fonction qui arrête le programme, mais si vous ne l'appelez pas en mettant des parenthèses, elle ne sera pas exécutée.

Il faut donc remplacer la ligne "sys.exit" par "sys.exit()" pour que la fonction soit appelée et le programme s'arrête.

Aussi, dans la ligne "if event == pygame.QUIT:", il faut ajouter "break" pour quitter de la boucle while True.

Ainsi, le code devrait ressembler à ceci:

while True:
    pygame.time.wait(500)

    mem = 0

    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        
        if event.type == pygame.KEYDOWN:
            match event:
                case pygame.K_UP:
                    if mem == 0:
                        head_direction = (0,1)
                        mem = 1
                case pygame.K_DOWN:
                    if mem == 0:
                        head_direction = (0,-1)
                        mem = 1
                case pygame.K_RIGHT:
                    if mem == 0:
                        head_direction = (1,0)
                        mem = 1
                case pygame.K_LEFT:
                    if mem == 0:
                        head_direction = (-1,0)
                        mem = 1
        
    if move() == 0:
        break

print("score = ",len(snake)+1)

ça fonctionne merci :)

j'ai oublié que fallait mettre event.type au lieu de event, et j'ai mis le pygame.quit

Le 13 janvier 2023 à 15:45:33 :

Le 13 janvier 2023 à 15:39:43 :
Il semble que le problème vienne de la ligne "sys.exit" qui ne contient pas de parenthèses. En effet, sys.exit est une fonction qui arrête le programme, mais si vous ne l'appelez pas en mettant des parenthèses, elle ne sera pas exécutée.

Il faut donc remplacer la ligne "sys.exit" par "sys.exit()" pour que la fonction soit appelée et le programme s'arrête.

Aussi, dans la ligne "if event == pygame.QUIT:", il faut ajouter "break" pour quitter de la boucle while True.

Ainsi, le code devrait ressembler à ceci:

while True:
    pygame.time.wait(500)

    mem = 0

    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        
        if event.type == pygame.KEYDOWN:
            match event:
                case pygame.K_UP:
                    if mem == 0:
                        head_direction = (0,1)
                        mem = 1
                case pygame.K_DOWN:
                    if mem == 0:
                        head_direction = (0,-1)
                        mem = 1
                case pygame.K_RIGHT:
                    if mem == 0:
                        head_direction = (1,0)
                        mem = 1
                case pygame.K_LEFT:
                    if mem == 0:
                        head_direction = (-1,0)
                        mem = 1
        
    if move() == 0:
        break

print("score = ",len(snake)+1)

ça fonctionne merci :)

j'ai oublié que fallait mettre event.type au lieu de event, et j'ai mis le pygame.quit

Merci ChatGPT si ça a vraiment fonctionné.

serieux c'est une IA qui a fait le travail ? https://image.noelshack.com/fichiers/2017/30/4/1501186981-risimixbestreup.png
je dois vraiment faire du python niveau bébé pour que chatgpt puisse resoudre mes soucis https://image.noelshack.com/fichiers/2017/30/4/1501186981-risimixbestreup.png

Le 13 janvier 2023 à 15:50:13 :
serieux c'est une IA qui a fait le travail ? https://image.noelshack.com/fichiers/2017/30/4/1501186981-risimixbestreup.png
je dois vraiment faire du python niveau bébé pour que chatgpt puisse resoudre mes soucis https://image.noelshack.com/fichiers/2017/30/4/1501186981-risimixbestreup.png

non chatgpt a un lvl plutot élevé il me semble https://image.noelshack.com/fichiers/2017/39/3/1506524542-ruth-perplexev2.png

Essie d'abord pygame.quit()

Puis fais un exit(0) pas besoin du module sys

  • 1

Données du topic

Auteur
EnormeEtronDu92
Date de création
13 janvier 2023 à 15:24:09
Nb. messages archivés
18
Nb. messages JVC
18
En ligne sur JvArchive 245