Bonsoir à tous, je suis actuellement en train de réaliser mon projet d'ISN de Terminale et je rencontre quelques difficultés :/
Tout d'abord voici mon programme:
import pygame
from pygame.locals import * #Importation des bibliothèques
import random
import time
pygame.init()
Lfenetre = 1200
Hfenetre = 600
fenetre = pygame.display.set_mode((Lfenetre, Hfenetre), RESIZABLE) #Création d'un écran d'une résolution de 1024*768 pixels
fond_original = pygame.image.load("fond.png").convert() #Mise en place du fond d'écran
fond = pygame.transform.scale(fond_original,(Lfenetre,Hfenetre)) #Redimensionnage de l'image
bird = pygame.image.load("flappy.png").convert() #Affichage de l'image de l'oiseau
bird = pygame.transform.scale(bird,(125,125)) #Redimensionnage de l'image
bird.set_colorkey((255,255,255)) #avec disparition du fond de cette image (blanc)
poteau = pygame.image.load("poteau.png").convert()
poteau = pygame.transform.scale(poteau,(70,500))
poteau.set_colorkey((255,255,255))
poteau2 = pygame.image.load("poteau2.png").convert()
poteau2 = pygame.transform.scale(poteau2,(70,500))
poteau2.set_colorkey((255,255,255))
horloge = pygame.time.Clock()
pygame.display.set_caption("Flappy Bird") #Nom de la fenêtre
musique = pygame.mixer.music.load("killer.mp3")
def messageGO():
Police = pygame.font.Font("LazySpringDay.ttf", 100) #Choix de la police et de la taille du texte
Rendu = Police.render("Game Over",1,(0,0,0)) #Rendu du texte (nom du message, Code RGB)
fenetre.blit(Rendu, (Lfenetre/4, Hfenetre/4))
def message_rejouer():
Police = pygame.font.Font("LazySpringDay.ttf", 50)
Rendu = Police.render('Appuyer sur "r" pour rejouer',1,(0,0,0))
fenetre.blit(Rendu, (Lfenetre/4, Hfenetre/2+200))
def gameover():
messageGO()
message_rejouer()
pygame.display.flip()
while rejouer_ou_quitter() == None: #Si la fonction ne renvoie rien alors
horloge.tick() #l'écran reste figé sur le message du GameOver
principale()
def rejouer_ou_quitter():
for event in pygame.event.get([KEYDOWN, QUIT]): #Pour tous les évènements parmi [...]
if event.type == QUIT: #Si l'évènement est de type quitter alors on arrête le programme
pygame.quit()
quit()
elif event.key == K_r: #Si l'évènement est l'appui sur la touche "r" on renvoie un évènement clé
return event.key
return None #Sinon la fonction ne renvoie rien
def principale():
x = 100 #Position de l'oiseau
y = 100
y_move = 0 #Mouvement de l'oiseau
i = 1000 #Position du poteau
j = random.randint(210,450)
j2 = j-700 #Position du poteau2 (à l'envers)
pygame.mixer.music.play()
continuer = 1
while continuer == 1:
for event in pygame.event.get():
if event.type == QUIT:
continuer = 0
if event.type == KEYDOWN and event.key == K_SPACE:
y_move = -1
if event.type == KEYUP and event.key == K_SPACE:
y_move = 1
y += y_move
fenetre.blit (fond, (0,0))
fenetre.blit (bird, (x,y))
fenetre.blit (poteau, (i,j))
fenetre.blit (poteau2, (i,j2))
if y>400:
pygame.mixer.music.stop()
gameover()
pygame.display.flip()
principale()
pygame.quit()
quit()
Tout d'abord j'ai un problème quand je veux redimensionner la taille de l'écran en cours de jeu. En effet quand "j'étire" une partie de l'écran ou que je met le jeu en plein écran une partie de l'écran est noire. J'ai inclus l'outil RESIZABLE mais cela ne change rien...
Aussi quand l'oiseau touche le sol et que la fonction gameover se lance tout va bien: l'écran se fige et si j'appuie sur "r" le jeu se relance et si j'appuie sur d'autres touches rien ne se passe. Cependant si pendant le gameover j'appuie sur la touche espace puis que j'appuie sur la touche "r" alors quand le jeu se relance le flappy se met à tomber directement :/
Si quelqu'un pouvait m'aider ce serait super sympa
Voici les fichiers pour ceux qui voudraient tester le programme:
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.