Probleme Pyxel banque d'image

Fermé
Athelas Messages postés 4 Date d'inscription mardi 10 janvier 2023 Statut Membre Dernière intervention 13 janvier 2023 - Modifié le 17 janv. 2023 à 18:52
Athelas Messages postés 4 Date d'inscription mardi 10 janvier 2023 Statut Membre Dernière intervention 13 janvier 2023 - 13 janv. 2023 à 16:23

Bonjour,

Est-ce que quelqu'un aurait un peu de temps pour échanger sur Discord au sujet du développement d'un petit jeu sur Pyxel.

Je n'arrive pas à charger la banque d'image (et je serais surpris qu'il s'agisse du seul problème) :

La tête du programme :

import pyxel, random

scroll_x = 0
player = None
enemis =[]

class Chevalier:
    def init(self, x, y):
        self.x = x
        self.y = y
        self.dx = 0
        self.dy = 0
        self.direction = 1
        self.tombe = False
        
    def déplacelemnt (self):
        
        """déplacement avec les touches de directions"""
        
        if pyxel.btn(pyxel.KEY_RIGHT) and self.chevalier_x < 120:
            self.chevalier_x += 1
        if pyxel.btn(pyxel.KEY_LEFT) and self.chevalier_x > 0:
            self.chevalier_x -= 1
        if pyxel.btn(pyxel.KEY_UP) and self.chevalier_y > 0:
            self.chevalier_y -= 1
        if pyxel.btn(pyxel.KEY_DOWN) and self.chevalier_y < 120:
            self.chevalier_y += 1
    
    def draw(self):
        pyxel.cls(0)
        if self.vies > 0 :
            pyxel.blt(self.chevalier_x, self.chevalier_y, 8, 8, 9)
            
class Dragon:
    def init(self, x, y):
        self.x = x
        self.y = y
        self.dx = 0
        self.dy = 0
        self.direction = -1
        self.is_alive = True
        
    def déplacement(self):
        self.dx = self.direction
        self.dy = min(self.dy +1, 3)
        
    def draw(self):
        pyxel.cls(0)
        if self.vies > 0 :
            pyxel.blt(self.dragon_x, self.dragon_y, 0, u, 32, 8, 8)
            
class App:
    def init(self):
        pyxel.init(128, 128, title="Mystère")
        pyxel.load("assets/platformer.pyxres")
        
    def draw(self):
        pyxel.cls(0)
        
        pyxel.camera(scroll_x, 0)
        player.draw()
    
App()

Je n'ai pas d'erreur à l'execution mais rien ne se lance.

D'avance merci !

Windows / Firefox 108.0

A voir également:

3 réponses

yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 Ambassadeur 1 541
12 janv. 2023 à 16:15

bonjour,

quand tu partages du code, tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Quand une classe définit une méthode __init__(), l’instanciation de la classe appelle automatiquement __init__() pour la nouvelle instance de la classe.

0
Athelas Messages postés 4 Date d'inscription mardi 10 janvier 2023 Statut Membre Dernière intervention 13 janvier 2023
12 janv. 2023 à 16:43
import pyxel

scroll_x = 0
player = None
enemis =[]

class Chevalier:
    def init(self, x, y):
        self.x = x
        self.y = y
        self.dx = 0
        self.dy = 0
        self.direction = 1
        self.tombe = False
        
    def déplacelemnt (self):
        
        """déplacement avec les touches de directions"""
        
        if pyxel.btn(pyxel.KEY_RIGHT) and self.chevalier_x < 120:
            self.chevalier_x += 1
        if pyxel.btn(pyxel.KEY_LEFT) and self.chevalier_x > 0:
            self.chevalier_x -= 1
        if pyxel.btn(pyxel.KEY_UP) and self.chevalier_y > 0:
            self.chevalier_y -= 1
        if pyxel.btn(pyxel.KEY_DOWN) and self.chevalier_y < 120:
            self.chevalier_y += 1
    
    def draw(self):
        pyxel.cls(0)
        if self.vies > 0 :
            pyxel.blt(self.chevalier_x, self.chevalier_y, 8, 8, 9)
            
class Dragon:
    def init(self, x, y):
        self.x = x
        self.y = y
        self.dx = 0
        self.dy = 0
        self.direction = -1
        self.is_alive = True
        
    def déplacement(self):
        self.dx = self.direction
        self.dy = min(self.dy +1, 3)
        
    def draw(self):
        pyxel.cls(0)
        if self.vies > 0 :
            pyxel.blt(self.dragon_x, self.dragon_y, 16, 16, 16)
            
class App:
    def init(self):
        pyxel.init(128, 128, title="Mystère")
        pyxel.load("assert/platformer.pyxres")
        
    def draw(self):
        pyxel.cls(0)
        
        pyxel.camera(scroll_x, 0)
        player.draw()
    
App()

Toutes mes excuses, j'espère que c'est mieux.

0
yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024 1 541
12 janv. 2023 à 18:34

Tu as lu ma seconde phrase?  init() ne sert à rien.

0
Athelas Messages postés 4 Date d'inscription mardi 10 janvier 2023 Statut Membre Dernière intervention 13 janvier 2023 > yg_be Messages postés 23242 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 4 octobre 2024
12 janv. 2023 à 22:58

Oui j'ai lu merci, j'ai essayé de procéder autrement, ca avance gentiement, j'ai le fond je cherche à intégrer mon personnage par dessus.

0
Athelas Messages postés 4 Date d'inscription mardi 10 janvier 2023 Statut Membre Dernière intervention 13 janvier 2023
13 janv. 2023 à 16:23
import pyxel
pyxel.init(128, 128, title="Mystère")
pyxel.load("images.pyxres")
pyxel.playm(0, loop=True)

##########################
# APPARENCE DU CHEVALIER #
##########################

def affiche_chevalier():
    pyxel.blt(chevalier_x, chevalier_y, 0, 0, 48, 20, 32, 0)

def attaque_chevalier():
    pyxel.blt(chevalier_x, chevalier_y, 0, 24, 48, 32, 32, 0)

##################
# GESTION DU JEU #
##################

def update():
    global x

    if pyxel.btn(pyxel.KEY_D) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_RIGHT):
        if (x < 990) :
            x = x + 5
    if pyxel.btn(pyxel.KEY_Q) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_DPAD_LEFT):
        if (x > 0) :
            x = x - 5

#    if pyxel.btnr(pyxel.KEY_SPACE):

    if pyxel.btnp(pyxel.KEY_ESCAPE) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_START):
        pyxel.quit()

def draw():
    pyxel.cls(0)
    pyxel.bltm(0, 0, 0, x, 0, 128, 128)
    affiche_chevalier()
    if pyxel.btn(pyxel.KEY_CTRL) or pyxel.btn(pyxel.GAMEPAD1_BUTTON_X):
        pyxel.cls(0)
        pyxel.bltm(0, 0, 0, x, 0, 128, 128)
        attaque_chevalier()

########################
#  PROGRAMME PRINCIPAL #
########################

chevalier_x = 10
chevalier_y = 74

x = 0

# Lancement du jeu
pyxel.run(update, draw)

Cette fois j'ai le decor, la musique, le chevalier, le scrolling.
Il me reste les sauts et la physique du sol et des plateformes à intégrer.

0