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

Créer un jeu (style mario) avec python/pygame

Axaya0000
Axaya0000
Niveau 1
24 janvier 2018 à 10:14:22

Bonjour,

Je suis une extrême débutante. Je le précise car mon code va en désespérer plus d'un... Pour expliquer nous devons créer un jeu 2D sur pygame avec la version 2017.2.3 de python. Nous n'avons eu que 8h de cours sur python, nous avons donc appris a dessiner un rectangle, un carré, un rond... l'exercice du partiel est donc extrêmement difficile pour moi. J'essaie de fouiller les forums et tutos mais pour un novice c'est tout de même difficile.

Je cherche à créer un petit jeu. Mon personnage (Peach) doit récupérer les dollars sur son chemin afin de pouvoir acheter le château. Le perso marche donc et attrape les dollars pour arriver à la fin au château (point d'arrivée). (Sous la forme d'un jeu mario)

Je ne parviens pas à donner une position aux dollars et au chateau afin qu'ils soient positionnés par rapport au fond et non par rapport à la fenêtre. Je crois qu'on utilise des float parfois mais je ne sais pas si ça fonctionne.

Idéalement j'aimerai réussir à faire sauter peach, faire disparaitre les dollar quand elle les attrape et ajouter un compteur. Je voudrais aussi que lorsqu'elle arrive au chateau, si elle à tout les billets un message "Well Done" s'affiche ou sinon pouvoir recommencer le jeu. (Si vous avez des idées pour m'aider et que vous avez pitié d'une étudiante qui est notée au semestre sur un jeu qui dépasse ces compétences je suis prenante ^^)

voici mon code :

def load_image(name):
image = pygame.image.load(name)
return image

WHITE=(255,255,255)
BLACK=(0,0,0)
BAS = 0
HAUT = 8
DROITE = 6
GAUCHE = 4

pygame.init()
pygame.display.set_caption('Fenetre')
pygame.key.set_repeat(50, 50)

ecran = pygame.display.set_mode((700, 550))
taille_sprite = 50

class Fond(pygame.sprite.Sprite):

def __init__(self):
super(Fond, self).__init__()
self.image = pygame.image.load("monderose.jpg")
self.image.set_colorkey(WHITE)
self.rect = self.image.get_rect()

def update(self):
if self.direction==1:
self.rect.x -= 5
elif self.direction == 2:
self.rect.x += 5

  1. chateau arrivee

class Chateau(pygame.sprite.Sprite):

def __init__(self):
super(Chateau, self).__init__()
self.image = pygame.image.load("chateau.png")
self.rect = self.image.get_rect()
self.rect.x=100
self.rect.y=450

class Dollar(pygame.sprite.Sprite):

def __init__(self):
super(Dollar, self).__init__()
self.image = pygame.image.load("dollar.png")
self.rect = self.image.get_rect()
#liste_coord_dollars_pixels = [(18*taille_sprite,1*taille_sprite),(6*taille_sprite,6*taille_sprite),
# (7*taille_sprite,11*taille_sprite),(20*taille_sprite,11*taille_sprite),
# (12*taille_sprite,16*taille_sprite),(1*taille_sprite,22*taille_sprite),(6*taille_sprite,22*taille_sprite),
# (30*taille_sprite,16*taille_sprite),(17*taille_sprite,23*taille_sprite),(9*taille_sprite,25*taille_sprite)]
# liste_coord_dollars_cases = [(550,400),(800,400),(120,400),(140,300),(220,400),(300,300),(540,300),(560,400),(800,400),(870,400)]

class Peach(pygame.sprite.Sprite):

def __init__(self):
super(Peach,self).__init__()
self.images = []
self.images.append(load_image('0b.png'))
self.images.append(load_image('0d.png'))
self.images.append(load_image('0ds.png'))
self.images.append(load_image('0g.png'))
self.images.append(load_image('0gs.png'))

self.index = 0
self.image = self.images[self.index]
self.rect = self.image.get_rect()
self.direction = BAS

def update(self):

for element in self.images:

if self.direction == 1:
self.index = 1 + (self.index + 1) % 3
self.image = self.images[self.index]
self.actif = 1
self.tourne = 0
if self.tourne == 0:
self.image = pygame.transform.flip(self.image, False, False)
self.rect.x += 0.5

if self.direction == 2:
for i in range(2,5):
i = i+1
i=i%5
self.index = 1+(self.index+1)%3
self.image = self.images[self.index]
self.rect.x -= 0
self.actif =1
self.tourne = 1
if self.tourne == 1:
self.image = pygame.transform.flip(self.image, True, False)

if self.direction == 0:
self.index = 0
self.image = self.images[self.index]
self.rect.x -= 0
self.actif = 0
if self.tourne == 1:
self.image = pygame.transform.flip(self.image, True, False)
if self.tourne == 0:
self.image = pygame.transform.flip(self.image, False, False)

#if self.direction == 3:
# self.rect.y += 5

if self.rect.x == 0:
self.rect.x = 10

if self.direction == 3:
self.rect.y =+ 5

liste_sprites=pygame.sprite.Group()

monsprite=Fond()
monsprite1=Dollar()
monsprite2=Chateau()
monsprite3=Peach()

Peachs=pygame.sprite.Group()
Peachs.add(monsprite)
Peachs.add(monsprite1)
Peachs.add(monsprite2)
Peachs.add(monsprite3)

monsprite.rect.x=-200
monsprite.rect.y=0
monsprite.change = 0
monsprite.direction = 0
monsprite.tourne =0
monsprite.actif =0

monsprite1.rect.x=400
monsprite1.rect.y=140

monsprite2.rect.x=500
monsprite2.rect.y=180

monsprite3.rect.x=300
monsprite3.rect.y=405
monsprite3.change = 0
monsprite3.direction = 0
monsprite3.tourne =0
monsprite3.actif =0

clock = pygame.time.Clock()
clock.tick(60)

while True:
Peachs.update()
Peachs.draw(ecran)
pygame.display.flip()

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()

elif event.type == KEYDOWN:
touches = pygame.key.get_pressed()

if touches[K_RIGHT]:
monsprite.direction = 1
monsprite3.direction = 1
if touches[K_LEFT]:
monsprite.direction = 2
monsprite3.direction = 2

if touches[K_UP]:
monsprite.direction = 3

elif event.type == KEYUP:
monsprite.direction = 0
monsprite3.direction = 0

#i = len(liste_coord_dollars_cases)
#while i: # equivalent a i != 0
# if (monsprite3.rect.x == liste_coord_dollars_cases[i - 1]):
# print("+1")
# i -= 1

pygame.display.update()

[-Shana-]
[-Shana-]
Niveau 10
24 janvier 2018 à 12:09:51

"Je ne parviens pas à donner une position aux dollars et au chateau afin qu'ils soient positionnés par rapport au fond et non par rapport à la fenêtre. Je crois qu'on utilise des float parfois mais je ne sais pas si ça fonctionne."
:d) ça sera toujours par rapport à la fenêtre, si tu as une fenêtre de 800 x 600 et un fond de 1280 x 600, et que tu veux placer ton chateau tout à droite (en dehors de l'écran donc), tu auras une position par exemple de [1200, 400] :oui:
Après c'est une histoire de caméra à déplacer (qui fera déplacer en quelque sorte le monde à gauche ou à droite par rapport à sa vue) :oui:

Concernant le saut, il faut simuler une physique à base de vecteur de vélocité, c'est le plus simple. Ce vecteur grandis au fur et à mesure du temps s'il n'y a pas de collision, et ta position est égale à ta position + ta vélocité :oui:

Après le plus simple c'est de taper "tutorial platformer 2d pygame" et tu auras pas mal de trucs (j'ai vérifié) :oui:

[-Shana-]
[-Shana-]
Niveau 10
24 janvier 2018 à 12:10:36

PS : Le code python, colle le ici la prochaine fois, car le python utilise de l'indentation et là c'est illisible :oui:
:d) https://pastebin.com/

wol_lay
wol_lay
Niveau 10
25 janvier 2018 à 12:48:58

Je t'aiderai bien je suis en train de développer un shoot'them'up avec pygame mais comme a dit mon VDD il faut l'indentation:hap:

Pseudo supprimé
Pseudo supprimé 25 janvier 2018 à 22:36:27

Jette un coup d'oeil à ce tuto :

https://www.youtube.com/playlist?list=PLsk-HSGFjnaG-BwZkuAOcVwWldfCLu1pq

Il s'agit d'un jeu de plateforme avec pygame, tout y est décrit.

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