IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Créer et instancier objet


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut Créer et instancier objet
    Salut a tous,

    je n'arrive pas a creer et instancier mon objet carte du fichier carte.py dans mon fichier roboc.py pour pouvoir lire mes cartes

    merci d'avance


    fichier carte.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    # -*-coding:Utf-8 -*
    import os 
    #Module classe carte
     
     
     
     
    partieEnregistree = "partie"
     
    #Classe de la carte 
    class Carte:
     
     
     
    	def __init__(self, nom, chaine):
    		self.nom = nom
    		self.labyrinthe = chaine
     
     
     
    	def __repr__(self):
    		return "<Carte {}>".format(self.nom)
     
     
     
    	def size(self):
     
    		absc = len(self.enregistrement[0])		
    		ordo = len(self.enregistrement)
     
    		return(absc, ordo)
     
     
    #Fonction pour afficher et choisir la carte
     
    	def carte(self):
    		cartes = os.listdir("cartes")
    		# On affiche les cartes existantes
    		print("Labyrinthes existants :")
    		for i, carte in enumerate(cartes):
    			print("  {} - {}".format(i, carte))
     
     
     
    		numCarte = 0
     
     
    		try:
    			numCarte = int(input("Veuillez entrer le numero de carte à jouer : "))
     
    		except ValueError:
    			print("Veuillez entrer un nombre")
     
     
    		carteFile = open("/home/yohan/roboc/roboc/cartes/"+cartes[numCarte], "r") # ouvrir la carte
    		print(carteFile.read()) # lire la carte 
     
    		self.enregistrement = carteFile.read()
     
     
     
    #afficher ma position
    	def position(self):
     
     
    		for i, ligne in enumerate(self.enregistrement):
     
    			for j, caractere in enumerate(ligne):
     
     
    				if caractere == "X":
    					self.abscisse = i
    					self.ordonnee = j
     
    					return(self.abscisse, self.ordonnee)
    fichier roboc.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    # -*-coding:Utf-8 -*
     
    #Code du jeu 
     
    import os
     
    import pickle 
     
    from carte import Carte
     
     
     
    #creer et instancier mon*objet carte
     
    # regles du jeux
    def reglesDuJeux():
    	print("Voici les regles du jeux : ")
    	print("""
                    Le jeu est un labyrinthe formé d'obstacles : des murs qui sont tout simplement là pour vous bloquer,
                    des portes qui peuvent être traversées et au moins un point par lequel on peut quitter le labyrinthe.
                    Si le robot arrive sur ce point, la partie est considérée comme gagnée.
     
                    Le robot est contrôlable grâce à des commandes du clavier. Voici les commandes du jeu :
     
                    Q qui doit permettre de sauvegarder et quitter la partie en cours ;
                    N qui demande au robot de se déplacer vers le nord (c'est-à-dire le haut de votre écran) 
                    E qui demande au robot de se déplacer vers l'est (c'est-à-dire la droite de votre écran) 
                    S qui demande au robot de se déplacer vers le sud (c'est-à-dire le bas de votre écran) 
                    O qui demande au robot de se déplacer vers l'ouest (c'est-à-dire la gauche de votre écran) 
                    Chacune des directions ci-dessus suivies d'un nombre permet d'avancer de plusieurs cases 
     
                    """)
    reglesDuJeux()
     
    def configuration(robot, obstacles, portes, sortie, passage, position):
    	self.robot = "X"
    	self.obstacles = "O"
    	self.portes = "." 
    	self.sortie = "U"
    	self.liste_passage = " "
    	self.position = []
     
     
     
    #Fonction pour quitter la partie
     
    continuePartie = True
    def quitter(): 
     
    	print("Souhaitez vous quitter la partie ? (q pour quitter) ")
     
    	if quitter == "q" or quitter == "Q":
    		continuePartie = False
    		print("Vous quittez la partie")
     
    	else:
    		continuePartie = True
     
    #Fonction pour bouger le robot
     
    def bouger(nord, ouest, sud, est):
     
     
    	self.nord = "n"
    	self.ouest = "o"
    	self.sud = "s"
    	self.est = "e"
     
     
    	if commande.lower() == "n":
    		# tester mur
    		self.ordonne -= 1
     
    	if commande.lower() == "o":
     
    		self.abscisse -= 1
     
    	if commande.lower() == "s":
     
    		self.ordonne += 1
     
     
    	if commande.lower() == "e":
     
    		self.abscisse += 1
     
    # Fonction pour sauvergarder une partie
     
    def enregistrerPartie():
     
    	fichier_enregistre = open(partieEnregistree, "wb") 
     
    	mon_pickler = pickle.Pickler(fichier_enregistre)
     
    	mon_pickler.dump(partie)
     
    	fichier_enregistre.close()
     
     
    # Fonction pour recuperer une partie
    def recupererPartie():
     
    	if os.path.exists(partieEnregistree):
     
    		fichier_enregistre = open(partieEnregistree, "rb")
     
    		mon_depickler = pickle.Unpickler(fichier_enregistre)
     
    		partie = mon_depickler.load()
     
    		fichier_enregistre.close()
     
     
    	return partie

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par yohan78 Voir le message
    je n'arrive pas a creer et instancier mon objet carte du fichier carte.py dans mon fichier roboc.py pour pouvoir lire mes cartes
    Si vous avez une classe A, l'instancier, c'est écrire a = A().
    Et comme dans votre code vous n'essayez même pas: à part vous recommander de revoir les chapitres qui parlent des classes dans vote tuto. préféré...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Et comme dans votre code vous n'essayez même pas

    - W
    j'ai essayé plusieurs choses mais je les ai effacées ....

    ce que je comprends pas c'est comment appeler ma fonction carte dans mon fichier roboc.py

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par yohan78 Voir le message
    j'ai essayé plusieurs choses mais je les ai effacées ....

    ce que je comprends pas c'est comment appeler ma fonction carte dans mon fichier roboc.py
    "carte" n'est pas une fonction, mais une méthode qui peut être appelée associée à une instance de Carte.
    Et si vous ne savez pas comment, raison de plus pour revoir les classes dans votre tuto. préféré.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Par défaut
    merci pour ta réponse ca m'a aidé mais j'ai pas trouvé de réponsé a cette question dans le cours :

    quand je fais mon Carte.carte(self) il me dis que self n'est pas définis ? alors qu'il est bien definis dans mon fichier carte.py non ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par yohan78 Voir le message
    quand je fais mon Carte.carte(self) il me dis que self n'est pas définis ? alors qu'il est bien definis dans mon fichier carte.py non ?
    Ce faisant, vous appelez une fonction (et non la méthode).
    Et si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def f(a):
          print(a)
     
    f(a)
    çà se vautre en NameError car la variable (globale) a n'a pas été définie.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/09/2007, 15h26
  2. Créer de nouveaux objets dans une page
    Par Tronche dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/02/2007, 15h00
  3. Instancier objet dont constructeur ni private ni public
    Par babarpapa dans le forum Langage
    Réponses: 14
    Dernier message: 21/06/2006, 13h17
  4. instancier objet COM
    Par Someonelse dans le forum MFC
    Réponses: 2
    Dernier message: 14/11/2005, 10h31
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo