Problèmes Python-Pygame création d'un jeu en scrolling horizontal.

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

ronan77360

Membre
Oct 1, 2012
18
0
206
Bonjour, j'ai quelques soucis avec le module Pygame.

J'essaye depuis quelques temps de créer un jeu en scrolling horizontal en 2D avec le module Pygame avec un pote mais venant de commencer à programmer j'ai quelques problèmes.

Bon, tout d'abord je n'ai aucune idée de comment déplacer l'écran en fonction du personnage. Si vous pouviez m'expliquez quoi utiliser j'en serrais immensément heureux :P

Pour l'instant pour ce qui est du graphisme on n'a pas trop de soucis, on a les images des ennemis, de la barre de vie et du héros donnant une impression de mouvement. Alors par contre pour ce qui est de l'insérer dans le code lors du déplacement, sans guide, ça relève du suicide x) .

Après j'ai un autre problème aussi important, je n'arrive pas à mettre mon image de menu pour le début du jeu. J'ai essayé de le mettre au début avec le code de base, puis d'initialiser les personnages et le décors dans la boucle et faire une troisième grande boucle pour les déplacements ect... Mais c'est vraiment un calvaire et je n'ai pas l'impression que mon idée fonctionne :/ .

Voilà les problèmes principaux que l'on rencontre, après il nous faudra coder les IA des ennemis, coder la perte de vie et la musique ( on a déjà un son d'enfer :D ).

Pour l'instant ce n'est pas de gros problèmes et puis je suis concentré sur les trois premiers du coup je verrais après si j'ai besoin d'aide pour ça ^^ .

Pouvez me dire mes éventuelles erreurs pour que je puisse les corriger et me dire quelles variable utiliser pour mes trois problèmes principaux please ? :)

Par contre, évitez de me faire tout le travail sinon c'est pas drôle pour moi :P .

Je vous met ci-dessous plusieurs parties de mon code:

import pygame
import sys

pygame.init()

fenetre = pygame.display.set_mode((640, 480))
fond = pygame.image.load("le liens de l'image ^^").convert()
fenetre.blit(fond, (0,0))

perso = pygame.image.load("le lien de l'image ^^").convert()
position_perso = perso.get_rect(center = (200, 250))
perso.set_colorkey((255,255,255))
fenetre.blit(perso, position_perso)

mechant = pygame.image.load("le lien de l'image ^^").convert
position_mechant = mechant.get_rect(center = (0, 0))
mechant.set_colorkey((255,255,255))
fenetre.blit(mechant, position_mechant)
# Le mechant ne s'affiche pas :/

vie = pygame.image.load("le liens de l'image ^^").convert()
position_vie = vie.get_rect(center = (-15, -35))
vie.set_colorkey((255,255,255))
fenetre.blit(vie, position_vie)

pygame.display.flip()

pygame.key.set_repeat(100, 20)
#pour déplacer plusieurs fois le héros en laissant la touche enfoncée

#et voici la boucle principale

continuer = 1
while continuer:
for event in pygame.event.get(): #Attente des événements
if event.type == pygame.QUIT:
continuer = 0
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:

position_perso = position_perso.move(0,3)
if event.key == pygame.K_DOWN:

position_perso = position_perso.move(0,3)
if event.key == pygame.K_UP:

position_perso = position_perso.move(0,-3)
if event.key == pygame.K_RIGHT:

position_perso = position_perso.move(3,0)
if event.key == pygame.K_LEFT:

position_perso = position_perso.move(-3,0)
#Re-collage
fenetre.blit(fond, (0,0))
fenetre.blit(perso, position_perso)
fenetre.blit(vie, (-15,-35))
#Rafraichissement
pygame.display.flip()

pygame.quit()

sys.exit()

Et voici mon code pour ce projet, pour l'instant c'est pas tiptop du coup si vous avec des critiques à a faire, ect... je suis preneur.

Ah oui on m'a aussi conseillé d'ordonner mon travail en faisant plusieurs fichiers pygame. Si vous pouvez me dire comment le faire théoriquement ce serrait parfait :P .

Voilà voilà je pense que je n'ai rien oublié, n'hésitez surtout pas à me répondre même si c'est pour une petite correction ou un petit conseil, il serra toujours le bienvenu.

Si vous voulez de précisions ou autre n'hésitez pas à m'envoyer des messages privé ou à me la poser directement sur ce sujet :P.

Merci infiniment pour toutes vos aides/conseils futurs :D
 

ronan77360

Membre
Oct 1, 2012
18
0
206
Merci, j'ai un peu regardé. Je vais voir si je peux l'utiliser pour réussir mon scrolling :P

Si vous avez d'autres propositions, aide etc... N'hésitez pas :P !

---------- Message ajouté à 21h05 ---------- Le message précédent était à 15h17 ----------

Alos pour ce qui est du menu, maintenant j'arrive à l'afficher mais après pour ce qui est d'initialiser la "partie jeu" de mon programme, c'est à dire la barre de vie, les persos etc... Du coup ça reste sur le menu. Si quelqu'un à un exemple type ou autre qui me permettrait de me débloquer je ne suis pas contre. Pitié... :P
 
Mar 30, 2011
1,014
1
944
In Your Ass
Salut

Quand tu post du code utilise la bonne balise sinon c est imbuvable

Bon je n avais jamais toucher au Python mais ça a l air sympa

je te donne un exemple de scrolling multidirectionnel basic

Une dizaine de logo se baladent sur un fond qui pourrait être un décors de level de jeux

Code:
# les importations de lib
import pygame
from pygame import *
import random
from random import randrange

# initialisation
pygame.init()

# definition de l ecran (taille et titre)
screen=pygame.display.set_mode((640, 200))
pygame.display.set_caption('Test jeux')


# mon fond qui sert de decord style "level" pour l exemple
fond = pygame.image.load("birds.jpg")

logo = pygame.image.load("ROeuf.jpg")
# tableau position des logo
position=[]
for i in range(10):
    position.append([0]*4)

for n in range(10):
    position[n][0]=random.randint(5,640-53)
    position[n][1]=random.randint(5,200-37)
    position[n][2]=1
    position[n][3]=1

# une horloge pour un truc a peut pres fluide
clock=pygame.time.Clock()

# initialisation variable pour position et mouvement du fond
fond_x=0
sens_x=-1
fond_y=0
sens_y=-1

# on affiche
screen.blit(fond, (fond_x,fond_y))
pygame.display.update()


while not(pygame.key.get_pressed() [K_SPACE]): # pressez espace pour arreter
    clock.tick(60) # pause ;)
    fond_x=fond_x + sens_x # incrementation des positions x et y du fond
    fond_y=fond_y + sens_y
    
    if (fond_x == -1024+640 ): # test des depassements axe X
        sens_x = 1
    if (fond_x == 0 ):
        sens_x = -1

    if (fond_y == -768+200 ): # test des depassements axe X
        sens_y = 1
    if (fond_y == 0 ):
        sens_y = -1

    screen.blit(fond, (fond_x,fond_y)) # affichage nouvelle position
# affichage des logo
    for n in range(10):
        position[n][0]=position[n][0]+position[n][2]
        if (position[n][0] >= 640-48 ): # position x
            position[n][2]=-1
        if (position[n][0] <= 0 ): # position x
            position[n][2]=2
        position[n][1]=position[n][1]+position[n][3]
        if (position[n][1] >= 200-32 ): # position y
            position[n][3]=-2
        if (position[n][1] <= 0 ): # position y
            position[n][3]=1

        screen.blit(logo, (position[n][0],position[n][1])) # affichage des logos
        

    pygame.display.update() # rafraichissement
    pygame.event.pump() # et on recommence
 

pygame.quit()


les images en fichier joint a dezziper dans le répertoire du source

les positions des logo sont géré dans le tableau "position"
et le mouvement du fond géré de la meme facon mais sans tableau


le seul truc que tu devrais prendre le temps de faire c est plein de tuto sur le python
tu ne coderas pas un bon truc juste comme ca du jour au lendemain
 

Attachments

  • pygame_test.rar
    166.1 KB · Views: 2

ronan77360

Membre
Oct 1, 2012
18
0
206
Bon ayant légèrement le seum de réécrire pour la troisième fois mon message je vais faire bref (oui parce que je suis une quiche et du coup j'ai pas copié ce que j'écrivais).

Tout d'abord merci à vous pour votre précieuse aide, j'ai fini de raccorder boucle de menu et jeu, il me reste IA des mobs (j'ai rien compris donc si un mec chaud à que ça à faire n'hésitez pas à me faire un tuto ou mp ect), pour le mouvement des personnages avec les différentes images je crois qu'il faut faire un tableau mais alors là franchement c'est la bulle, je sais même pas par ou commencer :/ .

Après j'ai un ptit prob avec le perso, si je mets pas de "murs virtuels" mon perso vole et/ou fait du hors map, du coup il faudrait que j'arrive à faire des murs mais alors là c'est la bulle, je ne sais pas du tout comment faire.

D'ailleurs si un mec chaud en Python/Pygame passe par là et qu'il à du temps à perdre je suis dispo sur Skype ou d'autres logiciels de communication. N'hésitez surtout pas à me mp pour tout et n'importe quoi, même pour troll ( je me ferais un plaisir de vous troller en retour :D ).
 
Mar 30, 2011
1,014
1
944
In Your Ass
Bon ayant légèrement le seum de réécrire pour la troisième fois mon message je vais faire bref (oui parce que je suis une quiche et du coup j'ai pas copié ce que j'écrivais).

Tout d'abord merci à vous pour votre précieuse aide, j'ai fini de raccorder boucle de menu et jeu, il me reste IA des mobs (j'ai rien compris donc si un mec chaud à que ça à faire n'hésitez pas à me faire un tuto ou mp ect), pour le mouvement des personnages avec les différentes images je crois qu'il faut faire un tableau mais alors là franchement c'est la bulle, je sais même pas par ou commencer :/ .

Après j'ai un ptit prob avec le perso, si je mets pas de "murs virtuels" mon perso vole et/ou fait du hors map, du coup il faudrait que j'arrive à faire des murs mais alors là c'est la bulle, je ne sais pas du tout comment faire.

D'ailleurs si un mec chaud en Python/Pygame passe par là et qu'il à du temps à perdre je suis dispo sur Skype ou d'autres logiciels de communication. N'hésitez surtout pas à me mp pour tout et n'importe quoi, même pour troll ( je me ferais un plaisir de vous troller en retour :D ).

Tu peux regarder dans mon source pour un exemple de tableau
ainsi qu system simple ,pour ne pas sortir de l ecran ,utilisé pour les logo