CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide programmation orienté objet Pyton Pygame

poiuy281
poiuy281
Niveau 1
05 avril 2015 à 21:39:57

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()

Lapintade
Lapintade
Niveau 30
06 avril 2015 à 14:17:57

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.

poiuy281
poiuy281
Niveau 1
06 avril 2015 à 19:10:34

@lapintade Merci beaucoup pour ton aide! Je vais essayé de faire comme ça. Encore merci!
@whiteapplex j'y penserais ;) , je connaissais pas du tout.

jakocube
jakocube
Niveau 6
06 avril 2015 à 21:24:45

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 ;)

Biolixe
Biolixe
Niveau 6
08 avril 2015 à 02:23:02

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 :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment