3 changed files with 204 additions and 224 deletions
@ -1,81 +1,55 @@ |
|||
import pygame |
|||
from pygame.locals import * |
|||
from random import randint |
|||
|
|||
class Image(): |
|||
def __init__ (self, fenetre, chm_acces, pos_x, pos_y): |
|||
self.fenetre = fenetre |
|||
self.chm_acces = chm_acces |
|||
self.pos_x = pos_x |
|||
self.pos_y = pos_y |
|||
|
|||
self.image = pygame.image.load(self.chm_acces).convert_alpha() |
|||
self.fenetre.blit(self.image, (self.pos_x, self.pos_y)) |
|||
|
|||
def translater (self,axe, sens, vitesse): |
|||
self.axe = axe |
|||
self.sens = sens |
|||
self.vitesse = vitesse |
|||
|
|||
if self.axe == "x": |
|||
if sens == "gauche": |
|||
self.pos_x = self.pos_x - self.vitesse |
|||
else: |
|||
self.pos_x = self.pos_x + self.vitesse |
|||
|
|||
else: |
|||
if sens == "haut": |
|||
self.pos_y = self.pos_y - self.vitesse |
|||
else: |
|||
self.pos_y = self.pos_y + self.vitesse |
|||
|
|||
self.fenetre.blit(self.image, (self.pos_x, self.pos_y)) |
|||
|
|||
def maj(self): |
|||
self.fenetre.blit(self.image, (self.pos_x,self.pos_y)) |
|||
|
|||
def verifier(self, long, nbr): |
|||
print("ici") |
|||
if self.pos_x <= -long : |
|||
self.pos_x = self.pos_x + long * nbr |
|||
|
|||
class Calques(): |
|||
def __init__ (self, fenetre): |
|||
self.fenetre = fenetre |
|||
self.lst_calques = [] |
|||
|
|||
def ajouter_calque(self,pos_calque): |
|||
#pos_calque vas permettre de choisir la position du calque parmis les autres calques - pas encore fncelle |
|||
#pr le moment le calque se rajoute a la fin |
|||
self.calque = [] |
|||
self.lst_calques.append(self.calque) |
|||
|
|||
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() |
|||
|
|||
|
|||
|
|||
|
|||
import pygame |
|||
from pygame.locals import * |
|||
from random import randint |
|||
|
|||
class Image(): |
|||
def __init__ (self, fenetre, chm_acces, pos_x, pos_y, long, larg): |
|||
self.fenetre = fenetre |
|||
self.chm_acces = chm_acces |
|||
self.pos_x = pos_x |
|||
self.pos_y = pos_y |
|||
|
|||
self.image = pygame.image.load(self.chm_acces).convert_alpha() |
|||
self.long = long |
|||
self.larg = larg |
|||
self.maj(3) |
|||
|
|||
def translater (self,axe, sens, vitesse): |
|||
if axe == "x": |
|||
if sens == "gauche": |
|||
self.pos_x = self.pos_x - vitesse |
|||
else: |
|||
self.pos_x = self.pos_x + vitesse |
|||
|
|||
else: |
|||
if sens == "haut": |
|||
self.pos_y = self.pos_y - vitesse |
|||
else: |
|||
self.pos_y = self.pos_y + vitesse |
|||
|
|||
self.maj(3) |
|||
|
|||
def maj(self, nbr): |
|||
if self.pos_x <= -self.long : |
|||
self.pos_x = self.pos_x + self.long * nbr |
|||
self.fenetre.blit(self.image, (self.pos_x,self.pos_y)) |
|||
|
|||
|
|||
class GroupeImage(): |
|||
def __init__ (self, fenetre): |
|||
self.fenetre = fenetre |
|||
self.lst = [] |
|||
|
|||
def creer_Image(self, chm_acces, pos_x, pos_y, long, larg): |
|||
self.lst.append(Image(self.fenetre, chm_acces, pos_x, pos_y, long, larg)) |
|||
|
|||
def avancer(self, vitesse): |
|||
for image in self.lst: |
|||
image.translater("x", "gauche", vitesse) |
|||
|
|||
def affiche(self): |
|||
for image in self.lst: |
|||
image.maj(len(self.lst)) |
|||
|
|||
|
|||
|
@ -1,31 +1,31 @@ |
|||
""" |
|||
programme avec les constantes |
|||
""" |
|||
largeur_fenetre = 1280 |
|||
hauteur_fenetre = 720 |
|||
|
|||
image_icone = "image/icone.png" |
|||
titre_fenetre = "Cars and Run 2D" |
|||
image_acceuil = "image/paysages/acc.png" |
|||
|
|||
|
|||
img_bg = "image/paysages/bg.jpg" |
|||
img_bg_nuit = "image/paysages/bg_nuit.jpg" |
|||
|
|||
img_goudron = "image/paysages/goudron.png" |
|||
img_barriere = "image/paysages/barriere.png" |
|||
img_lgn_continu = "image/paysages/lgn_continu.png" |
|||
img_lgn_discontinu = "image/paysages/lgn_discontinu.png" |
|||
|
|||
img_n1 = "image/paysages/nuages/n1.png" |
|||
img_n2 = "image/paysages/nuages/n2.png" |
|||
img_n3 = "image/paysages/nuages/n3.png" |
|||
img_n4 = "image/paysages/nuages/n4.png" |
|||
img_n5 = "image/paysages/nuages/n5.png" |
|||
img_n6 = "image/paysages/nuages/n6.png" |
|||
img_n7 = "image/paysages/nuages/n7.png" |
|||
|
|||
img_e30 = "image/voitures/e30_bg.png" |
|||
img_civic = "image/voitures/civic_bg.png" |
|||
img_golf = "image/voitures/golf_bg.png" |
|||
""" |
|||
programme avec les constantes |
|||
""" |
|||
largeur_fenetre = 1280 |
|||
hauteur_fenetre = 720 |
|||
|
|||
image_icone = "image/icone.png" |
|||
titre_fenetre = "Cars and Run 2D" |
|||
image_acceuil = "image/paysages/acc.png" |
|||
|
|||
|
|||
img_bg = "image/paysages/bg.jpg" |
|||
img_bg_nuit = "image/paysages/bg_nuit.jpg" |
|||
|
|||
img_goudron = "image/paysages/goudron.png" |
|||
img_barriere = "image/paysages/barriere.png" |
|||
img_lgn_continu = "image/paysages/lgn_continu.png" |
|||
img_lgn_discontinu = "image/paysages/lgn_discontinu.png" |
|||
|
|||
img_n1 = "image/paysages/nuages/n1.png" |
|||
img_n2 = "image/paysages/nuages/n2.png" |
|||
img_n3 = "image/paysages/nuages/n3.png" |
|||
img_n4 = "image/paysages/nuages/n4.png" |
|||
img_n5 = "image/paysages/nuages/n5.png" |
|||
img_n6 = "image/paysages/nuages/n6.png" |
|||
img_n7 = "image/paysages/nuages/n7.png" |
|||
|
|||
img_e30 = "image/voitures/e30_bg.png" |
|||
img_civic = "image/voitures/civic_bg.png" |
|||
img_golf = "image/voitures/golf_bg.png" |
|||
img_hyundai = "image/voitures/hyundai_bg.png" |
@ -1,114 +1,120 @@ |
|||
""" |
|||
Jeu cars and run 2D |
|||
lien du tuto http://sdz.tdct.org/sdz/interface-graphique-pygame-pour-python.html |
|||
lien pour faire des images pixeliser : pixilart.com |
|||
Script python:main, classes, constantes |
|||
""" |
|||
import pygame |
|||
from pygame.locals import * |
|||
from constantes import * |
|||
from classes import * |
|||
from random import randint |
|||
|
|||
pygame.init() |
|||
|
|||
#ouverture de la fenetre |
|||
fenetre = pygame.display.set_mode((largeur_fenetre, hauteur_fenetre)) |
|||
fenetre.fill((0,0,0)) |
|||
|
|||
#Icone |
|||
icone = pygame.image.load(image_icone) |
|||
pygame.display.set_icon(icone) |
|||
|
|||
#Titre |
|||
pygame.display.set_caption(titre_fenetre) |
|||
|
|||
lst_elements = [] |
|||
|
|||
#BOUCLE PRINCIPALE |
|||
continuer = 1 |
|||
while continuer: |
|||
|
|||
accueil = Image(fenetre, image_acceuil, 0, 0) |
|||
#lst_elements.append(accueil)#il me semble quepas besoin de ca |
|||
|
|||
#Rafraichissement |
|||
pygame.display.flip() |
|||
|
|||
continuer_jeu, continuer_accueil = 1, 1 #On remet ces variables à 1 à chaque tour de boucle |
|||
|
|||
#BOUCLE D'ACCUEIL |
|||
while continuer_accueil: |
|||
pygame.time.Clock().tick(30) #Limitation de vitesse de la boucle |
|||
|
|||
for event in pygame.event.get(): |
|||
|
|||
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 |
|||
|
|||
choix = 0 #Variable de choix du niveau |
|||
|
|||
elif event.type == KEYDOWN: |
|||
|
|||
if event.key == K_F1: #Lancement du niveau 1 |
|||
continuer_accueil = 0#On quitte l'accueil |
|||
choix = 'n1'#On définit le niveau à charger |
|||
|
|||
elif event.key == K_F2: #Lancement du niveau 2 |
|||
continuer_accueil = 0 |
|||
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 |
|||
|
|||
monde = Calques(fenetre) |
|||
|
|||
monde.ajouter_calque("c_fond")#0 |
|||
monde.ajouter_element("fond", 0, img_bg, 0, 0) |
|||
monde.ajouter_element("route", 0, img_goudron, 0, 360) |
|||
|
|||
monde.ajouter_calque("c_paysage")#2 |
|||
monde.ajouter_element("nuage", 1, img_n1, 1280, 0) |
|||
|
|||
monde.ajouter_calque("c_elem_route") |
|||
monde.ajouter_element("barriere", 2, img_barriere, 0, 360) |
|||
monde.ajouter_element("barriere", 2, img_barriere, 844, 360) |
|||
monde.ajouter_element("barriere", 2, img_barriere, 1688, 360) |
|||
|
|||
pygame.display.flip() |
|||
|
|||
if choix == 'n2': |
|||
|
|||
monde = Paysage(fenetre, img_bg_nuit, img_n2, img_goudron, img_barriere) |
|||
monde.creer_monde() |
|||
pygame.display.flip() |
|||
|
|||
#BOUCLE DE JEU |
|||
while continuer_jeu: |
|||
|
|||
#pygame.time.Clock().tick(30) #Limitation de vitesse de la boucl |
|||
|
|||
monde.deplacer_calque(1,"x", "gauche", 3, 20,1) |
|||
monde.deplacer_calque(2,"x", "gauche", 3, 844, 3) |
|||
monde.maj_calque(0) |
|||
monde.maj_calque(1) |
|||
monde.maj_calque(2) |
|||
|
|||
for event in pygame.event.get(): |
|||
|
|||
if event.type == QUIT: |
|||
continuer_jeu = 0 #Si l'utilisateur quitte, on met la variable qui continue le jeu |
|||
continuer = 0 #ET la variable générale à 0 pour fermer la fenêtre |
|||
|
|||
elif event.type == KEYDOWN: |
|||
if event.key == K_ESCAPE: |
|||
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 |
|||
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() |
|||
""" |
|||
Jeu cars and run 2D |
|||
lien du tuto http://sdz.tdct.org/sdz/interface-graphique-pygame-pour-python.html |
|||
lien pour faire des images pixeliser : pixilart.com |
|||
Script python:main, classes, constantes |
|||
""" |
|||
import pygame |
|||
from pygame.locals import * |
|||
from constantes import * |
|||
from classes import * |
|||
from random import randint |
|||
|
|||
pygame.init() |
|||
|
|||
#ouverture de la fenetre |
|||
fenetre = pygame.display.set_mode((largeur_fenetre, hauteur_fenetre)) |
|||
fenetre.fill((0,0,0)) |
|||
|
|||
#Icone |
|||
icone = pygame.image.load(image_icone) |
|||
pygame.display.set_icon(icone) |
|||
|
|||
#Titre |
|||
pygame.display.set_caption(titre_fenetre) |
|||
|
|||
lst_elements = [] |
|||
|
|||
#BOUCLE PRINCIPALE |
|||
continuer = 1 |
|||
while continuer: |
|||
|
|||
accueil = Image(fenetre, image_acceuil, 0, 0, 205, 205) |
|||
#lst_elements.append(accueil)#il me semble quepas besoin de ca |
|||
|
|||
#Rafraichissement |
|||
pygame.display.flip() |
|||
|
|||
continuer_jeu, continuer_accueil = 1, 1 #On remet ces variables à 1 à chaque tour de boucle |
|||
|
|||
#BOUCLE D'ACCUEIL |
|||
while continuer_accueil: |
|||
pygame.time.Clock().tick(30) #Limitation de vitesse de la boucle |
|||
|
|||
for event in pygame.event.get(): |
|||
|
|||
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 |
|||
|
|||
choix = 0 #Variable de choix du niveau |
|||
|
|||
elif event.type == KEYDOWN: |
|||
|
|||
if event.key == K_F1: #Lancement du niveau 1 |
|||
continuer_accueil = 0#On quitte l'accueil |
|||
choix = 'n1'#On définit le niveau à charger |
|||
|
|||
elif event.key == K_F2: #Lancement du niveau 2 |
|||
continuer_accueil = 0 |
|||
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 |
|||
|
|||
fonds = GroupeImage(fenetre) |
|||
fonds.creer_Image(img_bg, 0, 0, 290, 57) |
|||
fonds.creer_Image(img_goudron, 0, 360, 205, 205) |
|||
|
|||
nuages = GroupeImage(fenetre) |
|||
nuages.creer_Image(img_n1, 1280, 0, 290, 57) |
|||
nuages.creer_Image(img_n2, 1280, 59, 248, 58) |
|||
|
|||
barrieres = GroupeImage(fenetre) |
|||
barrieres.creer_Image(img_barriere, 0, 360, 844, 40) |
|||
barrieres.creer_Image(img_barriere, 844, 360, 844, 40) |
|||
barrieres.creer_Image(img_barriere, 844+844, 360, 844, 40) |
|||
|
|||
|
|||
|
|||
voitures = GroupeImage(fenetre) |
|||
voitures.creer_Image(img_e30, 50, 360, 205, 205) |
|||
|
|||
pygame.display.flip() |
|||
|
|||
if choix == 'n2': |
|||
|
|||
monde = Paysage(fenetre, img_bg_nuit, img_n2, img_goudron, img_barriere) |
|||
monde.creer_monde() |
|||
pygame.display.flip() |
|||
|
|||
#BOUCLE DE JEU |
|||
while continuer_jeu: |
|||
pygame.time.Clock().tick(30) #Limitation de vitesse de la boucl |
|||
|
|||
nuages.avancer(10) |
|||
barrieres.avancer(10) |
|||
|
|||
|
|||
fonds.affiche() |
|||
nuages.affiche() |
|||
barrieres.affiche() |
|||
voitures.affiche() |
|||
|
|||
for event in pygame.event.get(): |
|||
|
|||
if event.type == QUIT: |
|||
continuer_jeu = 0 #Si l'utilisateur quitte, on met la variable qui continue le jeu |
|||
continuer = 0 #ET la variable générale à 0 pour fermer la fenêtre |
|||
|
|||
elif event.type == KEYDOWN: |
|||
if event.key == K_ESCAPE: |
|||
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 |
|||
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() |
Loading…
Reference in new issue