Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 4 sur 4 PremièrePremière 1234
Affichage des résultats 91 à 99 sur 99
  1. #91
    Cool ca progresse ! En tout cas c'est propre

  2. #92
    J'ai ça :

    + Une "carte" de 3x3 lieux (pas aléatoire), que l'on visite en choisissant la direction cardinale.
    - mais qui ne garde aucune mémoire des actes du perso. Chaque lieu est un pavé copié/collé qui ressemble à (plusieurs éléments sont seulement pour tester, ou des aides visuelles pour débug) :

    Code:
    def in_d10():
        while True:
            clean()
            d10.connect(rien, e10, d11, rien)
            print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("                                                                           ")
            print ("      Vous êtes dans une forêt à flanc de montagne.")
            print ("                                                                           ")
            print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("                                                                           ")
            print (Colour.CYAN + "   Rencontres : " + Colour.END)
            print ("      !!!")
            alea_fauna()
            print ("      !!!")
            print ("                                                                           ")
            print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("                                                                           ")
            print (Colour.CYAN + "   Spécificités du lieu : " + Colour.END)
            print ("      ")
            print ("      ")
            print ("                                                                           ")
            print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("                                                                           ")
            print (Colour.CYAN + "   Actions possibles : " + Colour.END)
            print ("      i - consulter l'inventaire")
            print ("      f - catalogue de la faune")
            print ("      p - catalogue de la flore")
            print ("                                                                           ")
            print (Colour.CYAN + "   Voyager : " + Colour.END)
            print ("      n - Au nord : {} ".format(d10.nord.name) + Colour.LPURPLE + "{}".format(d10.nord.desc) + Colour.END)
            print ("      s - Au sud : {} ".format(d10.sud.name) + Colour.LPURPLE + "{}".format(d10.sud.desc) + Colour.END)
            print ("      e - À l'est : {} ".format(d10.est.name) + Colour.LPURPLE + "{}".format(d10.est.desc) + Colour.END)
            print ("      o - À l'ouest : {} ".format(d10.ouest.name) + Colour.LPURPLE + "{}".format(d10.ouest.desc) + Colour.END)
            print ("                                                                           ")
            print (Colour.CYAN + "   Autres : " + Colour.END)
            print ("      ? - ouvrir une page d'aide ")
            print ("      q - quitter DraMu")
            print ("                                                                           ")
            print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            print ("                                                                           ")
            print (Colour.DARKCYAN + "   Tapez la lettre correpondant à votre action, puis Entrée" + Colour.END)
            option = input(Colour.DARKCYAN + "   Votre choix -> " + Colour.END).lower()
            if option == "c":
                bad_input()
            elif option == "b":
                bad_input()
            elif option == "i":
                in_sac()
                clean()
                continue
            elif option == "f":
                in_fauna()
                clean()
                continue
            elif option == "p":
                in_flora()
                clean()
                continue
            elif option == "n":
                bad_input()
            elif option == "s":
                in_e10()
            elif option == "e":
                in_d11()
            elif option =="o":
                bad_input()
            elif option == "?":
                in_aide()
            elif option == "q": #arrêter le programme et sortir
                do_quit()
            else:
                bad_input()
    + Un système de sauvegarde et chargement basique, qui garde le nom et les attributs du perso
    - mais pour le moment pas le reste (rencontres passées, lieu...)

    + À chaque lieu, une rencontre aléatoire non interactive pour le moment (ça pioche dans le bestiaire selon un résultat de dès)
    - mais chaque fois que le perso fait un truc, genre ouvrir l'inventaire, ça rafraichi le lieu et la rencontre avec.
    Je ne sais pas trop comment faire pour avoir une rencontre "stable", qui reste au moins tant que le perso n'a pas changer de lieu.

    + Un lieu Village avec arène, et une arène avec des options de combat (coup précis, rapide, lourd...) qui modifient les dégâts et la fatigue
    - mais chaque fois à la place de faire un tour de combat et de redonner le choix d'attaque au joueur, ça retourne au village, et pas dans l'arène.
    Cette arène me bloque pour le moment... L'arène seule fonctionnait, mais une fois mise avec le village et les options en tour de combat, ça foire.

    Code:
    def in_arena():
        clean()
        alter = (random.choice(FAUNA))
        print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
        print (" ")
        print ("            {} (".format(ego.name) + Colour.GREEN + "{}".format(ego.matorg) + Colour.END + "|" + Colour.GREEN + "{}".format(ego.fougue) + Colour.END + ") vs   {} (".format(alter.name) + Colour.GREEN + "{}".format(alter.matorg) + Colour.END + ")")
        print (" ")
        print ("    {}".format(alter.desc))
        print (" ")
        print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
        print ("                                                                                  ")
        print ("      d - attaque directe    *   -5 fougue                                        ")
        print ("      r - attaque rapide     *   + toucher, -10 fougue                            ")
        print ("      l - attaque lourde     *   - toucher, ++ dégâts, -15 fougue                 ")
        print ("      p - attaque précise    *   +++ toucher, +++ dégâts, -25 fougue              ")
        print ("                                                                                  ")
        print ("      a - attendre           *   +10 fougue                                       ")
        print ("                                                                                  ")
        print ("      f - fuir et abandonner le combat                                            ")
        print ("                                                                                  ")
        print ("  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
        print ("                                                                                  ")
        print (Colour.DARKCYAN + "   Touche Entrée pour une attaque directe" + Colour.END)
        option = input(Colour.DARKCYAN + "   Votre choix -> " + Colour.END).lower()
        # ego.dead = False
        # alter.dead = False
        if option == "":
            do_attack_directe()
        elif option =="d":
            do_attack_directe()
        else:
            bad_input()
        # elif option == "r":
        #     do_attack_rapide()
        # elif option == "l":
        #     do_attack_lourde()
        # elif option == "x":
        #     do_attack_precise()
        # elif option == "a":
        #     do_attack_wait()
        # elif option == "f":
        #     bad_input()
    
    def do_attack_directe():
        if ego.matorg > 1:
            ego_attack_directe()
            alter_attack()
            ego.fougue += ego.regen
        else:
            lose()
    
    def ego_attack_directe():
        cmbt_ftg = 5 # fatigue de combat, réduit la fougue
        ego_alea = (1, 4, 9) # pifomètre pour tester un peu d'aléatoire, en attendant de travailler à l'équilibre des atributs
        alter_alea = (2, 5, 10)
    
        ego_off =  (ego.nerf *3 + ego.fluide *2 + ego.chimie + ego.gaz) + (random.choice(ego_alea)) # Offense
        alter_off = (alter.nerf *3 + alter.fluide *2 + alter.chimie + alter.gaz) + (random.choice(alter_alea))
    
        ego_def = (ego.chimie *3 + ego.gaz * 2 + ego.nerf + ego.fluide) + (random.choice(ego_alea)) # Défense
        alter_def = (alter.chimie *3 + alter.gaz *2 + alter.nerf + alter.fluide) + (random.choice(alter_alea))
    
        ego_dmg =  (ego.fluide *3 + ego.chimie *2 + ego.nerf + ego.gaz) + (random.choice(ego_alea)) # Dommages
        alter_dmg = (alter.fluide *3 + alter.chimie *2 + alter.nerf + alter.gaz) + (random.choice(alter_alea))
    
        ego_res = (ego.gaz *3 + ego.chimie * 2 + ego.nerf + ego.fluide) + (random.choice(ego_alea)) # Résistance
        alter_res = (alter.gaz *3 + alter.chimie * 2 + alter.nerf + alter.fluide) + (random.choice(alter_alea))
    
        # L'ego attaque toujours en premier. Si ego_offense >= alter_def, alors l'ego réussi son attaque. Autrement, l'alter attaque.
        # Si ego_dmg >= alter_res, alors l'ego blesse l'alter. Ensuite c'est au tour de l'alter
    
        print ("")
        ego.fougue -= cmbt_ftg
        print (ego.fougue)
        if ego.fougue > 1:
            if ego_off >= alter_def:
                if (ego_dmg - alter_res) < 1:
                    alter.matorg -= 0
                    print ("      Vous touchez et n'infligez " + Colour.PURPLE + "aucun dégâts " + Colour.END + "({} vs {}, {} vs {}) !".format(ego_off, alter_def, ego_dmg, alter_res))
                else:
                    alter.matorg -= (ego_dmg - alter_res)
                    print ("      Vous touchez et infligez " + Colour.GREEN + "{} dégâts ".format(ego_dmg - alter_res) + Colour.END + "à l'alter ({} vs {}, {} vs {}).".format(ego_off, alter_def, ego_dmg, alter_res))
            else:
                print ("      Vous " + Colour.PURPLE + "ratez " + Colour.END + "votre coup ({} vs {}) !".format(ego_off, alter_def))
        else :
            print ("      Trop fatigué")
        pause(1)
    * Jeux1d100 ? Le blog Jeux1d100.net sur les jeux indécents et Linux, et la chaîne YouTube *

  3. #93
    Alors (tu me dis si je comprends mal ton code), mais voici comment je te lis :

    tu commences l'arène, tu fais des initialisations, tu demandes au joueur quelle type d'attaque il veut faire
    --> on entre dans do_attack_directe (car c'est le seul choix qui marche pour l'instant), là tu regardes si le joueur peut attaquer ou s'il est trop fatigué (ego.matorg > 1). S'il peut attaquer, tu vas démarrer une attaque du joueur, puis une riposte de l'alter
    ----> on entre dans ego_attack_directe, le joueur attaque
    ----> ego_attack_directe se finit
    --> la fonction ego_attack_directe étant finie, on revient à l'endroit où on l'avait appelée, on revient donc dans do_attack_directe et on démarre alter_attack
    ----> (j'imagine qu'il y a un code équivalent pour l'alter ensuite)
    ----> (puis l'alter se finit)
    --> la fonction alter_attack étant finie, on revient à l'endroit où on l'avait appelée, on revient donc dans do_attack_directe et on fait ego.fougue += ego.regen
    --> le if ego.matorg > 1 est fini
    le combat s'arrete, on est à la fin de in_arena, on quitte in_arena, on revient là où on avait appelé in_arena : c'est sans doute le village...

    J'ai bon ?

    J'imagine qu'en fait tu voudrais non pas un
    if ego.matorg > 1
    alors une attaque+rispote
    sinon perdu

    mais plutôt un
    tant que ego.matorg > 1
    alors une attaque+rispote

    ce qui te ferait une boucle de plusieurs attaque+rispote successives ?

    à la sortie du tant que, un message de fin de combat.
    Le combat étant terminé, alors seulement là on quitte l'arene

    En même temps, il faudrait aussi revoir la condition de sortie du tant que : ego.matorg>1 (=lose) n'est peut-être pas la seule façon de finir le combat... il peut y avoir une victoire, non ?
    Nulle part dans ton extrait de code je ne vois un appel à une fonction win()...

    En espérant t'avoir aidé

  4. #94
    Merci,

    Oui/Non ! C'est presque ça mais j'ai trouvé tout seul, na.

    Par exemple, j'appelais l'alter (ennemi) "dans" l'arène, du coup chaque fois que l'arène rafraichie, l'alter change, pas bon (pendant le combat si la vie/fatigue changeait, l'alter changeait aussi...). Maintenant, l'alter est défini "pendant le trajet" dans l'arène, ce qui fait que l'alter reste le même jusqu'à la mort, ou que le joueur sorte et retourne dans l'arène.

    Ensuite en effet j'avais une fonction pour la victoire, mais pas intégrée... J'ai refait la boucle entièrement. Ce que je veux, c'est des tours de combat. Un tour, un coup de l'ego, suivi d'un coup de l'alter. Ensuite, le joueur peut choisir un autre coup (fort, précis, rapide... qui consomment de la fougue différemment) ou se reposer (il prend un coup mais il regagne beaucoup de fougue). Maintenant j'ai ça qui fonctionne, mais j'ai cassé l'affichage des infos du combat. Et puis je me suis coincé dans l'arène, après une victoire ou un défaite ça enchaine directement sur un combat, impossible de sortir... m'enfin, je vais trouver je pense.
    * Jeux1d100 ? Le blog Jeux1d100.net sur les jeux indécents et Linux, et la chaîne YouTube *

  5. #95
    C'est chouette ! C'est toujours gratifiant je trouve de réussir à débusquer ses propres erreurs, à comprendre par soi-même ce qu'on n'a pas bien fait et surtout de s'en sortir

  6. #96
    Yop

    Outre un travail sur l'interface, une pseudo carte de 3x3 cases est en place, avec une case pour chaque lieu remarquable (forêt, collines, village, antre...). Dans chaque lieu, des actions spéciales sont (ou seront...) possibles. Par exemple, dans l'antre, la "maison" du joueur, l'Ego peut muter.

    J'ai posé les premières briques du système de mutation, pour le moment basé sur les 4 "humeurs". Plus tard ce sera basé sur des membres, organes, etc.

    L'Ego peut donc évoluer, en consommant sa matorg (matière organique). Il peut rater le processus, ce qui déclenche une dévolution (perte au lieu de gain).
    Plus l'Ego est évolué, plus le risque d'échec est important. Par la suite, il y aura des moyens d'évoluer sans risque... sauf à obtenir ces moyens...

    La ligne "Temps..." ne sert à rien pour le moment, sinon à me rappeler que je veux faire un système de temps qui passe...



    * Jeux1d100 ? Le blog Jeux1d100.net sur les jeux indécents et Linux, et la chaîne YouTube *

  7. #97
    Ca pose une ambiance sympa, tout ça
    @Grhyll / 3-50.net
    Projet actuel : oQo

  8. #98
    C'est sympas de voir que tu ne t'es pas démotivé, ça à l'air de partir dans le bonne direction c'est cool

  9. #99
    Je n'ai vraiment pas le temps de me consacrer à cet apprentissage, ou plutôt, j'utilise mon temps autrement que pour ça, du coup j'ai un peu avancé mais de manière quasi insignifiante.

    Revoyant toutes les ambitions à la baisse, je suis parti sur tout autre chose, plusieurs fois.

    Dernièrement les résultats les plus concrets ont été réalisé sur RPG in a Box (sujet de présentation ici : http://forum.canardpc.com/threads/11...-programmation ).

    Ça donne un truc comme ça :

    * Jeux1d100 ? Le blog Jeux1d100.net sur les jeux indécents et Linux, et la chaîne YouTube *

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •