Pygame : Faire défiler une image (ou est le problème ?)

Fermé
Ezekiel2510 Messages postés 14 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 14 avril 2014 - Modifié par Ezekiel2510 le 23/03/2014 à 21:34
Ezekiel2510 Messages postés 14 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 14 avril 2014 - 14 avril 2014 à 02:39
Salut les gens !
Voila j'essaie de coder un jeu en python avec le module pygame. Je cherche a faire défiler l'image badguy de haut en bas, je n'arrive pas a savoir ou est mon erreur.

import pygame
from pygame.locals import *
import random
pygame.init()

#Ouverture d'une fenetre:
fenetre = pygame.display.set_mode((920,613))

#Chargement des images:
home = pygame.image.load("home.jpg").convert_alpha()#Image page d'accueil
bg = pygame.image.load('road.jpg').convert_alpha()#Image route
fond = pygame.image.load("background.jpg").convert_alpha()#Image fond du jeu
lose = pygame.image.load("lose.jpg").convert_alpha()#Image "You lose"
aide = pygame.image.load("help.jpg").convert_alpha()#Image comandes
perso = pygame.image.load("car.png").convert_alpha()#Image voiture
badguy = pygame.image.load("mechant.png").convert_alpha()#Image ennemis
win = pygame.image.load("win.jpg").convert_alpha()#Image Easter Egg
position_perso = perso.get_rect()
position_badguy = badguy.get_rect()

#Chargements des sons:

son_Depart = pygame.mixer.Sound("son_Depart.wav")
son_Depart.play()

son_Fail = pygame.mixer.Sound("Fail.wav")
son_Dieu = pygame.mixer.Sound("dieu.ogg ")

#Pour que le déplacement du personage soit fluide:
pygame.key.set_repeat(400, 30)

#Declaration des variables pour le déplacement de la route:
ck = pygame.time.Clock()# Initialisation d'un objet horloge (gestion du temps)
tk = 0
offset = 0 # Variable pour la valeur du décalage entre une image et le bord de l'écran
speed = 2 #Variable vitesse
height = bg.get_height() #Variable qui recupere la heuteur de l'objet

#Declaration des variables pour l'apparition des ennemis
badCk = pygame.time.Clock()# Initialisation d'un objet horloge (gestion du temps)
badTk = 0
badVar = 0


#Declaration des variables des boucles:
boucle_accueil = 1
boucle_aide = 0
boucle_jeu = 0
boucle_win = 0
boucle_continue = 0
badP1 = 0


#Début de la boucle d'accueil:
while boucle_accueil:
fenetre.blit(home, (0,0))#Affichage du fond d'écran:
pygame.display.flip()

#Gestion des évenements de la boucle:
for event in pygame.event.get():
if event.type == QUIT:
boucle_accueil = 0
if event.type == KEYDOWN:
if event.key == K_SPACE:
position_perso.x =410
position_perso.y =490
boucle_jeu = 1
if event.key == K_TAB:
boucle_aide = 1
if event.key == K_ESCAPE:
boucle_accueil=0
#Début de la boucle aide:
while boucle_aide:
fenetre.blit(aide, (0,0))
pygame.display.flip()
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_TAB:
boucle_aide = 0

#Début de la boucle du jeu:
while boucle_jeu:
fenetre.blit(fond, (0,0))#Affichage du fond d'écran:



#Lignes pour faire avancer la route:
tk += ck.tick()#Ajoute la valeur de ck a tk

if tk >= 10:
offset = (offset+speed)%height #Augmentation du decalage de l'image
fenetre.blit(bg,(240,offset)) #Affiche bg avecc les coordonées (240,offset)
fenetre.blit(bg,(240,offset-height)) #Affiche bg avecc les coordonées (240,offset-height)
position_badguy.x = 250
position_badguy.y = 0
fenetre.blit(perso, position_perso) #Affichage du personnage
fenetre.blit(badguy, position_badguy)
position_badguy = position_badguy.move(0,20)
pygame.display.flip() #Raffraichissement
tk = 0 #tk reprend sa valeur initiale




#Gestion des évenements de la boucle:
for event in pygame.event.get():
if event.type == QUIT: #Evenement de type Quitter
boucle_jeu = 0
boucle_accueil = 0
if event.type == KEYDOWN: #Evenement de type Clavier
if event.key == K_LEFT:
position_perso = position_perso.move(-20,0)
if event.key == K_RIGHT:
position_perso = position_perso.move(20,0)
if event.key == K_LCTRL:
boucle_win = 1
son_Dieu.play()


#Début boucle_win
while boucle_win:
fenetre.blit (win, (0,0))
pygame.display.flip() #Raffraichissement
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
fenetre.blit(home, (0,0))#Affichage du fond d'écran:
boucle_win=0
boucle_jeu=0



#Hitbox de la route:
if position_perso.x < 230 or position_perso.x > 580:
son_Fail.play()
boucle_continue = 1

#Debut de la boucle continue?:
while boucle_continue:
fenetre.blit(lose, (0,0))
pygame.display.flip()

#Gestion des évenement de la boucle:
for event in pygame.event.get():
if event.type == QUIT:
boucle_continue = 0
boucle_jeu = 0
boucle_accueil = 0
if event.type == KEYDOWN:
if event.key == K_SPACE:
position_perso.x =400
position_perso.y =450
fenetre.blit(fond, (0,0))
boucle_continue = 0
if event.key == K_ESCAPE:
fenetre.blit(home, (0,0))
position_perso.x =400
position_perso.y =450
boucle_continue = 0
boucle_jeu = 0


pygame.quit()

Merci Beaucoup

3 réponses

Ezekiel2510 Messages postés 14 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 14 avril 2014
3 avril 2014 à 23:08
UP
0
Forceseek Messages postés 321 Date d'inscription samedi 24 septembre 2011 Statut Membre Dernière intervention 22 janvier 2015 71
9 avril 2014 à 01:28
J'ai regardé ton code vite fait, c'est peut-être pas la seule bourde mais déjà :
position_badguy.x = 250
position_badguy.y = 0
Si tu met ça dans la boucle, il revient à cette position à chaque tour de boucle, donc même si tu le fais bouger, tu le verra même pas puisqu'il revient à chaque fois à cette position, il faut que tu mette ce code hors de la boucle
0
Ezekiel2510 Messages postés 14 Date d'inscription jeudi 2 janvier 2014 Statut Membre Dernière intervention 14 avril 2014
14 avril 2014 à 02:39
Merci beaucoup !
0