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:40:18

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

hexabeast
hexabeast
Niveau 9
06 avril 2015 à 11:33:28

C'est sûr qu'avec un long code mal organisé, pas indenté, et avec aucune infos sur ton projet, ça va pas être facile de t'aider.

Pour l'instant la seule chose que je saurais te recommender serait d'éviter les gros tableaux de 0 direct dans le code (load ça à partir d'un fichier, ou fait le au moins avec un for, ce sera bien plus propre), et aussi d'éviter d'utiliser des nombres directement dans le code, surtout quand y'a pas de commentaire. Par exemple là:
if 137<xMarceline<159 or 417<xMarceline<442 or 509<xMarceline<532:
if yMarceline == 322:

Y'a pas vraiment moyen de voir à quoi ça correspond tous ces nombres.

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