3 changed files with 204 additions and 224 deletions
@ -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() |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
@ -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" |
@ -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…
Reference in new issue