[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
Citer : Posté le 04/09/2014 20:41 | #
Pour unsigned char key_down(unsigned char code); le char code on prend 31 pour EXE ou 30004 ?
EDIT :j'ai trouvé
Citer : Posté le 04/09/2014 21:08 | #
tu prend 31 comme en basic.
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)
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)
Citer : Posté le 04/09/2014 21:12 | #
@-florian66- : Un peu de logique, comment tu veux passer 30004 en unsigned char ?
Et même remarque que pour la lib de Ninestars, il n'y a aucun lieu d'utiliser des char même unsigned, alors que ce sont de valeurs entières, que la norme veut qu'on utilise des int et que de toute manière ça n'apporte rien d'utiliser des char.
Et pourquoi, sincèrement répondez-moi, pourquoi est-ce que vous nommez la lib par son header ?
C'est (ou c'était) pareil sur le wiki (article "fxlib.h"), c'est juste pas logique vu que le header... n'a rien à voir avec la lib vu que :
tu peux l'inclure sans utiliser la lib ;
tu peux utiliser la lib sans l'inclure ;
et tu peux avoir une lib sans header.
Enfin je suis un peu dubitatif avec cette lib, parce qu'elle n'a pas vraiment de but précis... je veux bien comprendre que toutes ces fonctions sont utiles, mais il n'y a pas vraiment de classification... Enfin ça c'est sans doute beaucoup plus personnel, il n'y a rien à reprocher de ce côté-là.
Indépendamment de tout ça le truc qui me stresse le plus, c'est le nom "usefull". Je sais que les deux existent, mais Google lui-même ne reconnait que l'orthographe "useful".
Citer : Posté le 04/09/2014 21:24 | #
Si tu parles de la fonction key_down qui renvoie un char, sache que ce n'est pas moi qui l'ai faite, et que du coup j'ai preferer respecter les droits d'auteurs et ne pas la modifier (c'est une fonction de casimo comme je l'ai dit ) mais c'est vrai que je pourrait modifier cela, mais bon, ce n'est pas non plus gênant
Et il s'agit plutôt d'une habitude, vu que dans tes propres fichiers, la seule reference a la bibliotheque sera... bibliotheque.h ! Du coup, je pense que cela viens de la
Et c'est surtout que cette lib renferme quasiment toutes les fonctions qui ont été demandée dans le chat, et du coup il suffira de linker vers cette page (par exemple : comment on affiche un nombre en C? c'est quoi la fonction SH4 de IsKeyDown? comment on écrit dans un fichier? (même si pour celle la il y a memory))
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/10/2014 19:19 | #
Je viens d'inclure cette librairie, mais j'ai plein d'erreur de compil' dans le fichier usefull.c, tels que :
Illegal-array-reference, illegal token, argument mismatch ...
Pourriez-vous m'aidez ? Merci d'avance
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 10/10/2014 19:24 | #
fait voir un peu comment tu l'inclus, et précise un peu les erreurs
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/10/2014 19:27 | #
Voici les erreurs :
Pour ce qui est de l'inclure, je rajoute simplement le .c dans "Source Files".
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 10/10/2014 19:29 | #
Arf, essaye de rajouter #include "fxlib.h" un coup?
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/10/2014 19:33 | #
C'est en bonne voie, plus que 3 argument mismatch ligne 26 et ligne 157, un argument mismatch et un number parameters mismatch.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 10/10/2014 19:40 | #
Tu veux dire qu'il te fait un argument mismatch a cette ligne?
}
pour l'autre, essaye de modifier PrintMini(X,Y,str);
en PrintMini(X,Y,(unsigned char*)str,1);
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/10/2014 19:50 | #
Merci Dodormeur, le problème du PrintV est réglé. Par contre j'ai toujours les erreurs à la ligne que tu viens de citer.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 10/10/2014 19:56 | #
Euh... ben la je ne sais pas t'aider
Est-ce que ton projet est un projet C++?
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/10/2014 20:02 | #
Non, il est en C
Par contre j'ai remarqué un autre problème : Undefinded external symbol "_RTC-getTick" referenced in ".../Debug/Map.obj".
J'ai essayé de supprimer le dossier debug, mais rien n'y fait.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 10/10/2014 20:07 | #
Ça par contre c'est pas normal du tout, vu que dans la bib il y a juste des appel a RTC_getTick, et non pas a RTC-getTick...
Sinon essaye de rebuild all
Ajouté le 10/10/2014 à 20:07 :
Et pour le return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF );
}, c'est le code de compatibilité, donc il est pas de moi, et chez moi il marche bien
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 10/10/2014 22:20 | #
Merci beaucoup Dodormeur, mon problème est résolu. J'ai supprimé le fichier debug, le g1a, fermer le sdk, relancer l'ordi et plus de problèmes.
Par contre j'ai toujours les erreurs ligne 157, mais elles n'empêchent pas la compil'.
Sinon, j'avais fait une faute de frappe ce n'est pas "RTC-getTick", mais bien "RTC_getTick".
Ta lib' est vraiment génial ! Dommage qu'on ne puisse pas les noter sinon, je lui aurait mis 10(/10). Il te manque une seule fonction pour que ta librairie de fonctions (très très) utiles soit au complet, c'est celle qui gère l'aléatoire : rand(x); .
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 31/12/2014 14:29 | #
Je sais pas trop où la mettre e telle est un peu sale, mais bon comme c'est un peu chiant a faire, je vais la mettre ici, au pire dites moi si je dois la déplacer
Ca sert juste a renvoyer le nom de la touche pressée dont le code est passé en argument.
{
switch(key)
{
// Numbers
case KEY_CHAR_0:
return "[0]\0";
case KEY_CHAR_1:
return "[1]\0";
case KEY_CHAR_2:
return "[2]\0";
case KEY_CHAR_3:
return "[3]\0";
case KEY_CHAR_4:
return "[4]\0";
case KEY_CHAR_5:
return "[5]\0";
case KEY_CHAR_6:
return "[6]\0";
case KEY_CHAR_7:
return "[7]\0";
case KEY_CHAR_8:
return "[8]\0";
case KEY_CHAR_9:
return "[9]\0";
// Letters
case KEY_CHAR_A:
return "[A]\0";
case KEY_CHAR_B:
return "[B]\0";
case KEY_CHAR_C:
return "[C]\0";
case KEY_CHAR_D:
return "[D]\0";
case KEY_CHAR_E:
return "[E]\0";
case KEY_CHAR_F:
return "[F]\0";
case KEY_CHAR_G:
return "[G]\0";
case KEY_CHAR_H:
return "[H]\0";
case KEY_CHAR_I:
return "[I]\0";
case KEY_CHAR_J:
return "[J]\0";
case KEY_CHAR_K:
return "[K]\0";
case KEY_CHAR_L:
return "[L]\0";
case KEY_CHAR_M:
return "[M]\0";
case KEY_CHAR_N:
return "[N]\0";
case KEY_CHAR_O:
return "[O]\0";
case KEY_CHAR_P:
return "[P]\0";
case KEY_CHAR_Q:
return "[Q]\0";
case KEY_CHAR_R:
return "[R]\0";
case KEY_CHAR_S:
return "[S]\0";
case KEY_CHAR_T:
return "[T]\0";
case KEY_CHAR_U:
return "[U]\0";
case KEY_CHAR_V:
return "[V]\0";
case KEY_CHAR_W:
return "[W]\0";
case KEY_CHAR_X:
return "[X]\0";
case KEY_CHAR_Y:
return "[Y]\0";
case KEY_CHAR_Z:
return "[Z]\0";
// Others
case KEY_CHAR_DP:
return "[.]\0";
case KEY_CHAR_EXP:
return "[E^]\0";
case KEY_CHAR_PMINUS:
return "[(-)]\0";
case KEY_CHAR_PLUS:
return "[+]\0";
case KEY_CHAR_MINUS:
return "[-]\0";
case KEY_CHAR_MULT:
return "[x]\0";
case KEY_CHAR_DIV:
return "[/]\0";
case KEY_CHAR_FRAC:
return "[FRAC]\0";
case KEY_CHAR_LPAR:
return "[(]\0";
case KEY_CHAR_RPAR:
return "[)]\0";
case KEY_CHAR_COMMA:
return "[,]\0";
case KEY_CHAR_STORE:
return "[->]\0";
case KEY_CHAR_LOG:
return "[log]\0";
case KEY_CHAR_LN:
return "[ln]\0";
case KEY_CHAR_SIN:
return "[sin]\0";
case KEY_CHAR_COS:
return "[cos]\0";
case KEY_CHAR_TAN:
return "[tan]\0";
case KEY_CHAR_SQUARE:
return "[x^2]\0";
case KEY_CHAR_POW:
return "[^]\0";
case KEY_CHAR_IMGNRY:
return "i";
case KEY_CHAR_LIST:
return "[List]";
case KEY_CHAR_MAT:
return "[Mat]";
case KEY_CHAR_EQUAL:
return "[=]";
case KEY_CHAR_PI:
return "[Pi]";
case KEY_CHAR_ANS:
return "[Ans]";
case KEY_CHAR_LBRCKT:
return "[[]";
case KEY_CHAR_RBRCKT:
return "[]]";
case KEY_CHAR_LBRACE:
return "[{]";
case KEY_CHAR_RBRACE:
return "[}]";
case KEY_CHAR_CR:
return "[CR]";
case KEY_CHAR_CUBEROOT:
return "[CBRT]";
case KEY_CHAR_RECIP:
return "[x^-1]";
case KEY_CHAR_ANGLE:
return "[Angle]";
case KEY_CHAR_EXPN10:
return "[10^x]";
case KEY_CHAR_EXPN:
return "[e^]";
case KEY_CHAR_ASIN:
return "[asin]";
case KEY_CHAR_ACOS:
return "[acos]";
case KEY_CHAR_ATAN:
return "[atan]";
case KEY_CHAR_ROOT:
return "[SQRT]";
case KEY_CHAR_POWROOT:
return "[Root^x]";
case KEY_CHAR_SPACE:
return "[SPACE]";
case KEY_CHAR_DQUATE:
return "[\"]";
case KEY_CHAR_VALR:
return "[r]";
case KEY_CHAR_THETA:
return "[theta]";
// Control codes
case KEY_CTRL_NOP:
return "[NOP]";
case KEY_CTRL_EXE:
return "[EXE]";
case KEY_CTRL_DEL:
return "[Del]";
case KEY_CTRL_AC:
return "[Ac/On]";
case KEY_CTRL_FD:
return "[F-D]";
case KEY_CTRL_XTT:
return "[X,O,T]";
case KEY_CTRL_EXIT:
return "[EXIT]";
case KEY_CTRL_SHIFT:
return "[SHIFT]";
case KEY_CTRL_ALPHA:
return "[ALPHA]";
case KEY_CTRL_OPTN:
return "[OPTN]";
case KEY_CTRL_VARS:
return "[VARS]";
case KEY_CTRL_UP:
return "[UP]";
case KEY_CTRL_DOWN:
return "[DOWN]";
case KEY_CTRL_LEFT:
return "[LEFT]";
case KEY_CTRL_RIGHT:
return "[RIGHT]";
case KEY_CTRL_F1:
return "[F1]";
case KEY_CTRL_F2:
return "[F2]";
case KEY_CTRL_F3:
return "[F3]";
case KEY_CTRL_F4:
return "[F4]";
case KEY_CTRL_F5:
return "[F5]";
case KEY_CTRL_F6:
return "[F6]";
case KEY_CTRL_CATALOG:
return "[CATALOG]";
case KEY_CTRL_CAPTURE:
return "[CAPTURE]";
case KEY_CTRL_CLIP:
return "[CLIP]";
case KEY_CTRL_PASTE:
return "[PASTE]";
case KEY_CTRL_INS:
return "[INS]";
case KEY_CTRL_MIXEDFRAC:
return "[MixedFrac]";
case KEY_CTRL_FRACCNVRT:
return "[FracConvert]";
case KEY_CTRL_QUIT:
return "[QUIT]";
case KEY_CTRL_PRGM:
return "[PRGM]";
case KEY_CTRL_SETUP:
return "[SETUP]";
case KEY_CTRL_PAGEUP:
return "[PAGEUP]";
case KEY_CTRL_PAGEDOWN:
return "[PAGEDOWN]";
case KEY_CTRL_MENU:
return "[MENU]";
case KEY_CTRL_RESERVE1:
return "[RESERVE1]";
case KEY_CTRL_RESERVE2:
return "[RESERVE2]";
case KEY_CTRL_RESERVE3:
return "[RESERVE3]";
default:
return "?";
}
}
Y'a des touches que je connais pas, genre RESERVE1, 2, et 3 ou PageUp ou PageDown, donc au passage si quelqu'un sait a quoi elles correspondent
Citer : Posté le 31/12/2014 14:30 | #
Ce serait pas plus optimisé avec des tableaux (su les codes des touches sont consécutifs) ?
Coïncidence ? Je ne pense pas.
Citer : Posté le 31/12/2014 14:31 | #
Le probleme c'est que le mappage change selon SH3/SH4 je crois, donc j'ai fait comme ca
Citer : Posté le 31/12/2014 14:31 | #
Arf, vire-moi ces \0 à la fin des chaînes, ils y sont par défaut ou le mec qui a écrit le compilateur est un incompétent.
Sinon tu devrais renvoyer un const char *.
Citer : Posté le 31/12/2014 14:33 | #
Le probleme c'est que le mappage change selon SH3/SH4 je crois, donc j'ai fait comme ca
Le mappage au niveau matériel ! mais vu que la lib ne change pas, les #define dans les .h ne changent (normalement) pas non plus...
Coïncidence ? Je ne pense pas.