Partage
  • Partager sur Facebook
  • Partager sur Twitter

2 fonctions pour animer un peu la console.

    8 janvier 2006 à 14:26:05

    J'ai créer deux fonctions pour animer un peu la console dans nos jeux.
    Je m'en suis personnellement servi pour mon jeu du plus ou moins.

    La première me sert pour mon texte d'introduction du jeu.
    Et fait apparaître le texte de notre choix lettre par lettre, à la vitesse de notre choix.
    Voici le code:

    //Fonction qui anime le texte avec une vitesse variant grace à Sleep();
    void affiche_anime(char ch[255], int sleep)
    { 
        char sh;
        int i;
     
        //Pour chaque lettre, on sleep un peu.
        for(i=0; i < strlen(ch); i++)
        {   
            sh = ch[i];
            printf("%c", sh);
            Sleep(sleep);
        }
    }


    On saisit une chaine de caractère et un temps qui sera l'intervalle entre l'apparition de chaque lettre en millisecondes.

    Exemple d'utilisation :

    affiche_anime("Bienvenue dans le jeu du plus ou moins", 50);


    (Seulement pour windows, pour faire plaisir a Rz0)
    La deuxième fonction fait la même chose, mais, en plus, interverti la couleur du fond d'ecran et de l'écriture. Toujours à la vitesse de notre choix, mais légèrement ralenti car la console rame.

    /*Idem que affiche_anime mais qui interverti en plus la couleur d'arrière plan
    et de premier plan à chaque lettre affichée*/

    void affiche_anime2(char ch[255], int sleep, char x, char y)
    { 
        char sh;
        int i;
        char commande[20]; /* tableau de 20 caracteres */
     
        //Pour chaque lettre on sleep un peu et...
        for(i=0; i < strlen(ch); i++)
        { 
           //On interverti suivant i pair et i impair.         
           if (i%2 == 0) sprintf(commande, "color %c%c", x, y)
           if (i%2 == 1) sprintf(commande, "color %c%c", y, x);
           //On affiche le changement
           system(commande);     
           sh = ch[i];
           printf("%c", sh);
           Sleep(sleep);
        }
        system("color 07"); //Si l'on souhaite revenir au couleur par défauts.
    }


    Il faut rajouter deux char qui correspondent à une liste des couleurs allant de 0 à f. Et qui seront les couleurs interverties.

    Exemple d'utilisation :

    affiche_anime("*****BRAVO****", 50, '0', 'c');


    Ces deux fonctions peuvent donc être utiles pour égayer un peu nos petits jeux en consoles.

    Vous pouvez bien sur les utiliser.
    Moi j'aimerais savoir ce que vous en pensez.
    Surtout au niveau du code, à vrai dire l'utilité on s'en fiche un peu.
    Vous pouvez même amélioré les fonctions ou proposer des suggestions d'améliorations.


    EDIT
    Lien vers mon plus ou moins utilisant ces fonctions (executable zippé)
    Lien vers le code source du même executable.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 janvier 2006 à 14:49:59

      Elles sont bien, mais il y a un problème: quand on veux afficher les variables, on fait comment?
      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2006 à 14:54:00

        Pas mal ^^

        J'avais fait aussi une petite fonction pour animer la console avec un texte qui se déplace verticalement ou autre.

        Vous pouvez avoir un aperçu ici

        et pour le code source regarder dans affichage.c ici

        ++
        • Partager sur Facebook
        • Partager sur Twitter
          8 janvier 2006 à 18:21:23

          C'est sympa.
          Mais j'ai regarder ton code.
          Et chez moi c'est impossible à compiler...

          En effet il n'accepte jamais les textcolor(); et clrscr();
          J'avais déja essayer avant...

          As-tu fait quelques choses de spécial pour que cela marche?
          Il ne me signale pas de librairie manquante.
          Quel est ton compilateur?

          EDIT
          Ah ben voila c'est bon.
          Il y a des problèmes avec la librairie conio.h pour certains sur Dev-C++.
          Mais j'ai installer un petit pack qui m'as permis d'y rémédier.
          Voici la page où tout est expliqué

          Sinon ton code source contient quelques erreurs. J'ai réussi à tout réparer et compiler le tout, ça marche c'est bon :)
          • Partager sur Facebook
          • Partager sur Twitter
            8 janvier 2006 à 18:46:28

            J'utilise la librairie conio, seulement dispo sous win.
            Si tu es sous linux, y'a la lib ncurse qui est son équivalent mais qui offre plus de possibilités.

            edit: quelle genre d'erreur ? tout marche parfaitement chez moi pourtant
            • Partager sur Facebook
            • Partager sur Twitter
              8 janvier 2006 à 18:55:10

              Ben je crois que tu as rajouter les fichiers .h à la va vite.
              Jouer.h ne sert à rien, il n'est pas inclu.
              Si il était inclu tu verrai qu'il y a des erreurs dedans.
              Il faut que tu enlèves #include "affichage.h" dans ton main.c et que tu le mette dans affichage.c
              Et aussi que tu mette #include "jouer.h" dans jouer.c
              La tu pourras corriger les quelques incohérences dans jouer.h
              Car tu fais des erreurs dans les prototypes.
              J'imagine que tu avais créer le programme avant et que suite au dernier cours tu as voulu integrer les header :)
              • Partager sur Facebook
              • Partager sur Twitter
                8 janvier 2006 à 19:04:28

                Yep, je galère un peu avec les prototypes ,en fait je capte pas trop quand metre quel header et pk mais bon ^^

                Sinon dans le même genre, j'avais fait un mini-rpg regroupant quelques ptites fonctions d'affichages mais pour les headers je pense que c'est pareil que le pile ou face et le code est fait a l'arache :euh:

                Enfin bref si ca interesse quelqu'une, l'éxecutable et les sources sont ici.

                ps: le rpg n'est pas fini, (même pas commencer le systeme de combat) manque de motiv ^^
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  8 janvier 2006 à 19:40:04

                  Pour mêtre quel header et pourquoi c'est simple :
                  Chaque header détien une liste de fonction.

                  Quand tu veut acèder a une fonction présise, qui est dans un header, tu inclut ton header au début de ton fichier.
                  C'est aussi simple que sa!
                  (En suite, le #ifndef + #define te permet d'éviter de re-inclure 3 fois le header, et de causer des multiples définitions)

                  Même si tu inclut Truc1.h et que Truc1.h inclut #hello.h, normalement, si tu veut utiliser une fonction de hello.h et une fonction de truc1.h, il te faudras inclure els deux. Oui le compilateur n'en a pas besoin, mais c'est une question de logique, sa permet au lecteur, celui qui regarde le code, de voi toute suite que l'on fera apelle a des fonctions de hello.h et des fonctions de Truc1.h, car l'utilisateur ne sait pas forcément ce qu'il y a dans Truc1.h!!!

                  Donc, la règle c'est : On inclut un .h quand on vas utiliser/définir une fonction dont le prototype se situe dans ce .h

                  Si tu a un message a la compilation du style "multiple definition of...", c'est que tu n'a pas mit els #define, que voici:
                  #ifndefine NOMDUHEADERENMAJUSCULE_H
                  #define NOMDUHEADERENMAJUSCULE_H 1
                  //Code ici
                  #endif
                  • Partager sur Facebook
                  • Partager sur Twitter

                  2 fonctions pour animer un peu la console.

                  × 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