Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gérer Projet ISN à quatre + Histoire interactive

Sujet résolu
    20 octobre 2014 à 0:30:18

    Bonjour à tous,

    Elève en Terminale S et ayant choisi la spé ISN (informatique en gros), 3 amis et moi devons réaliser un projet informatique pour l'épreuve du bac.

    Pour l'instant je développe conjointement avec un de ces amis une partie du code, la partie combat, qui sera fusionnée avec l'histoire qu'écrivent et codent les deux autres.

    Or, déjà à deux, les problèmes se posent : comment bien gérer la programmation s'il ont est plusieurs à bosser en même temps dessus ?

    J'ai vaguement entendu parlé de "logiciel de gestion de versions", or je sens que cela me dépasse déjà, et je n'ose l'imposer à mes amis, qui n'ont comme moi qu'un mois d'expérience en programmation.

    Pourriez vous m'indiquer quel logiciel est le plus simple et intuitif à prendre en main ? Si possible gratuit, autant le logiciel que hébergement du potentiel serveur.

    Je crois que c'est l'absence d'interface qui me fait peur, codant avec Geany, j'y trouve un certain... "confort".


    Ma question principale s'arrête là, la secondaire suit :

    Mes deux amis (qui codent une histoire interactive dans laquelle s'inscrira plus tard des combats) éprouvent dors et déjà des difficultés devant l'ampleur de la tache, et surtout, j'ai l'impression que leur manière de coder n'est pas appropriée au projet.

    Je m'explique : chaque réponse du joueur le mène à un embranchement différent de l'histoire, et ce pour CHAQUE réponse. Ainsi, l'arbre des possibles est déjà très long. De plus les indentations s'accumulent et je n'ose imaginer le résultat final s'ils continuent avec cette méthode.

    Des idées, conseils ? 


    Merci en tout cas de m'avoir lu, j'espère ne pas trop vous importuner. 

    Sachez tout de même qu'une réponse de votre part me ferait autant plaisir qu'elle m'aiderait, j’essaierais en retour d'aider à la mesure de mes compétences les autres personnes ayant besoin d'aide sur ce forum.

    DDFO



    -
    Edité par DDFO 20 octobre 2014 à 0:31:45

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 octobre 2014 à 0:56:19

      1 - Crayon et papier suffisent

      2 - Sans code on peut guère vous aider

      Pour conclure il nous faudrait les tenants et les aboutissants de votre projet. Si vous avez codé sans avoir un plan détaillé de votre projet, vous faites sans doute fausse route.

      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2014 à 8:43:39

        Salut,

        pour répondre à ta 1e question :

         http://fr.openclassrooms.com/informatique/cours/gerer-son-code-avec-git-et-github

        pour ta 2e question :

        tu pourrais avoir une variable pour le lieu,  et une autre pour l' événement en cours.

        Si tu as une interface graphique , tu pourrais même afficher une photo ou image style BD pour le côté déco, et une partie textuelle qui décris

        l' événement qui vient de se produire. Sans interface graphique ça va plus vite ,et je te le conseille pour ton 1e projet: 

        print(" Lieu   : {0} ".format(variable_lieu))
        


        Tu aurais ainsi le côté Livres Dont Vous Etes le Héro , imaginons un dictionnaire pour stocker les dialogues

        ==> " si vous avez tué le vampire , rendez vous au chapitre 238 ".

        Peut être qu'en renseignant le lieu associé à l' événement ça fonctionnerait pour obtenir le résultat.

        Pour mettre du piquant dans ton jeu , à part les combats tu enchaînes aussi avec des tests de chances , d' agilité , de force , d' intelligence etc.  des achats de matos magique / militaire , pourquoi pas un quiz sur des films ou livres en relation avec ton univers etc.

        -----

        Comme oldprogrammer je pense que tu dois faire simple la première fois, papier crayon à la BU avec tes potes c'est déjà très très  bien , le plus rapide et efficace pour ce travail.

        Vous pourrez faire une version 2 hardcore quand vous serrez aguerris.

        • Partager sur Facebook
        • Partager sur Twitter
          20 octobre 2014 à 11:08:45

          Je vous remercie pour ces réponses rapides, je sens néanmoins que je ne suis pas allé assez loin dans le cours pour en saisir les subtilités.

          Je vais donc m'avancer et après seulement intégrer tout ça.

          Merci beaucoup !

          • Partager sur Facebook
          • Partager sur Twitter
            20 octobre 2014 à 20:44:31

            Pas besoin d'aller plus loin. Apparemment c'est une espèce de "livre dont vous êtes le héros" que vous êtes en train de faire. La difficulté principale de ce type de livre c'est, comme tu l'a souligné, les multiples embranchements. Ça sera sûrement la plus grosse partie du travail, et celle-ci se fait avant de taper n'importe quel code. Donc il faut bien soigné cette partie et bien voir chaque embranchement. 

            Après les combat ça sera juste du tirage aléatoire (avec le module random). Si tu veux plus d'éclaircissement, n'hésite pas à nous éclairer un peu plus sur ton projet :)

            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien
              21 octobre 2014 à 23:55:26

              J'essaie justement de les enjoindre à calmer leur ardeurs à tout mettre sur code tout de suite, mais bon...

              Pour le combat en soi on ne rencontre pas vraiment de problème, quoique...

              En fait on a codé des fonctions  et... en fait je vais vous en montrer une :

              def bouledefeu () :
              	
              	global manche
              	global combat1
              	global PVj                   #Globalisation des portées de variables
              	global PVe
              	global INTj
              	global MANAj
              	global AGIe
              	
              	dmg = randrange(6,12) + INTj                              # On défini les dégats du sort
              	
              	esquive = randrange(0,30) + AGIe                  # On défini l'esquive de l'ennemi
              	
              	
              	
              	if esquive > 27 :                                # Si l'ennemi esquive
              		print("""
              Pendant votre incantation, l'ennemi a réussi à vous distraire, votre boule de feu est allée brûler un buisson...""")
              		MANAj -=2                        # On retire le coût du sort
              		print("""
              Ce barbecue feuillu vous coutera tout de même 2 points de mana, il vous en reste donc""",MANAj,"""points de mana.""")
              	else :                           # Si l'ennemi n'esquive pas
              		
              		PVe -= dmg               # On inflige les dégats à l'ennemi
              		print("""
              Vous terminez l'incantation de votre sort avant que l'ennemi ne puisse réagir. C'est sûrement pour cette raison qu'il est en train de brûler.
              """)
              		
              		if PVe > 0 :                  # Si ces dégats ne tue pas l'ennemi
              			MANAj -=2                 # On retire le coût du sort
              			print("""Il parvient à éteindre le feu avant de finir en rôtit, le laissant avec """,PVe,""" points de vie.
              
              Ce sort vous laisse avec """,MANAj,""" points de Mana.""")
              
              		else :                        # Si l'attaque tue l'ennemi
              			print("""Vous vous retrouvez en face d'un véritable brasier vivant, enfin... ça, c'était avant qu'il ne s'effondre en manquant de mettre le feu aux environs.
              
              Vous êtes en droit d'avancer que l'ennemi est décédé.""")
              			print("""---Tour """,manche + 1, """ terminé---
              """)
              			print("""Le combat est terminé ! Bravo !""")
              			combat1 = False                  # On arrête le combat



              Comme vous le voyez, cette fonction est un sort que lance le héro contre l'ennemi, donc tout est basé là dessus.

              Elle est appelé lors du tour du joueur, s'il a choisit d'utiliser la magie, puis d'utiliser ce sort, ça serait long de mettre tout le programme, mais si besoin en est, je le ferais.

              Or j'aimerais que l'ennemi ai aussi des attaques particulières, basées sur celle du héro, et je me demandais s'il l'ont ne pouvait pas creer une fonction "bouledefeu" et lorsqu'on l'appelle, on lui dise qui l'utilise contre qui et puis c'est tout.

              Comme ça, on pourra intégrer le fait que le héro peut se battre contre plusieurs ennemis, sans pour autant faire une fonction par interaction possible avec un sort ou une attaque. Si vous voyez ce que je veux dire.

              Merci pour l'aide !

              • Partager sur Facebook
              • Partager sur Twitter
                22 octobre 2014 à 8:52:47

                Bonjour,

                dépêchez vous de sortir la v.1 de votre jeu , te prends pas la tête. 

                Entraînes toi avec les listes, les dico, les tuples , les set voir même Ordereddict et tableaux. Y'a énormément de choses à faire rien qu' avec ça.

                Pour tes monstres tu te contentes d'une fonction riposte() . On dira que ton héro a toujours l' initiative pour la v.1 

                Ensuite , fonce lire le chapitre Programmation Orientée Objet. Dieu te parlera.

                Dis toi que " tous ces global , ça me fait mal "...

                • Partager sur Facebook
                • Partager sur Twitter
                  22 octobre 2014 à 12:53:45

                  Merci,

                  on va faire ça, de toute manière je  pense que le prof trouvera ça déjà largement suffisant, je place un peu de rp dedans et ça passera.

                  Pour les global, on savait pas trop, alors on a pris des précautions, un peu abusives certes mais vu que le programme tourne, on a pas touché.

                  Mais... si j'ai bien compris, mettre en global, c'est juste pour les variables qu'on veut que la fonction modifie à la fin ? Comme la vie, le mana et... c'est tout ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 octobre 2014 à 14:31:15

                    http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-python/portee-des-variables-et-references

                    http://python.lycee.free.fr/rurple/fr/inter/31-global.htm

                    C'est super important de bien capter le principe de portée des variables ...sinon tu va mettre des coups de boules à ton PC.

                    Quand tu DECLARES une variable à L'INTERIEUR d'une FONCTION, elle n'existe qu'à l'intérieur de celle ci comprendre que l' extérieur ne l'entend pas, un peu comme "dans l' espace , personne ne vous entendra crier"... En effet, quand la fonction se termine, cette variable "s'évapore".

                    Donc sois tu déclares ta variable en haut de ton programme bien en évidence , juste sous tes imports , soit beaucoup mieux , tu le stockes dans un objet.

                    -
                    Edité par buffalo974 22 octobre 2014 à 14:33:37

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 novembre 2014 à 22:54:58

                      Pardon pour l'absence de réponse, je n'avais pas vu qu'il y avait eu ... une réponse.

                      On a rendu notre petit projet la semaine dernière, après avoir découvert une phase de stress de débugage sérieux et de derniers ajouts.

                      Je dois avouer avoir... aimé ce stress, via teamviewer on a terminé le programme (la veille, cela va de soit) en butant sur de nombreux problèmes tels que l'attribution de stats cheaté à l'ia à la fin des combats, et... pleins de petits trucs.

                      On a eu les deux heures du cours d'ISN pour fignoler et parader devant les autres. ... Bon, en fait on a aider les autres avec leurs projets, qui pour mon plus grand plaisir n'était pas aussi poussé que le notre.

                      Bon, je passe pour un monstre en me relisant...

                      J'imagine que vous voulez voir ce qu'on a pu faire avec un mois d’expérience et environ une bonne quinzaine d'heure de codage ?

                       http://www.mediafire.com/view/1104x2z04x30ube/RPG_ARENA_1.0.py

                      Je ne doute pas une seule seconde qu'il y a plein d'erreurs dans le code, notamment d'optimisation avec l'abus de globalisation. De plus vous pourrez remarquer qu'aucun principe très compliqué n'est utilisé, il n'y a qu'un dictionnaire, à moins que ce ne soit une liste... pour les noms des mobs qui sont choisis en fonction du niveau du joueur.

                      Et maintenant nous sommes tranquilles, le prof nous a dis qu'il nous donnerait des conseils sur ce qu'on pourrait améliorer et on devra présenter notre projet devant le reste de la classe. Rien de compliqué, vu qu'on maîtrise tout ce qu'on a fait, mais on est à la limite de ce qu'on peut faire, je doute réussir à comprendre ces systèmes de classes (dans python) avant un moment.

                      Bref, voila.

                      Ah, j'allais oublié, vous pourrez noter la présence de deux easters egg, qui... foutent le bordel dans le code. Mais qui ont le mérite de fonctionner, à retardement pour la deuxième en tout cas.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Gérer Projet ISN à quatre + Histoire interactive

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown