rpg_v5.py

Created by elnix91

Created on September 28, 2025

6.1 KB

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()

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.