Bonjour à tous.
Je suis débutant en Python et pour commencer je me suis acheté une magazine qui propose aux neophytes créer un jeux simple.
Le soucis que j'ai c'est que quand je le lance dans le terminal linux, des que j'essaye de faire bouger le "personnage" pour l'instant c'est une X, le program provoque une erreur et ferme. Par contre si je l'ouvre depuis l'IDLE tout fonctionne correctement. Après lire et relire le code je n'ai pas trouvé d'erreur. J'ai eu l'idée de le tester sous windows et là tout marche parfaitement...
Je vous laisse le code, por l'instant c'est très très simple, on peut juste déplacer la X. J'ai mis la version la plus simple à fin de ne pas poster un code très long.
Je vous remercie d'avance.
Je suis débutant en Python et pour commencer je me suis acheté une magazine qui propose aux neophytes créer un jeux simple.
Le soucis que j'ai c'est que quand je le lance dans le terminal linux, des que j'essaye de faire bouger le "personnage" pour l'instant c'est une X, le program provoque une erreur et ferme. Par contre si je l'ouvre depuis l'IDLE tout fonctionne correctement. Après lire et relire le code je n'ai pas trouvé d'erreur. J'ai eu l'idée de le tester sous windows et là tout marche parfaitement...
Je vous laisse le code, por l'instant c'est très très simple, on peut juste déplacer la X. J'ai mis la version la plus simple à fin de ne pas poster un code très long.
Je vous remercie d'avance.
Code:
#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys import os ######### # Définition des différents niveaux ##Niveau 1 level_1= [ "+------------------+", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "| |", "+------------------+", ] def affiche_labyrinthe(lab, perso, pos_perso): n_ligne = 0 for ligne in lab: if n_ligne == pos_perso[1]: print(ligne[0:pos_perso[0]] + perso + ligne[pos_perso[0]+1:]) else: print(ligne) n_ligne = n_ligne + 1 def efface_ecran(): if sys.platform.startswith("win"): os.system("cls") else: os.system("clear") def verification_deplacement(lab, pos_col, pos_ligne): """ Indique si le deplacement du personnage est autorisé ou pas. """ #Calcul de la taille du labyrinthe n_cols = len(lab[0]) n_lignes = len(lab) #Teste si le déplacement conduit le personnage en dehors de l'aire de jeu if pos_ligne < 0 or pos_col <0 or pos_ligne>(n_lignes-1) or pos_col>(n_cols-1): return None elif lab[pos_ligne][pos_col] != " ": return None else: return [pos_col,pos_ligne] def choix_joueur(lab, pos_perso): """ Demande au joueur de saisir son déplacement et vérifie s'il est possible. Si ce n'est pas le cas affiche un message, sinon modifie la position du """ dep = None choix = input("Votre déplacement (Haut/Bas/Droite/Gauche/Quitter) ? ") if choix == "H" or choix == "Haut": dep = verification_deplacement(lab, pos_perso[0], pos_perso[1] - 1) elif choix == "B" or choix == "Bas": dep = verification_deplacement(lab, pos_perso[0], pos_perso[1] + 1) elif choix =="G" or choix == "Gauche": dep = verification_deplacement(lab, pos_perso[0] - 1, pos_perso[1]) elif choix =="D" or choix =="Droite": dep = verification_deplacement(lab, pos_perso[0] + 1, pos_perso[1]) elif choix =="Q" or choix =="Quitter": exit(0) if dep == None: print ("Déplacement impossible") else: pos_perso[0] = dep[0] pos_perso[1] = dep[1] def jeu(level, perso, pos_perso): """ Boucle principal du jeu. Affiche le labyrinthe dans ses différents états après les déplacements du joueur. level: Labyrinthe perso: caractère représentant le personnage pos_perso: liste contenant la position du personnage [colonne, ligne] """ while True: affiche_labyrinthe(level, perso, pos_perso) choix_joueur(level, pos_perso) ######### # Programme principal # Initializaion du personnage perso = "X" pos_perso = [1,1] #Lancement de la partie jeu(level_1, perso, pos_perso)
Commentaire