AttributeError: type object 'X' has no attribute 'X'
theolefou
Messages postés
16
Statut
Membre
-
theolefou Messages postés 16 Statut Membre -
theolefou Messages postés 16 Statut Membre -
bonjours a tous,
j'ai un petit problème au niveau d'un attribut de classe mais je ne voit pas d'ou est-ce que cela vient!
quand je fait:
il me renvoie:
voici le code complet de la classe niveau :
et celui de la class perso :
je suis desoler pour la norme j'ai lut tout sa il y a pas longtemp et avant de tout bouger et modifier ( les importation bizzare) je veux déja avoir un programme qui marche.
bref si quelqu'un a une idée ou une piste elle est la bienvenue par ce que je suis un peut perdue la j'ai tester plein de truc je suis aller voir a droite a gauche sur google mais soit je comprend rien de ce qu'il dise soit je n'arrive pas à l'appliqué à mon programe :/
en tout cas merci d'avance!
j'ai un petit problème au niveau d'un attribut de classe mais je ne voit pas d'ou est-ce que cela vient!
quand je fait:
def gravite (self):
if self.rect_p.collidelist(niveau.list_rect_plat):
print ("ok")
il me renvoie:
in gravite
if self.rect_p.collidelist(niveau.list_rect_plat):
AttributeError: type object 'niveau' has no attribute 'list_rect_plat'
voici le code complet de la classe niveau :
import pygame
from pygame import *
class niveau:
""" creation de niveau """
nombre_sprite_haut = 30 #nombrede ligne = hauteur
nombre_sprite_long = 60 #nombre de sprite par ligne
taille_sprite = 20 #nombre de pixel par sprite
taille_haut = (nombre_sprite_haut * taille_sprite)
taille_long = (nombre_sprite_long * taille_sprite)
def __init__(self,fichier):
self.fichier = fichier
self.structure = 0
# dans la construction de la map la ou je veux laisser le fond apparend
# je place un 0
def generer(self):
""" generation du niveau en fonction du fichier """
with open(self.fichier, "r") as fichier:
structure_niveau = []
for ligne in fichier:
ligne_niveau = []
#parcourt les ligne du fichier
for sprite in ligne:
if sprite != '\n':
ligne_niveau.append(sprite)
# parcourt les sprite du fichier et ignore les \n
structure_niveau.append(ligne_niveau)
self.structure = structure_niveau
#ajout les sprites et les lignes dans les differentes liste
#et sauvgarde de la structure general
def affichier(self, fenetre):
""" generation de l'affichage en fonction du generer """
plateforme = pygame.image.load("sol.png").convert_alpha()
plateforme = pygame.transform.scale(plateforme, (20, 20))
arrivee = pygame.image.load("Finish.png").convert_alpha()
arrivee = pygame.transform.scale(arrivee, (20, 20))
self.coor_y_plat = []
self.coor_arrive = []
self.list_rect_plat = []
num_ligne = 0
for ligne in self.structure:
#parcourt la liste du niveau
num_case = 0
y = num_ligne * self.taille_sprite
for sprite in ligne:
#parcourt les liste de ligne
x = num_case * self.taille_sprite
#calcul la position reel en pixel
if sprite =="p": # p = plateforme
fenetre.blit(plateforme, (x,y))
self.coor_y_plat.append((y))
elif sprite == "a": # a = arriver
fenetre.blit(arrivee, (x,y))
num_case += 1
self.pos_plat = pygame.Rect(x, y, plateforme.get_width(), plateforme.get_height())
self.list_rect_plat.append(self.pos_plat)
num_ligne += 1
print(self.list_rect_plat)
et celui de la class perso :
import pygame
from pygame import *
from pygame.locals import *
import class_niveau
from class_niveau import *
pygame.init()
class perso:
"""creation du personnage"""
gravite = -3
# ce qui est entre parenthese est rentree chaque instance de perso
def __init__(self, y, acteur,x = 0):
# Sprite du perso
self.acteur = acteur
self.acteur = pygame.image.load("perso.png").convert_alpha()
#position du perso
self.pos_x = x
self.pos_y = y
self.pos_p = (self.pos_x, self.pos_y)
self.next_pos_x = self.pos_x + 1
self.next_pos_y = self.pos_y + 1
self.next_pos_p = (self.next_pos_x, self.next_pos_y)
self.rect_p = Rect(self.next_pos_x, self.next_pos_y, self.acteur.get_width(), self.acteur.get_height())
def deplacement (self, direction):
"""deplacement du perso"""
#deplacement vers la droite
if direction == "droite" and self.next_pos_x != 'p':
self.pos_x -= 1
#deplacment vers la gauche
if direction == "gauche"and self.next_pos_x != 'p':
self.pos_x += 1
def action (self, do):
""" action possible du personnage"""
if do == "jump" and self.next_pos_y != 'p':
self.pos_y -= 50
def gravite (self):
if self.rect_p.collidelist(niveau.list_rect_plat):
print ("ok")
je suis desoler pour la norme j'ai lut tout sa il y a pas longtemp et avant de tout bouger et modifier ( les importation bizzare) je veux déja avoir un programme qui marche.
bref si quelqu'un a une idée ou une piste elle est la bienvenue par ce que je suis un peut perdue la j'ai tester plein de truc je suis aller voir a droite a gauche sur google mais soit je comprend rien de ce qu'il dise soit je n'arrive pas à l'appliqué à mon programe :/
en tout cas merci d'avance!