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

  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 762
    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 762
    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 762
    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 762
    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 762
    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 762
    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

  7. #7
    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
    encore merci j'ai trouvé !!!! ^^

    est ce que tu aurais des indications a me donner pour faire bouger mon robot ?

  8. #8
    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
    voila ou j'en suis si quelqu'un veut m'aider

    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
     
    # -*-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()
    Carte.carte()
     
     
     
    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 bouger le robot
    commande = 0
    commande = input("Veuillez choisir votre direction (n/o/s/e): ")
     
    def bouger(commande):
     
     
    	self.nord = "n"
    	self.ouest = "o"
    	self.sud = "s"
    	self.est = "e"
     
     
    	while self.robot != self.sortie:
    		if commande.lower() == "n":
     
    			nouvellePosition = self.ordonne - 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
     
    		if commande.lower() == "o":
     
    			nouvellePosition = self.abscisse - 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
    		if commande.lower() == "s":
     
    			nouvellePosition = self.ordonne + 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
    		if commande.lower() == "e":
     
    			nouvellePosition = self.abscisse + 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
    		else:
    			print("Veuillez entrez une commande valide (n/o/s/e ou q pour quitter")
     
    bouger(commande)
     
     
     
    #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 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

    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
     
    # -*-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)
     
     
     
    #Fonction pour afficher et choisir la carte
     
    	def carte():
    		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 
    		enregistrement = carteFile.read()
     
     
     
    	def size():
     
    		absc = len(enregistrement[0])		
    		ordo = len(enregistrement)
     
    		return(absc, ordo)
     
    #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)

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par yohan78 Voir le message
    voila ou j'en suis si quelqu'un veut m'aider
    Si vous n'avez pas de question plus précise...

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

  10. #10
    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
    si j'aimerais savoir si les mouvements de mon robot sont bon ?
    et comment afficher mon robot a chaque mouvement

  11. #11
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Moi, j'aimerais savoir c'est comment ton script pourrait fonctionner ?

    Ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def configuration(robot, obstacles, portes, sortie, passage, position):
    	self.robot = "X"
    	self.obstacles = "O"
    	self.portes = "." 
    	self.sortie = "U"
    	self.liste_passage = " "
    	self.position = []
    Ne peut pas fonctionner en l'état sans que ça ne plante de partout.
    Idem pour la fonction bouger.
    Et quelle logique y a-t-il derrière ton code ?

    Navré d'être désobligeant, mais tout ce que ton code donne l'impression, c'est qu'il a été (a essayé dêtre) assemblé avec des bouts codes glanés ici et là sur internet, car c'est bourré d'erreurs syntaxiques et de logiques.

  12. #12
    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
    j'ai juste recopié la partie regledujeux et configuration le reste c'est moi

    après je sais que la partie bouger c'est pas bon du tout, il est la mon probleme j'aimerais juste savoir faire un mouvement après ca devrais le faire je pense


    mes modifs:

    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    # -*-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()
    maCarte = Carte()
    maCarte.carte()
     
     
    print(maCarte.position("X"))
    print(maCarte.position("U"))
     
     
    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 bouger le robot
    commande = 0
    commande = input("Veuillez choisir votre direction (n/o/s/e): ")
     
    def bouger(commande):
     
     
    	self.nord = "n"
    	self.ouest = "o"
    	self.sud = "s"
    	self.est = "e"
     
    	while self.robot != self.sortie: 
     
    		if commande.lower() == "n":
     
    			if self.robot == self.obstacles:
    				print() #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
     
    		if commande.lower() == "o":
     
    			nouvellePosition = self.abscisse - 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
    		if commande.lower() == "s":
     
    			nouvellePosition = self.ordonne + 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
    		if commande.lower() == "e":
     
    			nouvellePosition = self.abscisse + 1
    			if self.robot == self.obstacles:
    				print(nouvellePosition) #afficher la carte avec la position initial
    				print("Vous ne pouvez pas passer par la")
     
    			if self.robot == self.sortie:
    				print("Vous avec reussi a sortir ! Bravo !")
     
    			if self.robot == self.portes:
    				print(nouvellePosition)#afficher la carte avec la nouvelle position
    				print("Vous etes passé par la porte")
     
    		else:
    			print("Veuillez entrez une commande valide n/o/s/e ou q pour quitter")
     
    bouger(commande)
     
     
     
    #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 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

    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
     
    # -*-coding:Utf-8 -*
    import os 
    #Module classe carte
     
     
     
     
    partieEnregistree = "partie"
     
    #Classe de la carte 
    class Carte:
     
     
     
    	def __init__(self):
    		pass
     
     
    	def __repr__(self):
     
    		return "<Carte {}>".format(self.nom)
     
     
     
    #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()
     
     
     
    	def size(self):
     
    		absc = len(enregistrement[0])		
    		ordo = len(enregistrement)
     
    		return(absc, ordo)
     
    #afficher ma position
    	def position(self, wanted):
     
     
    		for i, ligne in enumerate(self.enregistrement.splitlines()):
     
    			for j, caractere in enumerate(ligne):
     
     
    				if caractere == wanted:
    					abscisse = i
    					ordonnee = j
     
    					return(abscisse, ordonnee)

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par yohan78 Voir le message
    après je sais que la partie bouger c'est pas bon du tout, il est la mon probleme j'aimerais juste savoir faire un mouvement après ca devrais le faire je pense
    Alors vous vous concentrez sur un déplacement, vous réfléchissez un peu à ce qu'il doit produire, puis vous vérifiez que le code correspondant a des chances de faire le boulot et vous testez pour vérifier que çà le fait.

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

  14. #14
    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
    j'ai bientot termine, il me manque plus qu'a trouver les murs, mais j'arrive pas a identifier tous les murs

    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    # -*-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()
    maCarte = Carte()
    maCarte.carte()
     
     
     
     
    continuePartie = True
     
     
     
    #Fonction pour bouger le robot
     
    def bouger():
     
     
    	nord = "n"
    	ouest = "o"
    	sud = "s"
    	est = "e"
     
    	positionNew = maCarte.position("X")
    	sortie = maCarte.position("U")
    	oldCase = " "
     
     
    	while list(positionNew) != list(sortie):  # enregistrer la position de la sortie
     
    		commande = 0
    		commande = input("Veuillez choisir votre direction (n/o/s/e): ")
     
     
    		positionOld = maCarte.position("X")
    		positionNew = list(positionOld)
     
    		if positionNew == "O":
    			print("vous ne pouvez pas passer par la")
     
     
    		if commande.lower() == "n":
     
    			positionNew[0] -= 1
     
     
    		if commande.lower() == "o":
     
    			positionNew[1] -= 1
     
     
    		if commande.lower() == "s":
     
    			positionNew[0] += 1
     
     
    		if commande.lower() == "e":
     
    			positionNew[1] += 1
     
     
    		maCarte.write(positionOld, oldCase)
    		oldCase = maCarte.read(positionNew)
    		maCarte.write(positionNew, "X")
     
     
    		print("\n".join(maCarte.enregistrement))
     
     
     
     
    	print("Vous avez reussi")
     
     
     
    bouger()
     
     
     
    #Fonction pour quitter la partie
     
     
    def quitter(): 
     
     
    	if quitter == "q" or quitter == "Q":
    		quiiter = input("Souhaitez vous quitter la partie ? (q pour quitter) ")
    		continuePartie = False
    		print("Vous quittez la partie")
     
    	else:
    		continuePartie = True
     
    # 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

    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
     
    # -*-coding:Utf-8 -*
    import os 
    #Module classe carte
     
     
     
     
    partieEnregistree = "partie"
     
    #Classe de la carte 
    class Carte:
     
     
     
    	def __init__(self):
    		pass
     
     
    	def __repr__(self):
     
    		return "<Carte {}>".format(self.nom)
     
     
     
    #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("./cartes/"+cartes[numCarte], "r") # ouvrir la carte
    		#print(carteFile.read()) # lire la carte 
    		self.enregistrement = carteFile.read().splitlines()
     
     
     
    	def size(self):
     
    		absc = len(enregistrement[0])		
    		ordo = len(enregistrement)
     
    		return(absc, ordo)
     
    #afficher ma position
    	def position(self, wanted):
     
     
    		for i, ligne in enumerate(self.enregistrement):
     
    			for j, caractere in enumerate(ligne):
     
     
    				if caractere == wanted:
    					abscisse = i
    					ordonnee = j
     
    					return(abscisse, ordonnee)
     
    	def write(self, pos, caract):
     
    		x = pos[0]
    		y = pos[1]
    		ligne = list(self.enregistrement[x])  # enregistrer la ligne
    		ligne[y] = caract   # lire la ligne
     
     
     
    		self.enregistrement[x] = "".join(ligne)  
     
     
     
    	def read(self, posit):
     
    		x = posit[0]
    		y = posit[1]
     
     
    		ligne = list(self.enregistrement[x])
     
    		return(ligne[y]) # retourne la valeur de la ligne

  15. #15
    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
    personne ne peut maider ?

  16. #16
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par yohan78 Voir le message
    personne ne peut maider ?
    Pour vous aider, il faut récupérer le code, comprendre comment il fonctionne, jouer avec... Et se poser des questions que vous n'avez même pas posé: c'est du boulot et donc du temps à passer. Tout le monde étant déjà occupé par son boulot, sa famille, ... çà réduit grandement la population qui pourrait vous aider.

    L'idéal serait que vous définissiez un peu plus précisément le problème à résoudre, en l'illustrant avec quelques lignes de code permettant de le reproduire.

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

  17. #17
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2018
    Messages : 41
    Par défaut
    À l'appui des messages précédents, redisons qu'il est extrêmement bénéfique de lire et relire le tutoriel python (https://docs.python.org/fr/3/tutorial/index.html) qui est en français, très bien fait, et comprend à peu près toutes les bases.
    C''est-à-dire que si vous lisez jusqu'au chapitre 10, vous ne perdrez pas plus d'une journée, et vous aurez tout ce qu'il vous faut pour coder et comprendre le code des autres. Vous gagnerez en fait, et de suite.
    Même quand on croit avoir compris, et qu'on pratique depuis longtemps, on y retrouve toujours des trucs infiniment utiles.

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