funny rpg
from random import randint # Dictionnaire pour les attributs du joueur player = { "name": "Joueur", "health": 100, "attack_power": 10, "defense": 5, "wisdom": 10, "quest_stage": 0, "encountered_characters": [] } characters = { "Jean": { "dialogue": "Je suis le modo Discord SDF du lycée. La vie est dure, mais je trouve du réconfort dans la communauté en ligne.", "question": "Penses-tu que les relations virtuelles peuvent remplacer les interactions réelles ?", "bonus": {"oui": ("wisdom", 2), "non": ("attack_power", 1)}, "exchange": ("5 points de vie", "un accès VIP au serveur Discord", 5, "health") }, "John": { "dialogue": "La programmation, c'est comme la poésie du 21ème siècle. Chaque ligne de code raconte une histoire.", "question": "Préfères-tu la programmation orientée objet ou fonctionnelle ?", "bonus": {"objet": ("defense", 2), "fonctionnelle": ("wisdom", 2)}, "exchange": ("3 points de sagesse", "un cours avancé de Python", 3, "wisdom") }, "Sam": { "dialogue": "Vivre avec le diabète m'a appris l'importance de prendre soin de soi. Chaque jour est un défi.", "question": "Penses-tu que les défis de santé nous rendent plus forts ?", "bonus": {"oui": ("health", 5), "non": ("attack_power", 2)}, "exchange": ("2 points d'attaque", "des conseils sur la gestion du diabète", 2, "attack_power") }, "Math": { "dialogue": "Le regret est un poison qui ronge l'âme. J'aurais dû voter pour Jean et Guillaume.", "question": "Crois-tu qu'il est important de suivre sa conscience, même si cela va à l'encontre de la majorité ?", "bonus": {"oui": ("wisdom", 3), "non": ("defense", 2)}, "exchange": ("4 points de défense", "des leçons sur l'importance du vote", 4, "defense") }, "Prof": { "dialogue": "La confusion est parfois le début de la compréhension. Où suis-je ? Quelle heure est-il ?", "question": "Penses-tu que l'incertitude peut être une source de créativité ?", "bonus": {"oui": ("wisdom", 4), "non": ("attack_power", 2)}, "exchange": ("3 points de santé", "une énigme philosophique", 3, "health") } } current_location = "B1" game_over = False # Fonction pour paginer les textes trop longs def display_text_in_chunks(text, chunk_size=25): """ Affiche le texte par morceaux (chunks) de longueur maximale chunk_size. Le joueur doit appuyer sur 'entrée' pour continuer à chaque fois. """ words = text.split() chunk = "" for word in words: if len(chunk) + len(word) + 1 <= chunk_size: chunk += word + " " else: print(chunk.strip()) input("Appuyez sur 'entrée' pour continuer...") chunk = word + " " if chunk: print(chunk.strip()) input("Appuyez sur 'entrée' pour continuer...") # Fonction principale du jeu def game_loop(): global game_over while not game_over: display_status() handle_choice() # Affichage du statut du joueur def display_status(): print("Lieu: " + current_location) print("Santé: " + str(player["health"]) + " | Attaque: " + str(player["attack_power"]) + " | Défense: " + str(player["defense"]) + " | Sagesse: " + str(player["wisdom"])) print("1. Explorer 2. Parler à quelqu'un 3. Changer de lieu 4. Quitter") # Gestion des choix def handle_choice(): global game_over, current_location choice = input("Votre choix (1-4): ") # Saisie utilisateur if choice == "1": explore() elif choice == "2": talk() elif choice == "3": change_location() elif choice == "4": game_over = True print("Merci d'avoir joué !") else: print("Choix invalide. Réessayez.") # Exploration aléatoire def explore(): event = randint(1, 4) if event == 1: print("Vous trouvez une Numworks abandonnée ! Votre sagesse augmente de 2.") player["wisdom"] += 2 elif event == 2: print("Vous entendez Diabolical Teacher comploter contre ses élèves...") elif event == 3: print("Sam cherche son insuline, attaque +1.") player["attack_power"] += 1 else: print("Jean dort dans un coin, défense +1.") player["defense"] += 1 # Parler à un personnage def talk(): available_characters = [char for char in characters if char not in player["encountered_characters"]] if not available_characters: print("Vous avez déjà rencontré tous les personnages disponibles.") return character = available_characters[randint(0, len(available_characters) - 1)] char_info = characters[character] print("Vous rencontrez " + character) # Utilisation de la pagination pour afficher les dialogues display_text_in_chunks(char_info["dialogue"]) # Demander la réponse du joueur answer = input(char_info["question"] + " (oui/non): ").lower() # Appliquer les bonus if answer in char_info["bonus"]: stat, value = char_info["bonus"][answer] player[stat] += value print("Votre " + stat + " augmente de " + str(value) + ".") # Éventuel échange avec le personnage if randint(0, 2) == 0: cost, reward, value, stat = char_info["exchange"] print(character + " vous propose un échange : " + reward + " contre " + cost + ".") if input("Acceptez-vous ? (o/n): ").lower() == 'o': player[stat] -= value print("Vous obtenez " + reward + " en échange de " + cost + ".") # Ajouter le personnage à la liste des rencontrés player["encountered_characters"].append(character) # Changer de lieu def change_location(): global current_location print("1. Aller au B1") print("2. Aller au B3") choice = input("Votre choix: ") if choice == "1": current_location = "B1" print("Vous allez au B1.") elif choice == "2": current_location = "B3" print("Vous allez au B3.") else: print("Choix invalide. Vous restez sur place.") # Démarrer le jeu game_loop()