Score qui ne s'affiche pas !
Résolu/Fermé
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
-
Modifié le 23 août 2021 à 17:29
Alexouz Messages postés 84 Date d'inscription samedi 28 novembre 2020 Statut Membre Dernière intervention 17 août 2022 - 24 août 2021 à 21:04
Alexouz Messages postés 84 Date d'inscription samedi 28 novembre 2020 Statut Membre Dernière intervention 17 août 2022 - 24 août 2021 à 21:04
5 réponses
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 23 août 2021 à 17:34
Modifié le 23 août 2021 à 17:34
Bonjour,
"mon score s'affiche pas mais par contre il affiche dans le terminal."
tu veux dire que tu as une interface graphique et que le score ne s'y affiche pas ?
normal: print, c'est pour afficher sur le terminal ...
"mon score s'affiche pas mais par contre il affiche dans le terminal."
tu veux dire que tu as une interface graphique et que le score ne s'y affiche pas ?
normal: print, c'est pour afficher sur le terminal ...
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
23 août 2021 à 17:36
23 août 2021 à 17:36
Oui print c'est fait pour ça mais je l'ai fais pour voir si le score marche mais par contre il n'affiche pas dans le jeu
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
>
vortex
23 août 2021 à 17:52
23 août 2021 à 17:52
Je l'ai fais mais rien
self.screen.blit(self.Score_J1, [200, 10])
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
23 août 2021 à 17:49
23 août 2021 à 17:49
Je ne vois pas l'instruction dans ton code qui permet d'afficher dans le jeu .....
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
23 août 2021 à 17:54
23 août 2021 à 17:54
self.screen.blit(self.Score_J1, [200, 10])
mais ça n'affiche rien malheureusement
vortex
>
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
23 août 2021 à 18:03
23 août 2021 à 18:03
Soit tu ne fais pas ton update/flip après le blit de ton score, soit tu affiches quelque chose par dessus ton score.
Et si ce n'est pas ça, il faut montrer la partie de ton code où cela se passe.
Et si ce n'est pas ça, il faut montrer la partie de ton code où cela se passe.
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
>
vortex
23 août 2021 à 18:14
23 août 2021 à 18:14
colorbg = (50, 50, 50) self.screen.fill(colorbg) self.screen.blit(self.Victoire_1, [290, 80]) self.screen.blit(self.Menu, [150, 210]) self.screen.blit(self.choix, [250, 180]) self.screen.blit(self.YN, [420, 300]) self.screen.blit(self.Victoire_2, [290, 40]) self.screen.blit(self.Score_J1, [200, 10]) self.screen.blit(self.Score_J2, [650, 10]) self.balle.afficher(self.screen) self.Joueur_1.afficher(self.screen) self.Joueur_2.afficher(self.screen) self.Bord_1.afficher(self.screen) self.Bord_2.afficher(self.screen) self.Bordtop.afficher(self.screen) self.Bordbottom.afficher(self.screen) pygame.display.flip()
Toujours rien
vortex
>
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
Modifié le 23 août 2021 à 18:27
Modifié le 23 août 2021 à 18:27
Tout est affiché correctement sauf Score_J1 ?
Que fait la méthode afficher ?
La couleur du texte est bien différente de celle de l'écran ?
As-tu essayé de blit Score_J1 en dernier ? Idem avec
As-tu essayé aussi de mettre un background à ton texte ?
Que fait la méthode afficher ?
La couleur du texte est bien différente de celle de l'écran ?
As-tu essayé de blit Score_J1 en dernier ? Idem avec
self.Joueur_1.afficher(self.screen).
As-tu essayé aussi de mettre un background à ton texte ?
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
>
vortex
23 août 2021 à 18:29
23 août 2021 à 18:29
La couleur est différente oui et j'ai essayé et non ça change pas le 0
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
Modifié le 23 août 2021 à 20:49
Modifié le 23 août 2021 à 20:49
Je vous envoie tous ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
Modifié le 23 août 2021 à 23:13
Modifié le 23 août 2021 à 23:13
import random import pygame import sys import math from pygame.draw import rect from bordure import Bordure from Joueur_1 import Joueur from balle import balle pygame.init() class Game: def __init__(self): self.res = (900, 600) self.screen = pygame.display.set_mode(self.res) pygame.display.set_caption('Pong - By Gamaxi') self.running = True self.Joueur_1_x, self.Joueur_1_y = 20, 250 self.Joueur_2_x, self.Joueur_2_y = 860, 250 self.Joueur_taille = [20, 80] self.vitesse_y_1, self.vitesse_y_2 = 0, 0 self.Joueur_1 = Joueur(self.Joueur_1_x, self.Joueur_1_y, self.Joueur_taille) self.Joueur_2 = Joueur(self.Joueur_2_x, self.Joueur_2_y, self.Joueur_taille) self.Rectscreen = pygame.Rect(0, 0, 900, 600) self.balle_direction = [-1, 1] self.balle = balle(450, 250, [20, 20], random.choice(self.balle_direction)) self.balle_tire = False self.balle_vitesse_x, self.balle_vitesse_y = 1, 0.9 self.Bord_1 = Bordure(0, 0, [10, 1000]) self.Bord_2 = Bordure(890, 0, [10, 1000]) self.Bordtop = Bordure(0 , 0, [1000, 1]) self.Bordbottom = Bordure(0 , 599, [1000, 1]) self.scoreun, self.scoredeux = 0, 0 self.ColorFont = (255, 255, 255) self.ColorESCAPE = (0, 0, 0) self.font = pygame.font.SysFont('Arial', 100) self.fontmenu = pygame.font.SysFont('Terminal', 50) self.Score_J1 = self.font.render(f"{self.scoreun}" ,True , self.ColorFont) self.Score_J2 = self.font.render(str(self.scoredeux) ,True , self.ColorFont) self.choix = self.fontmenu.render("Êtes vous sûr de quitter ?",True , (50, 50, 50)) self.YN = self.fontmenu.render("Y/N ?",True , (50, 50, 50)) self.Menu = self.fontmenu.render("Appuyer sur espace pour commencer !", True , self.ColorFont) self.Victoire_1 = self.fontmenu.render("Victoire du joueur 1 !", True, (50, 50, 50)) self.Victoire_2 = self.fontmenu.render("Victoire du joueur 2 !", True, (50, 50, 50)) self.start() def start(self): while self.running: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: self.vitesse_y_2 = -1 if event.key == pygame.K_DOWN: self.vitesse_y_2 = 1 if event.key == pygame.K_a: self.vitesse_y_1 = -1 if event.key == pygame.K_w: self.vitesse_y_1 = 1 if event.key == pygame.K_SPACE: self.balle = balle(450, 250, [20, 20], random.choice(self.balle_direction)) self.Menu = self.fontmenu.render("Appuyer sur espace pour commencer !", True , (50, 50, 50)) self.balle_tire = True if event.key == pygame.K_ESCAPE: self.choix = self.fontmenu.render("Êtes vous sûr de quitter ?",True , self.ColorESCAPE) self.YN = self.fontmenu.render("Y/N ?",True , self.ColorESCAPE) if event.key == pygame.K_y: self.running = False if event.key == pygame.K_n: self.choix = self.fontmenu.render("Êtes vous sûr de quitter ?",True , (50, 50, 50)) self.YN = self.fontmenu.render("Y/N ?",True , (50, 50, 50)) if event.type == pygame.KEYUP: self.vitesse_y_2 = 0 self.vitesse_y_1 = 0 self.Joueur_1.mouvement(self.vitesse_y_1) self.Joueur_2.mouvement(self.vitesse_y_2) self.Joueur_1.Rectt.clamp_ip(self.Rectscreen) self.Joueur_2.Rectt.clamp_ip(self.Rectscreen) self.balle.Rect.clamp_ip(self.Rectscreen) if self.balle_tire: self.balle.mouvement(self.balle_vitesse_x, self.balle_vitesse_y) if self.Joueur_1.Rectt.colliderect(self.balle.Rect) or self.Joueur_2.Rectt.colliderect(self.balle.Rect): self.balle_vitesse_x = self.change_direction(self.balle_vitesse_x, 0) self.balle_vitesse_y = self.change_direction(self.balle_vitesse_y, 60) if self.balle.Rect.colliderect(self.Bordbottom.Rect) or self.balle.Rect.colliderect(self.Bordtop.Rect): self.balle_vitesse_y = self.change_direction(self.balle_vitesse_y, 0) if self.balle.Rect.colliderect(self.Bord_1.Rect): self.balle = balle(450, 250, [20, 20], random.choice(self.balle_direction)) self.balle_tire = False self.scoreun += 1 print(self.scoreun) if self.balle.Rect.colliderect(self.Bord_2.Rect): self.balle = balle(450, 250, [20, 20], random.choice(self.balle_direction)) self.balle_tire = False self.scoredeux += 1 print(self.scoredeux) if self.scoreun == 3: self.Victoire_1 = self.fontmenu.render("Victoire du joueur 1 !", True, self.ColorFont) if self.scoredeux == 3: self.Victoire_2 = self.fontmenu.render("Victoire du joueur 2 !", True, self.ColorFont) colorbg = (50, 50, 50) self.screen.fill(colorbg) self.screen.blit(self.Victoire_1, [290, 80]) self.screen.blit(self.Menu, [150, 210]) self.screen.blit(self.choix, [250, 180]) self.screen.blit(self.YN, [420, 300]) self.screen.blit(self.Victoire_2, [290, 40]) self.screen.blit(self.Score_J1, [200, 10]) self.screen.blit(self.Score_J2, [650, 10]) self.balle.afficher(self.screen) self.Joueur_1.afficher(self.screen) self.Joueur_2.afficher(self.screen) self.Bord_1.afficher(self.screen) self.Bord_2.afficher(self.screen) self.Bordtop.afficher(self.screen) self.Bordbottom.afficher(self.screen) pygame.display.update() def change_direction(self, vitesse, angle): vitesse = - (vitesse * math.cos(angle)) return vitesse if __name__ == '__main__': pygame.init() Game().start() pygame.quit()
Après le reste c'est des class dans d'autres fichier
Bonjour,
Ben oui, tu ne mets pas à jour ta surface, dès l'instant où tu changes le contenu d'une surface tu dois forcément la mettre à jour elle-même et aussi sur l'écran.
Il vaut mieux tester sur un exemple simple pour comprendre.
Dans ton code, il faudrait quand même voir à utiliser des elif et else plutôt qu'une série de if ainsi que penser ton code un peu plus objet que ta classe fourre-tout Game.
Ben oui, tu ne mets pas à jour ta surface, dès l'instant où tu changes le contenu d'une surface tu dois forcément la mettre à jour elle-même et aussi sur l'écran.
Il vaut mieux tester sur un exemple simple pour comprendre.
import pygame def score_draw(screen, score): score_surf = font.render(str(score), True, (255,)*3) return screen.blit(score_surf, (150, 50)) pygame.init() score = 0 screen = pygame.display.set_mode((400, 200)) font = pygame.font.SysFont('Arial', 100) pygame.display.update(score_draw(screen, score)) clock = pygame.time.Clock() running = True while running: clock.tick(15) for evt in pygame.event.get(): if evt.type == pygame.QUIT: running = False elif evt.type == pygame.KEYDOWN: if evt.key == pygame.K_UP: score += 1 screen.fill((0,)*3) score_rect = score_draw(screen, score) pygame.display.update(score_rect) pygame.quit()
Dans ton code, il faudrait quand même voir à utiliser des elif et else plutôt qu'une série de if ainsi que penser ton code un peu plus objet que ta classe fourre-tout Game.
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
>
vortex
Modifié le 24 août 2021 à 20:27
Modifié le 24 août 2021 à 20:27
J'ai essayé votre solution mais cela ne marche pas.
ça me met:
Score n'est pas attribué a score_1
mais je pense que c'est parce que il supporte que les charactères
ça me met:
Score n'est pas attribué a score_1
mais je pense que c'est parce que il supporte que les charactères
vortex
>
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
24 août 2021 à 20:46
24 août 2021 à 20:46
Tout ce que tu as à faire dans ton code pour que ça fonctionne est de recréer ta nouvelle surface juste après ton
Idem pour self.scoredeux, je pense que tu cherches un truc trop compliqué alors que c'est plus que simple.
self.scoreun += 1.
if self.balle.Rect.colliderect(self.Bord_1.Rect): self.balle = balle(450, 250, [20, 20], random.choice(self.balle_direction)) self.balle_tire = False self.scoreun += 1 self.Score_J1 = self.font.render(str(self.scoreun), True, self.ColorFont)
Idem pour self.scoredeux, je pense que tu cherches un truc trop compliqué alors que c'est plus que simple.
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
>
vortex
24 août 2021 à 20:57
24 août 2021 à 20:57
C'est vrai je cherche trop compliqué en tous cas je te remercie, tu es un génie, tu as sauvé mon jeu !
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
3
>
Alexouz
Messages postés
84
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
17 août 2022
24 août 2021 à 21:01
24 août 2021 à 21:01
Je te remercie infiniment pour ta patiente et de ta présence !