Problème affichage pygame
Alexis
-
vortex -
vortex -
Bonjour, en essayant de faire un programme avec pygame, je me suis rendu compte qu'une partie de mon code ne s'affichait pas. Cela se produit lorsque je souhaite afficher un message d'erreur directement sur la fenêtre. Voici le code:
L'erreur se produit ici:
import random import pygame import pygame as pg def main(): pg.display.set_caption("Pierre Feuille Ciseaux") screen = pg.display.set_mode((640, 480)) color = pg.Color('lightskyblue3') font = pg.font.Font(None,32) input_box = pg.Rect(220, 350, 200, 40) myfont = pg.font.SysFont('Comic Sans MS', 30) textsurface = myfont.render('Some Text', False, (0, 0, 0)) active = False text = "" done = False while not done: for event in pg.event.get(): if event.type == pg.QUIT: done = True if event.type == pg.MOUSEBUTTONDOWN: #Si l'utilisateur clique sur le rectangle if input_box.collidepoint(event.pos): active = not active else: active = False if event.type == pg.KEYDOWN: if active: if event.key == pg.K_RETURN: liste = ["pierre","feuille","ciseaux"] choix = random.randint(0,2) if liste[choix] == text: print("égalité, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) elif choix == 0 and text == 'ciseaux': print("perdu, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) elif choix == 0 and text == 'feuille': print("gagné, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) elif choix == 1 and text == 'pierre': print("perdu, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) elif choix == 1 and text == 'ciseaux': print("gagné, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) elif choix == 2 and text=='pierre': print("gagné, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) elif choix == 2 and text == 'feuille': print("perdu, l'ordinateur a sélectionné: ",liste[choix], "et vous avez décidé de jouer: ", text) else: print("Tu as fais une erreur !") screen.blit(textsurface, ([https://www.commentcamarche.net/download/telecharger-34055821-20-20 20, 20])) pg.display.flip() text = '' elif event.key == pg.K_BACKSPACE: text = text[:-1] else: text += event.unicode screen.fill((140, 250, 113)) Pierre = pg.image.load("Images/Pierre.png") screen.blit(Pierre,(50, 50)) Ciseaux = pg.image.load("Images/Ciseaux.png") screen.blit(Ciseaux,(490,50)) Feuille = pg.image.load("Images/Feuille.png") screen.blit(Feuille,(270,220)) txt_surface = font.render(text, True, color) screen.blit(txt_surface, (input_box.x+5, input_box.y+5)) pg.draw.rect(screen, color, input_box, 2) pg.display.flip() #affichage de la fenêtre if __name__ == '__main__': pg.init() main() pg.quit()
L'erreur se produit ici:
else: print("Tu as fais une erreur !") screen.blit(textsurface, (20, 20)) pg.display.flip()
Configuration: Macintosh / Chrome 92.0.4515.131
A voir également:
- Pygame text
- Sms to text - Télécharger - Sauvegarde
- Text wrangler - Télécharger - Traitement de texte
- Any text searcher - Télécharger - Gestion de fichiers
- Atom text editor - Télécharger - Édition & Programmation
- Text to image canva - Accueil - Outils
6 réponses
Bonjour,
Tu as créé une interface graphique avec Pygame
Mais la commande print ne permet d'afficher du texte qu'en mode console
Il faut utiliser screen.blit en passant le texte comme argument
Est-ce que textsurface contient le message d'erreur ?
Tu as créé une interface graphique avec Pygame
Mais la commande print ne permet d'afficher du texte qu'en mode console
Il faut utiliser screen.blit en passant le texte comme argument
Est-ce que textsurface contient le message d'erreur ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait je n'ai pas Pygame, j'utilise tkinter
Mais pour être clair, ta question, c'était bien:
"pourquoi le print("Tu as fais une erreur !") n'affiche rien ?"
C'est ça ou pas ?
Mais pour être clair, ta question, c'était bien:
"pourquoi le print("Tu as fais une erreur !") n'affiche rien ?"
C'est ça ou pas ?
Non, c'était plus pourquoi "some text" ne s'affiche pas sur la fenêtre. Comment fais-tu pour utiliser tkinter alors que dans mon code j'importe pygame ?
Bonsoir,
> c'était plus pourquoi "some text" ne s'affiche pas sur la fenêtre.
C'est affiché, sauf que juste après tu fais
Il faut s'arranger à ne faire qu'un seul flip/update dans la boucle.
On ne charge pas des images dans une boucle, on le fait une fois et c'est tout.
> c'était plus pourquoi "some text" ne s'affiche pas sur la fenêtre.
C'est affiché, sauf que juste après tu fais
screen.fill((140, 250, 113)), donc pas le temps de le voir, de toute façon, ton code n'est pas très logique.
Il faut s'arranger à ne faire qu'un seul flip/update dans la boucle.
On ne charge pas des images dans une boucle, on le fait une fois et c'est tout.