Score qui ne s'affiche pas !
Résolu
Alexouz
Messages postés
88
Statut
Membre
-
Alexouz Messages postés 88 Statut Membre -
Alexouz Messages postés 88 Statut Membre -
Bonjour a tous, j'ai petit problème
actuellement je crée un jeux et en utilisant les Sysfonts etc... mon score s'affiche pas mais par contre il affiche dans le terminal.
ignorez les rect,balle etc.. car c'est bon il y a juste le score.
actuellement je crée un jeux et en utilisant les Sysfonts etc... mon score s'affiche pas mais par contre il affiche dans le terminal.
self.score_1 = 0
self.Score_J1 = self.font.render(f"{self.score_1}" ,True , self.ColorFont)
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.score_1 += 1
print(self.scoreun)
ignorez les rect,balle etc.. car c'est bon il y a juste le score.
A voir également:
- Score qui ne s'affiche pas !
- Score snap qui augmente pas - Forum Snapchat
- Score de malinas ✓ - Forum Excel
- Score snap qui augmente de 3 points - Forum Snapchat
- Feuille de score belote excel - Forum Graphisme
5 réponses
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 ...
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
Je ne vois pas l'instruction dans ton code qui permet d'afficher dans le jeu .....
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.