Version Française English Version

Planète Casio - Programmes, jeux et cours pour calculatrices Casio

Bookmark and Share
Bienvenue sur Planète Casio, n'hésitez pas à poser vos questions sur le forum, et pensez à rejoindre Planète Casio sur Facebook !
Spaceraider
Forums Casio - Projets de programmation

Index du Forum | Projets de programmation | [C]Easy Coding
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Posté le 03/07/2011 22:53

[C]Easy Coding:

SAlut à tous!
Je viens ici présenter Easy Coding, alias ECode, petit projet que je développe en même temps que coder en C des jeux/progs, ave cla précieuse aide de KekevVTT...

Qui n'a jamais eu marre d'avoir pleins de petites fonctions traîner ici ou là-bas, fonctions très utiles, mais que vous devez à chaque fois réécrire/recopier?

Avec Easy Coding, vous aurez une petite lib de fonctions toutes utiles et toutes chouettes, du Int to String, jusqu'à la détermination de la vlaeur d'un bit dans un int!

Désormais, ECode détient des fonctions de détections de touches de nouvelles génération, dignes de FAstKeyDown, mais avec la compatibilité en prime! Fini les versions G75 plus lentes que les G85+! Fini les boucles de jeu ralenties pour rien!

Voici une petite liste non exhaustive venant du .h actuel
typedef enum {EMUlATOR, G35, G75, G85, G85SD, G95, UNDEFINED} Model;


/**MODEL DETECTION**/
char isEmulator();
char isG35p75();
char isG75(); // BESOIN DE LA VALEUR!!!
char isG85();
char isG85SD();
char isG95();
char hasSD();
Model modelDetector();

/**STRING MANIUPLATION**/
char* toLower(unsigned char* str, unsigned int len);
char* toUpper(unsigned char* str, unsigned int len);
char* strMirror(unsigned char* str, unsigned int len);
char* strRotate(unsigned char* str, unsigned int len, unsigned char mov);
void printf(unsigned char x, unsigned char y, unsigned char str, int mode);
void printn(unsigned char x, unsigned char y, int n, unsigned char mode);

/**TO STRING OPERATIONS**/
unsigned char* intToStr(char* c, int n);
unsigned char* uintToStr(char* c, unsigned int n);
unsigned char* charToStr(char* c, char n);
unsigned char* ucharToStr(char* c, unsigned char n);
unsigned char* floatToStr(char* c, float f, int pecision);

/**TO NUMBER**/
char strToChar(char* c);
unsigned char strToUchar(char* c);
int strToInt(char* c);
unsigned int strToUint(char* c);

/**TO HEX**/
char* charToHex(char* result, unsigned char hex);
char* intToHex(char* result, unsigned int hex);

/**BITS OPERATIONS**/
char readBit_char(char num, char index);
char inverseBit_char(char num, char index);
char upBit_char(char num, char index);
char downBit_char(char num, char index);
char readBit_int(int num, char index);
int inverseBit_int(int num, char index);
int upBit_int(int num, char index);
int downBit_int(int num, char index);

/**KEY DETECTION**/
unsigned char KeyDown( unsigned char code);
unsigned char KeyUp( unsigned char code);
unsigned char AnyKey();


/**OTHERS**/
char* input(char* c, int x, int y, int longueur, char nb);
int numArray_char(char* arr);
int numArray_int(char* arr);


Ca donne envie?

Ce n'est qu'un projet, donc je ne publie pas directement les sources, mais peut-être après avoir étoffé le bousin

?-Pourquoi avoir fait cette lib?
R-Je me sentais pas d'avoir à chaque fois une lib standard de 2ko pour une fonction, donc j'ai fait ici des fonctions facilement sélectionnables, et qui ne dépendent de rien (sauf input, mais fxlib.h, c'est LE fichier, quoi!).

Ainsi vous pouvez avoir aussi bien une fonction d'appelée, que toute la lib, en un seul define!

LIB RELEASED! Sous license Creative Commons: smiley
C'est à dire que vous pouvez le modifier, le publier, l'utiliser, mais à condition de le republier sous les mêmes conditions ( même license) et d'iattribuer l'oeuvre originale, c'est à dire indiquer au moins mon pseudo Eiyeron dans les sources, ou dans le programme en execution.

Maj du 28/08/2011 à 1:23: AJout de la détection de la carte SD, et correction de la doc...
Mini Hotfix à 11:58: correction de AnyKeyDown.
Re Hfix pour recorrection. Décidemment!
05/09/2011 10:33 : Minif fix de nom de fonctions

18/09/2011 15:21: J'ai enfin les codes pour G75

13/10/2011: après un oubli, j'esaye de réparer mon eeruer en ajoutant d'autres corrections pour des fonctions. Il me reste à corrigerquelques trucs, mais il me faut tester.

18/10/2011: COrrections de KevkevVTT, qui mérite sa place de co-programmeur
Hey! KeyDOwn fonctionne avec un cpuspeed dans le caisson! o/

Fichier joint

smileysmileysmiley
smileysmiley



Pages: 1, 2, 3 | Suivante

Javierxd
Hors ligne
Membre
Niveau: Confirmé
Points: 1073
Défis: 8
Email | Message
Citer : Posté le 03/07/2011 23:03 |
J'ai pas très bien compris ce que fait ça...
----------------------------------
Calculatrices: g35+usb modifiée, PRIZM
Espagnol

Programmes
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 03/07/2011 23:04 |
Grosso merdo, c'est une lib de fonctions utiles sur un peu de tout...
----------------------------------
smileysmileysmiley
smileysmiley
Javierxd
Hors ligne
Membre
Niveau: Confirmé
Points: 1073
Défis: 8
Email | Message
Citer : Posté le 03/07/2011 23:08 |
a, ok.
----------------------------------
Calculatrices: g35+usb modifiée, PRIZM
Espagnol

Programmes
Kevkevvtt
Hors ligne
Membre
Niveau: Confirmé
Points: 790
Défis: 17
Email | Message
Citer : Posté le 04/07/2011 09:27 |
ça a l'air pas mal, même très bien mais tu devrais ajouter un commentaire pour décrire l'utilité de chaque fonction, car j'ai du mal a comprendre certaines fonctions (comme void charToHex(char* result, unsigned char hex);)

J'ai aussi des idées de fonctions a ajouter :
void printf(int x, int y, char* c)
{
locate(x,y);
Print(c);
}
void printfNumb(int x, int y, int n)
{
char c[20]="";
    
intToStr(c, n);
locate(x,y);
Print(c);
}

Ces fonctions sont assez explicites et faciles a comprendre.
Je suis sur que l'on peut en trouver d'autres comme ça, mais en tout cas, bravo pour ton initiative
----------------------------------
Programmer et rouler, Je ne fais que ça
PRO CONVERT le meilleur programme de conversion sur casio !
Totoyo
En ligne
Super admin
Niveau: Elite
Points: 7937
Défis: 66
Email | Message
Citer : Posté le 04/07/2011 09:51 |
Très bonne initiative qui facilitera d'avantage la programmation en C !
----------------------------------
PRGM 2 // Tout savoir sur sa Casio

Master 1 Aménagement du territoire - Mobilités Spatiales - (spécialité) Transports

Je ne réponds PAS aux messages privés concernant des problèmes avec la calculatrice. Merci de poser vos questions sur le forum !
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 04/07/2011 11:25 |
Merci bien.
@kev' je mettrai des commentaires, et une mini-doc...
Je vais prendre, ça peut servir
J'avais déjà pensé à locate, mais pas pensé à le mettre

Mais faut pas trop faciliter, car certaines fonctions, je ls mets en fonctions, car si je les mets en préprocesseur #define FONC (gnagna) (gna gna), on y perd en poids, mais on y gagne en vitesse; mais étant donné que c'est énormément source de bugs: je laisse en fonction.

Autre détail: printf() sera plus lent que le double appel locate + print, mais là, je compte mettre un petit switch pour gérer le cas (Reversed/Normal

Pour printf, pour x/y, un unsigned char suffit, car les coordonées ne dépassent pas 255

Ajouté le 06/07/2011 à 20:07 :
Ajout de fonctions!
Obtenez des int à partir de strings!
----------------------------------
smileysmileysmiley
smileysmiley
Binary_man
Hors ligne
Rédacteur
Niveau: Confirmé
Points: 942
Défis: 19
Email | Message
Citer : Posté le 06/07/2011 20:20 |
Cool ! Je pense que ça me servira.
----------------------------------
Calculettes : Graph 75, Graph 95, classpad 330 et FX-CG20 !!
Pylaterreur
Hors ligne
Membre
Niveau: Elite
Points: 2173
Défis: 8
Email | Message
Citer : Posté le 08/07/2011 10:58 |
Y a moyen d'inliner certaines de ces fonctions ?
Ca me fait chier de voir que pour une fonction de 2 lignes, non recursive, on ait a toucher autant a la stack
----------------------------------
Graph 85 SD
Domptez votre calculatrice avec le Basic Casio !
Kristaba
Hors ligne
Membre
Niveau: Vétéran
Points: 583
Défis: 22
Email | Message
Citer : Posté le 11/07/2011 03:56 |
Ohoho, vaut mieux faire des macro que se casser la tête a essayer d'inliner de manière un minimum standard en C >_<'

J'avais eu besoin de fonctions inline y'a quelques temps (impossible à écrire en macro), j'ai fait des tests pour voir ce que sortait les compilo en fonction des méthode utilisée pour avertir le compilo qu'il faut inliner la fonction (pour GCC au moins 5 ou 6 syntaxes différentes), et t'as rarement le résultat que t'attends. Un petit lien pour GCC en norme C99 (seule qui accepte officiellement le inline) par exemple: http://www.greenend.org.uk/rjk/2003/03/inline.html

Mais comme le compilo renesas suis pas la norme C99, et encore moins les conventions GCC, je ne sais même pas si il y a une syntaxe inline ou pas

Mais sinon, 100% d'accord avec (Ponce) Pylat' (oui, j'ai osé le faire >_<'), pour des fonctions de ce genre, il faut absolument faire une implémentation en macro (élémentaire quand ça ne doit rien retourner, ou que c'est une fonction qui effectue des opérations de bases entre les opérandes quoi) : même si pour le projet lambda tu verras pas la différence, le code est mieux optimisé en vitesse (en vu ce qu'il y a dans ces fonctions, il ne doit même pas gagner en taille).
Et puis je vois que je suis pas le seul à qui ça fait l'effet d'une craie qui grince bien fort sur un tableau de lire ça quoi

Et si tu fais un minimum attention à deux trois trucs Eiyeron, t'auras jamais rarement des problèmes avec tes macros t'en fait pas

(pour commenter le projet en général, par ce que c'est le topic quand même, je pense que c'est une bonne idée, mais cela implique d'avoir un code impec', entre autre par ce qu'il va être utilisé comme "base" par de nombreux autres programmeur :o)
----------------------------------
Une bataille navale avec Intelligence Artificielle sur Graph 35?
C'est ICI !

Projets en cours :
*CGUI++, Une GUI C++ multi-plateforme conçue pour fonctionner sur calculatrices.
*Tiles Creator, un environnement de création et gestion de ressources graphiques.
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 14/07/2011 17:41 |
Je sais pas pour les macros, j'ai pas trop envie, après, c'est écrit ainsi pour être plus lisible, m'enfin, je verrai...


Sinon mise à jour, rajout de futures fonctions de détection de modèles de calto! Mias il me manque la g75 normale
----------------------------------
smileysmileysmiley
smileysmiley
Siapran
Hors ligne
Membre
Niveau: Confirmé
Points: 2539
Défis: 17
Email | Message
Citer : Posté le 14/07/2011 18:05 |
demande à 01100010 01101001 01101110 01100001 01110010 01111001 01011111 01101101 01100001 01101110
----------------------------------

smiley Eiyeron Siapran Adbook Vdragon LIMachi smileysmiley
smiley
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 14/07/2011 18:08 |
Siapra, tu sais où est la porte? Sinon , je peux toujours t'aider à la trouver (à grand coups de buttkick)

Et i lfaut qu'il fasse le test, qu'est-ce que veux-tu que je fasse d'autre? Le spammer?
----------------------------------
smileysmileysmiley
smileysmiley
Siapran
Hors ligne
Membre
Niveau: Confirmé
Points: 2539
Défis: 17
Email | Message
Citer : Posté le 14/07/2011 18:12 |
Siapran avec un n stp

sinon je sais pas
propose-lui une récompense
----------------------------------

smiley Eiyeron Siapran Adbook Vdragon LIMachi smileysmiley
smiley
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 14/07/2011 18:13 |
Chia-bran*
(pour le bran ,pensez aux céréales all-bran, véritables laxatifs)
----------------------------------
smileysmileysmiley
smileysmiley
Siapran
Hors ligne
Membre
Niveau: Confirmé
Points: 2539
Défis: 17
Email | Message
Citer : Posté le 14/07/2011 18:19 |
je vois pas le ratporc
----------------------------------

smiley Eiyeron Siapran Adbook Vdragon LIMachi smileysmiley
smiley
Totoyo
En ligne
Super admin
Niveau: Elite
Points: 7937
Défis: 66
Email | Message
Citer : Posté le 14/07/2011 18:21 |
Par contre, je vois que ça floode
----------------------------------
PRGM 2 // Tout savoir sur sa Casio

Master 1 Aménagement du territoire - Mobilités Spatiales - (spécialité) Transports

Je ne réponds PAS aux messages privés concernant des problèmes avec la calculatrice. Merci de poser vos questions sur le forum !
Siapran
Hors ligne
Membre
Niveau: Confirmé
Points: 2539
Défis: 17
Email | Message
Citer : Posté le 14/07/2011 18:25 |
oui effectivement

dnc si un possesseur de G75 peut nous fournir les valleurs nous lui serions très recconnaissants
----------------------------------

smiley Eiyeron Siapran Adbook Vdragon LIMachi smileysmiley
smiley
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 17/07/2011 01:17 |
En attendant les résultats, je rédige la doc.
A l'heure où j'écris, quand le .c pèse 11ko (le cochon! ), la doc pèse 9ko, et j'en suis à l'hexa.
----------------------------------
smileysmileysmiley
smileysmiley
Purobaz
Hors ligne
Membre
Niveau: Aucun
Points: 1639
Défis: 108
Email | Message
Citer : Posté le 17/07/2011 14:50 |
Tu pourrais aussi ajouter une fonction Getkey performante et compatible avec tous les modèles.
J'y connais pas grand chose mais ça permettrait de régler le problème de Hard Game ou Orton
----------------------------------
smiley
Eiyeron
Hors ligne
Modérateur
Niveau: Confirmé
Points: 3505
Défis: 37
Email | Message
Citer : Posté le 17/07/2011 15:21 |
AHAHAHAHA!
Tant que je ne sais pas comment fonctionne ce foutu getkey, tu peux toujours t'accrocher, surtout qu'au départ, le rapid getkey vient de kristaba, si lui ne sait pas, je doute qu'on puisse savoir comment.

Mais déjà on peut faire un bon fix: si g85, alors radip key si pas g85, alors iskeypressed
----------------------------------
smileysmileysmiley
smileysmiley

Pages: 1, 2, 3 | Suivante

Index du Forum | Projets de programmation | [C]Easy Coding
Pseudo :
Adresse email :
Réponse :
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :?:  :arrow:  :!:  :here:
Ajouter fichier joint :


Me prévenir par mail lorsqu'une réponse est postée.

Un petit test (entrez le résultat en chiffres):
Combien font six fois quatre ?

Recherche :
Publicité et partenaires

Omnimaga
Casio Education
Casio Éducation
Space-Raider
Space-Raider
GameMaster
GameMasters.fr

Jeux Casio - www.planet-casio.com v3.0 © créé par Neuronix et Muelsaco 2004-2012 | Il y a 26 connectés | Nous contacter | Recherches effectuées
Rugby Manager | Jeu de handball | Jeu de foot | Jeu de rugby | Jeu de tennis | Space raider | Sublinet | Top-cinema, films, cinéma, séries | Pension pour chats

Planète-Casio est un site communautaire indépendant et n'est donc pas affilié à Casio | Toute reproduction de Planète-Casio, même partielle, est interdite
Les fichiers, programmes et publications postés sur Planète-Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des copyrights
Merci de respecter le travail des autres ! | CASIO est une marque déposée par CASIO Computer Co., Ltd