Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [bibliotheque C]usefull.h : plein de fonctions utiles !
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

[bibliotheque C]usefull.h : plein de fonctions utiles !

Posté le 04/09/2014 20:04

Bonjour à tous !

Ne vous est-il jamais arrivé de vous dire, en commençant un projet en C(++), qu'il vous manquait plein de fonctions, que vous devrez piocher a droite a gauche, inclure 14 libraires externes pour 2 fonctions simples, pour un total d'une heure de boulot inutile?
Et bien maintenant, vous n'aurez plus a faire cela, grâce a usefull, une bibliothèque qui contient toutes les fonctions hyper-utilisée dans les jeux !

voici une liste de toutes les fonctions :


unsigned char key_down(unsigned char code); // fonction plus rapide et compatible SH4 de IsKeyDown()
int time_getTicks(); //renvoye le nombre de ticks (1/128 de seconde) depuis minuit selon le processeur de la calto
int getFps(); //renvoye le nombre de FPS
void setFps(int fpsWish); //regle le nombre de fps : 1 pour 128 FPS,2 pour 64, 4 pour 32, 5 pour 25 => 128/fpsWish
void PrintV(int X,int Y , int  variable); // affiche un nombre en X et Y en pixels
int max(int a,int b);  //renvoye le max
int writeFile(unsigned char* name,unsigned char* extension,unsigned char* source,int taille);
/*
fonction de sauvegarde
ecrit taille octets du tableau source dans le fichier name.extension
Pour ecrire un tableau d'int, castez simplement le tableau (unsigned char*)tableauDInt
Pour ecrire un int simple, faites writeFile(name,extension,(unsigned char*)&variable,4);
*/
int readFile(unsigned char* name,unsigned char* extension,unsigned char* reception);
/*
fonction de chargement de sauvegarde
ecrit le contenu du fichier name.extension dans le tableau reception
pour lui passer un tableau d'int, castez simplement le tableau (unsigned char*)tableauDInt
Pour ecrire dans un int simple, faites writeFile(name,extension,(unsigned char*)&variable); mais faites attention a ce que le fichier ne soit pas >4 octets
*/


Avec toutes ces fonctions très utiles, vous pourrez démarrer un projet sans avoir a recoder des choses que vous connaissez par cœur !


PS : je tiens également a préciser que je suis l'auteur de toutes ces fonctions (sauf PrintV, qui est la propriété de PierrotLL et key_down qui est l’œuvre de casimo), mais comme la bibliothèque existe depuis longtemps sans que je prenne le temps de la partager, certaines fonctions se sont répandues dans divers tutoriels

PS2 : Si vous l'utilisez dans un projet, vous n’êtes pas obligé de me créditer, ne vous inquiétez pas de ce coté la



Fichier joint


Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 30/01/2016 13:43 | #


Si les include sont placés de manière fortuite (notamment fxlib d'abord), le compilateur pour trouver les symboles par magie...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 30/01/2016 13:45 | #


Heu c'est à dire ?
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 30/01/2016 13:47 | #


Par exemple pour les headers, si tu utilises usefull.h qui nécessite des déclarations fxlib.h mais qui ne l'inclut pas, tu peux penser que ça va planter. Mais si par hasard dans ton fichier source tu inclus fxlib.h juste avant usefull.h... ben ça va marcher. Parce que le préprocesseur contient quelques artifices qui font que l'inclusion c'est littéral, il copie les contenus ; et pas une vraie gestion de fichiers.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 30/01/2016 14:15 | #


Ah bah oui fxlib est inclue dans MonochromeLib.c, qui est avant usefull.c .
Bon bah merci de l'info .

Ajouté le 30/01/2016 à 18:50 :
Hum , la touche AC/ON n'est pas gérée chez moi .

Ajouté le 30/01/2016 à 18:53 :
Oh God ... je me traîne une version comme ça depuis 2 ans...
#define K_AC 32


Du coup faudrait modifier les defines dans le fichier en DL.

Ajouté le 30/01/2016 à 19:00 :
Mais !! ça fonctionne toujours pas !

Ajouté le 30/01/2016 à 21:52 :
Dodormeur si tu passes par ici, ou sinon quelqu'un qui arrive à faire fonctionner la touche AC/ON, je veux bien qu'il m'aide .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 30/01/2016 22:52 | #


Tu peux pas programmer un add-in qui affiche la valeur de la touche pressée pour trouver le code de AC/ON ?
Après je sais que cette touche a un traitement un peu spécial parce qu'elle est complètement en-dehors de la matrice du clavier, elle est toute seule sur une ligne tout en bas.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 31/01/2016 09:37 | #


J'ai inclus fxlib dans usefull.c
Ca à réduit le nombre d'erreur mais ça ne veut toujours pas build

Les erreurs
Cliquer pour enrouler
I:\Programmation\Moteur de déplacement d'un personnage\usefull.c(26) : C1016 (W) Argument mismatch
I:\Programmation\Moteur de déplacement d'un personnage\usefull.c(26) : C1016 (W) Argument mismatch
I:\Programmation\Moteur de déplacement d'un personnage\usefull.c(26) : C1016 (W) Argument mismatch
I:\Programmation\Moteur de déplacement d'un personnage\usefull.c(26) : C1016 (W) Argument mismatch
I:\Programmation\Moteur de déplacement d'un personnage\usefull.c(157) : C1016 (W) Argument mismatch
I:\Programmation\Moteur de déplacement d'un personnage\usefull.c(157) : C2202 (E) Number of parameters mismatch

Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 31/01/2016 09:38 | #


Rajoute 0 en argument après str dans l'appel à PrintMini().
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 31/01/2016 09:43 | # | Fichier joint


Il ne reste plus que les argument mismatch mais il m'indique ça maintenant

** L2300 (E) Duplicate symbol "_OSVersionAsInt" in "I:\Programmation\Moteur de déplacement d'un personnage\Debug\moteur de dp perso.obj"

code en fichier joint
Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 31/01/2016 09:45 | #


La fonction OsVersionAsInt() est définie dans usefull.c, mais tu dois l'avoir à un autre endroit en même temps.
Remplace la définition de la fonction par un prototype dans l'un des deux fichiers, ou bien passe les fonctions en static.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 31/01/2016 09:49 | #


Dès que je passe en static, j'ai le même soucis avec une autre fonction

Ajouté le 31/01/2016 à 09:50 :
Ca me la refait avec const unsigned int sc0015[] = {SCA, SCB, SCE, 0x15};
J'ai mis un static devant et c'est enfin bon \o/ !
Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 31/01/2016 10:03 | #


Il n'y avait pas que la fonction OsVersionAsInt() qui était concernée visiblement Pour rappel, un symbole static n'est accessible que depuis le fichier dans lequel il est défini, ce qui évite les problèmes de conflit
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 31/01/2016 20:41 | #


Justement Lephé, c'est ce que j'ai fais, mais il faut croire que key_down(34) ne fonctionne pas , pourtant avec la librairie input de ninestar il me semble qu'elle fonctionne ...
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 24198 Défis: 170 Message

Citer : Posté le 04/02/2016 11:04 | #


AC/ON a toujours un traitement spécial à la base mais à plus haut niveau il n'y a pas de raison que ça ne fonctionne pas... désolé, sans tester plus je ne vois pas d'où ça peut venir.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 04/02/2016 11:21 | #


Kirafi a écrit :
pourtant avec la librairie input de ninestar il me semble qu'elle fonctionne
Justement ça ne fonctionne pas non plus
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 04/02/2016 14:35 | #


Ah oui j'ai confondu avec [F1] ...

Bon ben dommage .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 04/02/2016 15:32 | #


Merci c'est super pratique pour coder !!!
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 25 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd