zPendu, creation de la structure, fonctionnement d'un tour|ADD pendu.py fonctions.py dicolight.txt|Python

This commit is contained in:
Fred Z 2018-01-12 14:35:50 +01:00
parent 2a3ce89969
commit 150dacc104
3 changed files with 55891 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# fonction.py : fonctions du fichier pendu.py
""" Rassemble les fonctions du script pendu.py """
def check_letter(letter, target):
"""
Verifie la presence de **letter** dans **target**
Retourne la liste des positions de la letter ou False
@letter str
@target list of letters
"""
if len(letter) != 1 or len(target) < 2 and letter is not str:
return False
else:
return [k for k, v in enumerate(target) if letter == v]
if __name__ == "__main__":
# Tests de la fonction
print(check_letter('A', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter('M', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter('o', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter('À', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter(1, ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter(False, ['M', 'A', 'M', 'O', 'U', 'T', 'H']))

View File

@ -0,0 +1,67 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random
import os
from fonctions import check_letter
# 2.7-zPendu.py: Jeu de pendu avec cumul des scores des differant joueurs
# OpenClassrooms - Apprenez a programmer en Python -
# https://openclassrooms.com/courses/apprenez-a-programmer-en-python/tp-un-bon-vieux-pendu
# Le joueur donne son nom au debut (enregistrement du score)
# Le script choisit un mot (8 lettres max) au hasard dans une liste
# Le joueur a chaque tour saisit une lettre
# Si la lettre figure dans le mot, l'ordinateur affiche le mot avec
# les lettres deja trouvees. Celles qui ne le sont pas encore sont
# remplacees par des etoiles (*). Le joueur a autant de chances que
# le nombre de lettre du mot. Au dela, perdu.
# Le score: score courant (0 si aucun score deja enregistre), a
# chaque partie, ajoute le nombre de coups restants (non utilise)
# Constantes
SCORE_FILE = ".score"
WORD_LIST_FILE = "dicolight.txt"
ASK_NAME = "ASK_NAME : "
ASK_LETTER = "ASK_LETTER : "
ERR_LETTER_TYPE = "ERR_LETTER_TYPE"
ERR_VALUE_ERR = "ERR_VALUE_ERR"
ERR_WORD_LIST_FILE = "ERR_WORD_LIST_FILE"
# Le joueur donne son nom
player_name = str(input(ASK_NAME))
# Chargement du dictionnaire
if os.path.isfile(WORD_LIST_FILE) is True:
with open(WORD_LIST_FILE, "r") as word_list_file:
word_list = word_list_file.read().splitlines()
else:
raise ValueError(ERR_WORD_LIST_FILE)
# Choix du mot cible
target_word = list(word_list[random.randrange(0, len(word_list))])
player_word = list("*" * len(target_word))
# Debut de partie
# Debut de tour, le joueur choisi une lettre
letter = str(input(ASK_LETTER))
# Recherche si la lettre est presente: on la place dans player_word
if check_letter(letter, target_word) is not False:
positions = check_letter(letter, target_word)
for i in positions:
player_word[i] = letter
# Affichage de la fin de tour
print(player_word)
print(target_word)
# Fin de partie
print(player_word.count("*"))
print(len(target_word))
# Affichage du score de la partie et des highscores
# Enregistrement du score