Bonjour à tous,
je suis un élève en Terminale S, et j'aurais besoin de votre aide. Alors voila, je suis en spé ISN (informatique) et je dois créer un jeu pour la fin de l'année. Le seul problème est que mon programme d’après mon prof, me mène droit dans un mur et il me conseille donc de transformer le code en code s'apparentant à la programmation orientée objet(classes,self..), Mais le problème est que je ne sais pas du tout par ou commencer. Donc si vous pouviez juste me dire par ou commencer, ce serait génial. Merci beaucoup d'avance.
Voici mon code :import pygame
import random
from GIFImage import *
pygame.init()
fenetre = pygame.display.set_mode( (700,400), RESIZABLE )
pygame.display.set_caption("Twisted fates")
pygame.Surface((700,400))
imageLogo = pygame.image.load("logo.png")
imageLogo = pygame.transform.scale(imageLogo,(400,150))
imagejouer = pygame.image.load("Play.png")
imagejouer = pygame.transform.scale(imagejouer,(100,50))
imagecontrol = pygame.image.load("Controls.png")
imagecontrol = pygame.transform.scale(imagecontrol,(100,50))
background = pygame.image.load("fond.jpg")
imagebs = pygame.image.load("Best_scores.png")
imagebs = pygame.transform.scale(imagebs,(100,50))
imagecarre = pygame.image.load("Carre.png")
imagecarre = pygame.transform.scale(imagecarre,(100,3))
monde=pygame.image.load("Fond2.png")
imgMarcelineDroite = GIFImage("Marceline(normal).gif")
imgMarcelineStatique = pygame.image.load("MarcelineStatique.png")
imgMarcelineJump=pygame.image.load("Marceline(Jump).png")
imgMarcelineJumpGauche=pygame.image.load("Marceline(Jump)2.png")
imgMarcelineGauche=GIFImage("Marceline(2)(normal).gif")
imgMarcelineStatiqueGauche=pygame.image.load("Marceline(2)1.png")
imagebarre = GIFImage("ajax.gif")
imagecontrolecran = pygame.image.load("controlsecran.png")
imagecoeur = pygame.image.load("heart.png")
positionbackground=(0,0)
positionlogo = (150,0)
positionjouer = (325,125)
positionbs = (325,325)
positioncontrols = (325,225)
positioncarre= (325,175)
projectile=None
xMarceline = 10
yMarceline=322
mouvementMarceline = 0
xMonde=0
etapeSaut = -1
carre=0
modedejeu=1
loading = 0
a=0
direction = 0
Plateformes = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
def dessinermenu():
global fenetre,imagejouer,imageLogo,background,positionbackground,imagebs,positionbs,imagecontrol,positioncontrols,imagecarre,positioncarre
fenetre.blit(background,positionbackground)
fenetre.blit(imageLogo,positionlogo)
fenetre.blit(imagejouer,positionjouer)
fenetre.blit(imagebs,positionbs)
fenetre.blit(imagecontrol,positioncontrols)
fenetre.blit(imagecarre,positioncarre)
pygame.display.flip()
def dessinerchargement():
global imagebarre,fenetre,background,positionbackground,loading,modedejeu
fenetre.blit(background,positionbackground)
imagebarre.render(fenetre,(325,175))
loading=loading+1
if loading==200:
modedejeu=3
pygame.display.flip()
def gererClavierEtSouris():
global positioncarre,carre,continuer,i,positioncarre1,positioncarre2,modedejeu,loading
for event in pygame.event.get():
if event.type == pygame.QUIT:
continuer = False
touchesPressees = pygame.key.get_pressed()
if touchesPressees[pygame.K_ESCAPE] == True:
modedejeu = 1
loading = 0
if carre == 1:
positioncarre = positioncarre1
if carre == 2:
positioncarre = positioncarre2
if carre == 0:
positioncarre = positioncarre
sourisXY = pygame.mouse.get_pos()
sourisBoutons = pygame.mouse.get_pressed()
if 125<sourisXY[1]<175:
if 325<sourisXY[0]<425:
positioncarre = (325,175)
if sourisBoutons[0]==1:
modedejeu = 2
if 225<sourisXY[1]<275:
if 325<sourisXY[0]<425:
positioncarre = (330,260)
if sourisBoutons[0]==1:
modedejeu = 4
if 325<sourisXY[1]<375:
if 325<sourisXY[0]<425:
positioncarre = (330,355)
def controls():
global fenetre,background,positionbackground,imagecontrolecran
fenetre.blit(background,positionbackground)
fenetre.blit(imagecontrolecran,(0,0))
pygame.display.flip()
def modemenu():
dessinermenu()
def calculerHauteurSaut(x):
return int(((-1)*((x-8)*(x-8)))+64)
def dessinerjeu():
##On génère le monde.
global monde,positionmonde, xMonde
fenetre.blit(monde,(xMonde,0))
##On définit le scrolling et on le stoppe aux deux extrêmités de l'image.
touchesPressees=pygame.key.get_pressed()
if touchesPressees[pygame.K_RIGHT]== True and xMonde>-2800:
xMonde=xMonde-4
fenetre.blit(monde,(xMonde,0))
if touchesPressees[pygame.K_LEFT]== True and xMonde<0: #On empêche le scrolling en arrière en début de monde.
xMonde=xMonde+4
fenetre.blit(monde,(xMonde,0))
##On place notre personnage dans le monde et on lui permet de sauter.
global mouvementMarceline, xMarceline, imgMarcelineDroite, imgMarcelineStatique,yMarceline,modedejeu,loading,a,imgMarcelineJump, imgMarcelineStatiqueGauche, imgMarcelineGauche, Plateformes
a=yMarceline-calculerHauteurSaut(etapeSaut)-18
if mouvementMarceline == 0:
if etapeSaut<0:
fenetre.blit(imgMarcelineStatique, (xMarceline,a))
elif etapeSaut>0:
fenetre.blit(imgMarcelineJump,(xMarceline,a))
elif mouvementMarceline == 1:
if etapeSaut<0:
imgMarcelineDroite.render(fenetre, (xMarceline,a))
elif etapeSaut>0:
fenetre.blit(imgMarcelineJump,(xMarceline,a))
pygame.display.flip() #Rafraichissement complet de la fenêtre avec les dernières opérations de dessin.
if 137<xMarceline<159 or 417<xMarceline<442 or 509<xMarceline<532:
if yMarceline == 322:
yMarceline=350
else:
yMarceline=322
if a ==349:
modedejeu = 1
loading = 0
xMarceline = 10
def ClavierEtSourisJeu():
global continuer, xMarceline, mouvementMarceline, yMarceline, etapeSaut, imgMarcelineJump, direction, mouvementMarceline, xMarceline, imgMarcelineDroite, imgMarcelineStatique, imgMarcelineJump, imgMarcelineStatiqueGauche, imgMarcelineGauche
##On crée un bouton pour quitter la fenètre.
for event in pygame.event.get():
if event.type == pygame.QUIT:
continuer = False
##On définit le déplacement.
touchesPressees = pygame.key.get_pressed()
if touchesPressees[pygame.K_RIGHT] == True:
mouvementMarceline = 1
xMarceline = xMarceline + 1
elif touchesPressees[pygame.K_LEFT] == True:
mouvementMarceline = 1
xMarceline = xMarceline - 1
else:
mouvementMarceline = 0
##On permet d'afficher un personnage qui va soit vers la gauche soit vers la droite.
if touchesPressees[pygame.K_LEFT]== True:
imgMarcelineJump=imgMarcelineJumpGauche
imgMarcelineStatique=imgMarcelineStatiqueGauche
imgMarcelineDroite=imgMarcelineGauche
elif touchesPressees[pygame.K_RIGHT]== True:
imgMarcelineJump=pygame.image.load("Marceline(jump).png")
imgMarcelineStatique=pygame.image.load("MarcelineStatique.png")
imgMarcelineDroite=GIFImage("Marceline(normal).gif")
##On active le calcul des x pour permettre le saut.
if touchesPressees[pygame.K_UP]==True and etapeSaut == -1:
etapeSaut = 0
def modejeu():
global etapeSaut
ClavierEtSourisJeu()
dessinerjeu()
if etapeSaut >= 0: #Si etapeSsaut est >0, on saute. On va faire avancer etapeSaut pas à pas de 0 à 16.
etapeSaut += 0.6
if etapeSaut > 16:#Le saut étant fini, on réinitialise à etapeSaut=-1.
etapeSaut = -1
clock = pygame.time.Clock()
continuer=True
while continuer:
clock.tick(50)
if modedejeu ==1:
modemenu()
if modedejeu == 2:
dessinerchargement()
if modedejeu == 3:
modejeu()
if modedejeu ==4:
controls()
gererClavierEtSouris()
print (a)
print (yMarceline)
pygame.quit()
Salut
J'ai lu ton code et c'est un bon début.
La POO (programmation Orientée Object) est une philosophie dans laquel tu créer des "objets" qui contiennent leur données et les fonctions qui leur sont associées.
Dans ton jeu, il faut regarder ce qui peut être mis sous forme d'objet. Sans trop reflechir, je me dis que le premier objet serait "Joueur".
Les données qui lui sont associées :
sa position
etape saut
Les fonctions:
Sauter
Calculetapessaut
Ensuite tu as juste à faire:
joueur.setposition(122,122)
joueur.calculeretapesaut.
C'est plus propre au niveau de l'écriture.
@lapintade Merci beaucoup pour ton aide! Je vais essayé de faire comme ça. Encore merci!
@whiteapplex j'y penserais ;) , je connaissais pas du tout.
Pour le : Plateformes = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
fait des boucles car la c'est horrible ;)
Si tu veux de l'aide pour ton projet ISN, je peux te filer un petit coup de main, j'ai pas mal d'expérience avec Python / Pygame, si tu as Skype ou un truc du genre je peux consacrer un peu de temps à ton projet ![]()