Browse Source

nouvelle classe

master
laneury.a 1 week ago
parent
commit
1b4bf03303
  1. 136
      classes.py
  2. 60
      constantes.py
  3. 232
      main.py

136
classes.py

@ -1,81 +1,55 @@
import pygame import pygame
from pygame.locals import * from pygame.locals import *
from random import randint from random import randint
class Image(): class Image():
def __init__ (self, fenetre, chm_acces, pos_x, pos_y): def __init__ (self, fenetre, chm_acces, pos_x, pos_y, long, larg):
self.fenetre = fenetre self.fenetre = fenetre
self.chm_acces = chm_acces self.chm_acces = chm_acces
self.pos_x = pos_x self.pos_x = pos_x
self.pos_y = pos_y self.pos_y = pos_y
self.image = pygame.image.load(self.chm_acces).convert_alpha() self.image = pygame.image.load(self.chm_acces).convert_alpha()
self.fenetre.blit(self.image, (self.pos_x, self.pos_y)) self.long = long
self.larg = larg
def translater (self,axe, sens, vitesse): self.maj(3)
self.axe = axe
self.sens = sens def translater (self,axe, sens, vitesse):
self.vitesse = vitesse if axe == "x":
if sens == "gauche":
if self.axe == "x": self.pos_x = self.pos_x - vitesse
if sens == "gauche": else:
self.pos_x = self.pos_x - self.vitesse self.pos_x = self.pos_x + vitesse
else:
self.pos_x = self.pos_x + self.vitesse else:
if sens == "haut":
else: self.pos_y = self.pos_y - vitesse
if sens == "haut": else:
self.pos_y = self.pos_y - self.vitesse self.pos_y = self.pos_y + vitesse
else:
self.pos_y = self.pos_y + self.vitesse self.maj(3)
self.fenetre.blit(self.image, (self.pos_x, self.pos_y)) def maj(self, nbr):
if self.pos_x <= -self.long :
def maj(self): self.pos_x = self.pos_x + self.long * nbr
self.fenetre.blit(self.image, (self.pos_x,self.pos_y)) self.fenetre.blit(self.image, (self.pos_x,self.pos_y))
def verifier(self, long, nbr):
print("ici") class GroupeImage():
if self.pos_x <= -long : def __init__ (self, fenetre):
self.pos_x = self.pos_x + long * nbr self.fenetre = fenetre
self.lst = []
class Calques():
def __init__ (self, fenetre): def creer_Image(self, chm_acces, pos_x, pos_y, long, larg):
self.fenetre = fenetre self.lst.append(Image(self.fenetre, chm_acces, pos_x, pos_y, long, larg))
self.lst_calques = []
def avancer(self, vitesse):
def ajouter_calque(self,pos_calque): for image in self.lst:
#pos_calque vas permettre de choisir la position du calque parmis les autres calques - pas encore fncelle image.translater("x", "gauche", vitesse)
#pr le moment le calque se rajoute a la fin
self.calque = [] def affiche(self):
self.lst_calques.append(self.calque) for image in self.lst:
image.maj(len(self.lst))
def ajouter_element(self, nom, i_calque, chm_acces, pos_x, pos_y):
self.nom = nom
self.chm_acces = chm_acces
self.pos_x = pos_x
self.pos_y = pos_y
self.nom = Image(self.fenetre, self.chm_acces, self.pos_x, self.pos_y)
self.lst_calques[i_calque].append(self.nom)
print(self.lst_calques)
def deplacer_calque(self, i_calque, axe, sens, vitesse, size, nbr):
self.axe = axe
self.sens = sens
self.vitesse = vitesse
for element in self.lst_calques[i_calque]:
self.nom.verifier(size,nbr)
element.translater(self.axe, self.sens, self.vitesse)
print(self.nom.pos_x)
def maj_calque(self, i_calque):
for element in self.lst_calques[i_calque]:
element.maj()

60
constantes.py

@ -1,31 +1,31 @@
""" """
programme avec les constantes programme avec les constantes
""" """
largeur_fenetre = 1280 largeur_fenetre = 1280
hauteur_fenetre = 720 hauteur_fenetre = 720
image_icone = "image/icone.png" image_icone = "image/icone.png"
titre_fenetre = "Cars and Run 2D" titre_fenetre = "Cars and Run 2D"
image_acceuil = "image/paysages/acc.png" image_acceuil = "image/paysages/acc.png"
img_bg = "image/paysages/bg.jpg" img_bg = "image/paysages/bg.jpg"
img_bg_nuit = "image/paysages/bg_nuit.jpg" img_bg_nuit = "image/paysages/bg_nuit.jpg"
img_goudron = "image/paysages/goudron.png" img_goudron = "image/paysages/goudron.png"
img_barriere = "image/paysages/barriere.png" img_barriere = "image/paysages/barriere.png"
img_lgn_continu = "image/paysages/lgn_continu.png" img_lgn_continu = "image/paysages/lgn_continu.png"
img_lgn_discontinu = "image/paysages/lgn_discontinu.png" img_lgn_discontinu = "image/paysages/lgn_discontinu.png"
img_n1 = "image/paysages/nuages/n1.png" img_n1 = "image/paysages/nuages/n1.png"
img_n2 = "image/paysages/nuages/n2.png" img_n2 = "image/paysages/nuages/n2.png"
img_n3 = "image/paysages/nuages/n3.png" img_n3 = "image/paysages/nuages/n3.png"
img_n4 = "image/paysages/nuages/n4.png" img_n4 = "image/paysages/nuages/n4.png"
img_n5 = "image/paysages/nuages/n5.png" img_n5 = "image/paysages/nuages/n5.png"
img_n6 = "image/paysages/nuages/n6.png" img_n6 = "image/paysages/nuages/n6.png"
img_n7 = "image/paysages/nuages/n7.png" img_n7 = "image/paysages/nuages/n7.png"
img_e30 = "image/voitures/e30_bg.png" img_e30 = "image/voitures/e30_bg.png"
img_civic = "image/voitures/civic_bg.png" img_civic = "image/voitures/civic_bg.png"
img_golf = "image/voitures/golf_bg.png" img_golf = "image/voitures/golf_bg.png"
img_hyundai = "image/voitures/hyundai_bg.png" img_hyundai = "image/voitures/hyundai_bg.png"

232
main.py

@ -1,114 +1,120 @@
""" """
Jeu cars and run 2D Jeu cars and run 2D
lien du tuto http://sdz.tdct.org/sdz/interface-graphique-pygame-pour-python.html lien du tuto http://sdz.tdct.org/sdz/interface-graphique-pygame-pour-python.html
lien pour faire des images pixeliser : pixilart.com lien pour faire des images pixeliser : pixilart.com
Script python:main, classes, constantes Script python:main, classes, constantes
""" """
import pygame import pygame
from pygame.locals import * from pygame.locals import *
from constantes import * from constantes import *
from classes import * from classes import *
from random import randint from random import randint
pygame.init() pygame.init()
#ouverture de la fenetre #ouverture de la fenetre
fenetre = pygame.display.set_mode((largeur_fenetre, hauteur_fenetre)) fenetre = pygame.display.set_mode((largeur_fenetre, hauteur_fenetre))
fenetre.fill((0,0,0)) fenetre.fill((0,0,0))
#Icone #Icone
icone = pygame.image.load(image_icone) icone = pygame.image.load(image_icone)
pygame.display.set_icon(icone) pygame.display.set_icon(icone)
#Titre #Titre
pygame.display.set_caption(titre_fenetre) pygame.display.set_caption(titre_fenetre)
lst_elements = [] lst_elements = []
#BOUCLE PRINCIPALE #BOUCLE PRINCIPALE
continuer = 1 continuer = 1
while continuer: while continuer:
accueil = Image(fenetre, image_acceuil, 0, 0) accueil = Image(fenetre, image_acceuil, 0, 0, 205, 205)
#lst_elements.append(accueil)#il me semble quepas besoin de ca #lst_elements.append(accueil)#il me semble quepas besoin de ca
#Rafraichissement #Rafraichissement
pygame.display.flip() pygame.display.flip()
continuer_jeu, continuer_accueil = 1, 1 #On remet ces variables à 1 à chaque tour de boucle continuer_jeu, continuer_accueil = 1, 1 #On remet ces variables à 1 à chaque tour de boucle
#BOUCLE D'ACCUEIL #BOUCLE D'ACCUEIL
while continuer_accueil: while continuer_accueil:
pygame.time.Clock().tick(30) #Limitation de vitesse de la boucle pygame.time.Clock().tick(30) #Limitation de vitesse de la boucle
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE: if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
continuer_accueil,continuer_jeu,continuer = 0,0,0#Si l'utilisateur quitte, on met les variables de boucle à 0 pour n'en parcourir aucune et fermer continuer_accueil,continuer_jeu,continuer = 0,0,0#Si l'utilisateur quitte, on met les variables de boucle à 0 pour n'en parcourir aucune et fermer
choix = 0 #Variable de choix du niveau choix = 0 #Variable de choix du niveau
elif event.type == KEYDOWN: elif event.type == KEYDOWN:
if event.key == K_F1: #Lancement du niveau 1 if event.key == K_F1: #Lancement du niveau 1
continuer_accueil = 0#On quitte l'accueil continuer_accueil = 0#On quitte l'accueil
choix = 'n1'#On définit le niveau à charger choix = 'n1'#On définit le niveau à charger
elif event.key == K_F2: #Lancement du niveau 2 elif event.key == K_F2: #Lancement du niveau 2
continuer_accueil = 0 continuer_accueil = 0
choix = 'n2' choix = 'n2'
if choix == 'n1': #on vérifie que le joueur a bien fait un choix de niveau pour ne pas charger s'il quitte if choix == 'n1': #on vérifie que le joueur a bien fait un choix de niveau pour ne pas charger s'il quitte
monde = Calques(fenetre) fonds = GroupeImage(fenetre)
fonds.creer_Image(img_bg, 0, 0, 290, 57)
monde.ajouter_calque("c_fond")#0 fonds.creer_Image(img_goudron, 0, 360, 205, 205)
monde.ajouter_element("fond", 0, img_bg, 0, 0)
monde.ajouter_element("route", 0, img_goudron, 0, 360) nuages = GroupeImage(fenetre)
nuages.creer_Image(img_n1, 1280, 0, 290, 57)
monde.ajouter_calque("c_paysage")#2 nuages.creer_Image(img_n2, 1280, 59, 248, 58)
monde.ajouter_element("nuage", 1, img_n1, 1280, 0)
barrieres = GroupeImage(fenetre)
monde.ajouter_calque("c_elem_route") barrieres.creer_Image(img_barriere, 0, 360, 844, 40)
monde.ajouter_element("barriere", 2, img_barriere, 0, 360) barrieres.creer_Image(img_barriere, 844, 360, 844, 40)
monde.ajouter_element("barriere", 2, img_barriere, 844, 360) barrieres.creer_Image(img_barriere, 844+844, 360, 844, 40)
monde.ajouter_element("barriere", 2, img_barriere, 1688, 360)
pygame.display.flip()
voitures = GroupeImage(fenetre)
if choix == 'n2': voitures.creer_Image(img_e30, 50, 360, 205, 205)
monde = Paysage(fenetre, img_bg_nuit, img_n2, img_goudron, img_barriere) pygame.display.flip()
monde.creer_monde()
pygame.display.flip() if choix == 'n2':
#BOUCLE DE JEU monde = Paysage(fenetre, img_bg_nuit, img_n2, img_goudron, img_barriere)
while continuer_jeu: monde.creer_monde()
pygame.display.flip()
#pygame.time.Clock().tick(30) #Limitation de vitesse de la boucl
#BOUCLE DE JEU
monde.deplacer_calque(1,"x", "gauche", 3, 20,1) while continuer_jeu:
monde.deplacer_calque(2,"x", "gauche", 3, 844, 3) pygame.time.Clock().tick(30) #Limitation de vitesse de la boucl
monde.maj_calque(0)
monde.maj_calque(1) nuages.avancer(10)
monde.maj_calque(2) barrieres.avancer(10)
for event in pygame.event.get():
fonds.affiche()
if event.type == QUIT: nuages.affiche()
continuer_jeu = 0 #Si l'utilisateur quitte, on met la variable qui continue le jeu barrieres.affiche()
continuer = 0 #ET la variable générale à 0 pour fermer la fenêtre voitures.affiche()
elif event.type == KEYDOWN: for event in pygame.event.get():
if event.key == K_ESCAPE:
continuer_jeu = 0 #Si l'utilisateur presse Echap ici, on revient seulement au menu if event.type == QUIT:
elif event.key == K_UP: #Touches de déplacement de voiture continuer_jeu = 0 #Si l'utilisateur quitte, on met la variable qui continue le jeu
lst_elements[2].translater('y',"haut",10)#deplace pas la voiture continuer = 0 #ET la variable générale à 0 pour fermer la fenêtre
elif event.key == K_DOWN:
lst_elements[2].translater('y',"bas",10) elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.display.flip() continuer_jeu = 0 #Si l'utilisateur presse Echap ici, on revient seulement au menu
elif event.key == K_UP: #Touches de déplacement de voiture
pygame.display.flip() lst_elements[2].translater('y',"haut",10)#deplace pas la voiture
elif event.key == K_DOWN:
lst_elements[2].translater('y',"bas",10)
pygame.display.flip()
pygame.display.flip()
pygame.quit() pygame.quit()
Loading…
Cancel
Save