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
- Atom text editor - Télécharger - Édition & Programmation
- Text wrangler - Télécharger - Traitement de texte
- Any text searcher - Télécharger - Gestion de fichiers
- Text spinner français - Télécharger - Outils professionnels
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.