Planète Casio - Tout le forum - Flux RSS http://www.planet-casio.com Programmes Casio, Jeux, Cours pour Calculatrices Casio fr-FR https://www.planet-casio.com/images/logo.gif Planète Casio - Tout le forum - Flux RSS http://www.planet-casio.com 55 50 Programmes Casio, Jeux, Cours pour Calculatrices Casio. Sun, 30 Mar 2025 09:59:42 GMT Sun, 30 Mar 2025 09:59:42 GMT contact@planet-casio.com (Planet Casio) contact@planet-casio.com (Planet Casio) 5 Functions inside of Run-Matrix on the fx-CG50 https://www.planet-casio.com/Fr/forums/topic18682--.html I am attempting create a function inside of Run-Matrix on the fx-CG50 similar to how Conversion add-in works on the calculator by clicking (OPTN ⇒ F6 ⇒ F6 ⇒ F3) when inside of Run-Matrix so I can get a popup on screen again similar to Conversion (I have attached a picture to show what I mean) add-in but I don't know how to put it into Run-Matrix I was guessing that this code may be right but I am not too sure #include <fxcg/display.h> #include <fxcg/keyboard.h> #include <fxcg/system.h> #include <fxcg/app.h> void show_popup() { Bdisp_EnableColor(1); Bdisp_AllClr_DDVRAM(); int x1 = 50, y1 = 30, x2 = 270, y2 = 100; Bdisp_DrawLineVRAM(x1, y1, x2, y1); Bdisp_DrawLineVRAM(x1, y2, x2, y2); Bdisp_DrawLineVRAM(x1, y1, x1, y2); Bdisp_DrawLineVRAM(x2, y1, x2, y2); PrintXY(60, 60, "2", TEXT_MODE_NORMAL, TEXT_COLOR_BLACK); PrintXY(140, 60, "3", TEXT_MODE_NORMAL, TEXT_COLOR_BLACK); PrintXY(220, 60, "4", TEXT_MODE_NORMAL, TEXT_COLOR_BLACK); Bdisp_PutDisp_DD(); int key; while(!GetKey(&key)); Bdisp_AllClr_DDVRAM(); Bdisp_PutDisp_DD(); } int main() { if (GetAppID() != APPID_RUN_MATRIX) { //potentially so its in Run-Matrix?? return 1; } int key; int step = 0; while(1) { GetKey(&key); switch(step) { case 0: if (key == KEY_CTRL_OPTN) step++; break; case 1: if (key == KEY_CTRL_F6) step++; else step=0; break; case 2: if (key == KEY_CTRL_F6) step++; else step=0; break; case 3: if (key == KEY_CTRL_F3) { show_popup(); step=0; } else step=0; break; } } return 0; } I am planning to make it a .g3a file using fxSDK and also develop using fxSDK which I got using WSL terminal. Any help appreciated Thank you! Sat, 29 Mar 2025 12:57:32 +0100 [Annonce] Jam Python #2 du 19 au 27 Avril - Préparez vous à coder https://www.planet-casio.com/Fr/forums/topic18680--.html Salut à Toutes et Tous, c'est avec le plus grand des plaisirs que nous vous annonçons la tenue imminente d'une Jam. En effet, Planète Casio a l'honneur de vous annoncer la seconde Jam Python ayant pour but de coder un jeu en Python fonctionnant sur nos machines préférées, qu'elles soient couleur et/ou monochrome. Ainsi donc, aura lieu du Samedi 19 Avril 2025 à 18h au Dimanche 27 Avril 2025 à 18h la seconde édition de Game Jam Python de Planète Casio. JamPython2Logo.png Le principe est on ne peut plus simple, vous avez une semaine pour coder un jeu en Python fonctionnant sur une calculatrice Casio et utilisant une des solutions permettant de faire tourner un programme écrit exclusivement en Python : :here: Applications Python officielles sur Casio Graph 35+E II / fx9860GIII / Graph 90+E / fxCG50 ou Graph Math+ :here: Application PythonExtra pour ces mêmes machines ou Prizm / fxCG10/20 :here: Application MicroPython de B. Parisse :here: tout autre addin permettant de lancer un script Python sur une machine Casio Bien entendu, votre jeu pourra tourner sur les machines monochromes ou couleurs, ou les deux cela va de soit. Le thème de la Jam sera révélé le Samedi 19 Avril à 18h, donnant ainsi le top départ du concours qui s'étendra sur 8 jours. Pour être comptabilisée, votre participation devra être remise au plus tard le dimanche 27 Avril à 18h en postant votre script sur le fil dédié qui sera créé pour l'occasion (la date et l'horaire du post faisant foi). Tout membre inscrit peut participer. Si pas encore fait, vous pouvez vous inscrire ici : S'incrire et vous pouvez par la même occasion vous présenter ici. Votre jeu sera évalué selon les critères usuels appliqués lors des CPC, à savoir avec le barème suivant : :here: Gameplay : 3 points :here: Graphismes et interface : 3 points :here: Narration et univers : 2 points :here: Level design : 1 point :here: Interprétations originales, les bonus : 1 point La catégorie Gameplay comprend tout le fond de votre jeu. On cherche à savoir si le principe est inventif, si les règles sont bien équilibrées, si la difficulté est correctement ajustée, et si les éléments utilisés sont bien exploités, par exemple. La catégorie Graphisme et interface concerne tout l'aspect visuel du jeu, ainsi que la gestion des contrôles. C'est là que vous pouvez exploiter tous vos talents d'artiste : Picture, animations, fluidité, tout est bon pour marquer des points. La clarté des contrôles fait aussi partie de cette catégorie. Dans Narration et univers, on s'intéresse à la partie scénaristique de votre programme. Identifier des personnages, expliquer qui ils sont et pourquoi ils sont là, placer un cadre et donner des objectifs permet d'améliorer grandement le ressenti du joueur. Les pistes sont infinies ! La catégorie Level design consiste à évaluer la façon dont les maps, énigmes, puzzles, niveaux, épreuves sont conçus. Pour gagner des points ici, il faut exploiter à fond les éléments introduits (par exemple des plateformes mouvantes dans un plateformer). Dans le rare cas où cette catégorie ne s'applique pas bien à votre jeu, on avisera. Et enfin, les Bonus sont un point supplémentaire attribué pour diverses raisons : éléments positifs ne rentrant pas dans le barème, interprétations originales ou inventives du sujet imposé, exploitation de genres rares de jeux, etc. Le code n'est pas évalué (sauf s'il y a des bugs partout !), et la durée de vie non plus. Grace aux dons de nos partenaires, nous pourrons faire bénéficier d'un joli cadeau aux développeurs des deux meilleurs jeux : :here: Lot #1: Graph Math+ en OS 2.00 avec MPM [et PythonExtra] préinstallés + des goodies de la trésorerie :here: Lot #2: Au choix, une coque ou une housse ; + des goodies de la trésorerie https://gitea.planet-casio.com/Lephenixnoir/CalcDB/raw/branch/master/images/large/gmathp.jpg Les résultas seront donnés le week-end suivant la fin du concours, à savoir le week-end du 3/4 Mai 2024. Soyez donc nombreux à nous proposer vos meilleures créations, préparez vos routines Python durant les quelques semaines qui nous séparent encore de cet événement ... Et au plaisir de tester vos programmes !!! Stay Tuned Sat, 29 Mar 2025 12:00:00 +0100 Sudoku in python https://www.planet-casio.com/Fr/forums/topic18681--.html As my first python program I decided to make Sudoku. https://i.imgur.com/i5zmGs9.jpeg Here's the link It's really not bad though IMHO- I'm a bit of a perfectionist. It has a nice interface and even a custom small number font. The code is probably not very pythonic or optimized though. I also had to keep it under 300 lines so I could use the Casio python script editor. Of course this would not have been possible without ExtraPython, so thank you to everyone involved in that! The game can only run on the ExtraPython add-in. Unfortunately there are no screenshots as I don't know how to build/run the emulator. Maybe someone else can take a few ss/gif? For this version there are no save states, 4 difficulties, and a limited amount of games available. Lephe tells me support for file read/write will hopefully be added to EP in the near future, and then I can add save states and 100s of games. Also possibly on the agenda for the future is a reveal/reveal all option. Let me know what you think, because I'm unsure if that's even a positive feature. If you have any other features requests/comments please let me know! Fri, 28 Mar 2025 02:54:20 +0100 Crawlers IA sur la forge : état du service et blocage https://www.planet-casio.com/Fr/forums/topic18679--.html Notre forge Git est actuellement harcelée par des crawlers utilisés pour entraîner des IA. Ce n'est pas que nous, c'est partout dans les news des sites techniques en cette fin de mois. Pour contexte, on se prend facilement 10 requêtes par seconde, depuis des User-Agent randomisés (qui n'osent pas révéler leur identité) qui requêtent depuis des IP parfois résidentielles (i.e. tout à fait légitime en surface) aléatoires dans des petits groupes. On fait ce qu'on peut pour essayer de rétablir le service mais c'est pas facile. Les habitués du forum connaîtront sans doute ma haine profonde de l'IA sur tous les plans ; sociétal, scientifique, environnemental, économique. Voilà notamment pourquoi :) Thu, 27 Mar 2025 19:34:33 +0100 Un équivalent graphique de std::cout et de printf pour Casio https://www.planet-casio.com/Fr/forums/topic18675--.html Hello les gens ! ^^ Pour simplifier le debugging de mes projets casio, j’ai conçu un flux de sortie graphique inspiré de std::cout, appelé casio::dout, et je vais vous le partager. J'ai aussi ajouté un équivalent de printf. Équivalent de std::cout pour C++ Il gère : -La composition de flux avec << -Les retours à la ligne \n -Les fins de lignes avec casio::end -Les types string, int, float, etc. Exemple d’utilisation casio::dout(10, 20, C_WHITE) << "Valeur : " << 42 << casio::end; casio::dout(10, 60, C_WHITE) << "Pi ~ " << 3.14159f << "\nApproximatif" << casio::end; Comment ça marche ? Le système repose sur une classe DoutStream qui encapsule : -Les coordonnées (x, y) initiales -La couleur du texte -Un curseur de position mis à jour dynamiquement Le texte est découpé ligne par ligne, chaque mot est affiché avec dtext(), et les sauts de ligne sont simulés en ajustant les coordonnées via dsize(). Intégration Incluez simplement le fichier dout.hpp dans votre projet, et utilisez casio::dout() comme un flux standard. Code : #ifndef DOUSTREAM_HPP #define DOUSTREAM_HPP #include <gint/gint.h> #include <gint/display.h> #include <string> #include <sstream> #include <iostream> namespace casio { struct DoutEnd {}; inline DoutEnd end; class DoutStream { public: DoutStream(int x, int y, int color) : startX(x), curX(x), curY(y), color(color) {} template<typename T> DoutStream& operator<<(const T& value) { std::ostringstream oss; oss << value; processText(oss.str()); return *this; } DoutStream& operator<<(DoutEnd) { // Force une nouvelle ligne newline(); return *this; } private: int startX; int curX; int curY; int color; void processText(const std::string& text) { std::string line; for (char ch : text) { if (ch == '\n') { if (!line.empty()) draw(line); newline(); line.clear(); } else { line += ch; } } if (!line.empty()) draw(line); } void draw(const std::string& text) { dtext(curX, curY, color, text.c_str()); int w = 0, h = 0; dsize(text.c_str(), dfont_default(), &w, &h); curX += w; // Avancer horizontalement } void newline() { curX = startX; int h = 0; dsize("A", dfont_default(), nullptr, &h); // Hauteur de ligne curY += h + 1; } }; // Interface comme std::cout struct dout_creator { DoutStream operator()(int x, int y, int color) { return DoutStream(x, y, color); } }; inline dout_creator dout; inline void formatFloat(float val, char* out) { int sign = val < 0 ? -1 : 1; val = val < 0 ? -val : val; int int_part = static_cast<int>(val); int dec_part = static_cast<int>((val - int_part) * 1000 + 0.5f); // arrondi sprintf(out, "%s%d.%03d", (sign < 0 ? "-" : ""), int_part, dec_part); } inline DoutStream& operator<<(casio::DoutStream& out, float val) { char buf[32]; formatFloat(val, buf); return out << buf; } inline DoutStream& operator<<(casio::DoutStream& out, double val) { char buf[32]; formatFloat(static_cast<float>(val), buf); return out << buf; } } #endif Équivalent de printf pour C dprint est une réimplémentation simplifiée de printf Ce n’est pas un printf complet : -Pas de gestion des drapeaux (-, +, 0, etc.) -Pas d’alignement ou largeur (%5d, %05d, etc.) -Pas de support Unicode ou internationalisation Fonctionnalités prises en charge -Position (x, y) initiale personnalisable -Couleur personnalisée via int color -Gestion des \n comme retour à la ligne visuel -Reconnaissance et rendu des formats : ▬► %d / %i → int ▬► %u / %lu / %ld → unsigned int, long, unsigned long ▬► %zu → size_t ▬► %f / %.Nf → float ou double avec précision personnalisée ▬► %x → hexadécimal (minuscule) ▬► %p → pointeur ▬► %s → chaîne de caractères ▬► %b → booléen (true/false) ▬► %% → pour afficher un % (Le format %b n’existe pas dans printf, mais dprint le supporte) Exemple d’utilisation dprint(10, 10, C_WHITE, "Bonjour\ntout le monde !"); dprint(10, 30, C_WHITE, "Nom: %s Score: %d", "Alice", 42); dprint(10, 50, C_WHITE, "Pi ≈ %.3f", 3.14159f); dprint(10, 70, C_WHITE, "Taille: %zu octets", (size_t)512); dprint(10, 90, C_WHITE, "État: %b", true); dprint(10, 110, C_WHITE, "Adresse: %p", (void*)0x12345678); dprint(10, 130, C_WHITE, "Hex: %x", 255); dprint(10, 150, C_WHITE, "Progression: 100%%"); Code : #ifndef DPRINT_H #define DPRINT_H #include <gint/gint.h> #include <gint/display.h> #include <stdarg.h> #include <stdio.h> #include <string.h> #include <math.h> inline void formatFloat(float val, char* out, int precision) { int sign = val < 0 ? -1 : 1; val = val < 0 ? -val : val; int int_part = (int)val; int dec_part = (int)((val - int_part) * pow(10,precision) + 0.5f); // arrondi sprintf(out, "%s%d.%03d", (sign < 0 ? "-" : ""), int_part, dec_part); } void dprint(int x, int y, int color, const char* fmt, ...) { char buffer[256] = {0}; int cx = x; int cy = y; va_list args; va_start(args, fmt); while (*fmt) { if (*fmt == '%') { fmt++; int precision = -1; if (*fmt == '.') { fmt++; precision = 0; while (*fmt >= '0' && *fmt <= '9') { precision = precision * 10 + (*fmt - '0'); fmt++; } } char temp[64] = {0}; switch (*fmt) { case 'd': case 'i': sprintf(temp, "%d", va_arg(args, int)); break; case 'u': sprintf(temp, "%u", va_arg(args, unsigned int)); break; case 'x': sprintf(temp, "%x", va_arg(args, unsigned int)); break; case 'l': fmt++; if (*fmt == 'd') sprintf(temp, "%ld", va_arg(args, long)); else if (*fmt == 'u') sprintf(temp, "%lu", va_arg(args, unsigned long)); break; case 'z': fmt++; if (*fmt == 'u') sprintf(temp, "%zu", va_arg(args, size_t)); break; case 'f': { double f = va_arg(args, double); if (precision == -1) precision = 3; formatFloat(f, temp, precision); break; } case 's': snprintf(temp, sizeof(temp), "%s", va_arg(args, char*)); break; case 'p': sprintf(temp, "%p", va_arg(args, void*)); break; case 'b': snprintf(temp, sizeof(temp), "%s", va_arg(args, int) ? "true" : "false"); break; case 'c': snprintf(temp, sizeof(temp), "%c", va_arg(args, int)); break; case '%': strcpy(temp, "%"); break; default: snprintf(temp, sizeof(temp), "%%%c", *fmt); // Unknown format break; } dtext(cx, cy, color, temp); int w = 0, h = 0; dsize(temp, dfont_default(), &w, &h); cx += w; } else if (*fmt == '\n') { int h; dsize("A", dfont_default(), NULL, &h); cx = x; cy += h; } else { buffer[0] = *fmt; buffer[1] = '\0'; dtext(cx, cy, color, buffer); int w = 0, h = 0; dsize(buffer, dfont_default(), &w, &h); cx += w; } fmt++; } va_end(args); } #endif Sun, 23 Mar 2025 19:06:51 +0100 Partenariats avec Calcuso et CASIO Éducation pour 2025 https://www.planet-casio.com/Fr/forums/topic18668--.html Une annonce un peu tardive, mais pleine de bonnes nouvelles ! Pour les événements de 2025 on a des sponsors comme jamais, et des lots uniques dont on compte bien vous faire profiter. :D Si vous voulez aller droit au but, vous pouvez consulter la trésorerie des lots dans ce topic : :here: Lots et goodies pour les événements Planète Casio CASIO Éducation Tout cela remonte aux Journées APMEP 2024. CASIO était bien sûr présent et étalait, parmi leurs nouveautés, de magnifiques nouvelles coques dédiées à l'achat groupé. ;) APMEP24-coque-light-luckycat.pngAPMEP24-coque-light-galaxy.pngAPMEP24-coque-mathp-luckycat.jpgAPMEP24-coque-mathp-galaxy.jpg Il y a deux designs : le « Lucky Cat » qui est symbole culturel japonais bien connu, et la « Galaxie » qui est pleine de couleurs. Les deux coques sont disponibles pour la Graph Light et la Graph Math+. Le Lucky Cat est gris sur la Light et rouge sur la Math+ ; la galaxie est identique sur les deux, à la taille près (la Graph Light étant plus petite). Nous avons profité de l'occasion pour demander des lots pour cette année, et CASIO nous a généreusement offert des calculatrices Graph Math+, une Graph Light, ainsi que ces superbes coques dont admettez que vous les adorez aussi. ;D goodies-2024-calcs.jpg Nous avons donc : 4 calculatrices Graph Math+ et une calculatrice Graph Light 2 coques Graph Light (une Lucky Cat grise et une Galaxie) 8 coques Graph Math+ (4 Lucky Cat rouges et 4 Galaxie) Merci CASIO de continuer à soutenir nos événements et nos activités ! :bounce: Calcuso On ne présente presque plus Calcuso, qui fait de la vente groupée de matériel et est présent sur le marché français des calculatrices depuis quelques années déjà (4-5 ans un truc comme ça ?). Calcuso était, sans surprise, aussi présent aux Journées APMEP, et c'est toujours un plaisir de les voir pour discuter. Nous avons (de façon un peu improvisée) conclu un petit partenariat, où nous mettons en valeur la Calcuso sur notre page d'accueil (vous aurez vu le lien dans la section « Réseaux sociaux et partenaires » sur la droite) en échange de lots. Qui sont très attirants puisque Calcuso offre des accessoires très uniques, notamment les housses et protections d'écran Wyngs. :D goodies-2024-protections-ecran.jpg goodies-2024-housses-1.jpg goodies-2024-housses-2.jpg goodies-2024-housses-3.jpg Calcuso fait de plus des gravures lasers personnalisées (habituellement pour graver le nom de l'établissement dans les commandes groupées), et nous offre une Graph Math+ à graver, texte qui sera laissé au choix du ou de la gagnant·e de ce lot. ;D Les housses feront de très bons seconds lots et un événement sera entièrement organisé sur les lots Calcuso avec la Math+ à graver et une housse formant deux lots. Nous avons donc : 4 protections d'écran Wyngs (2 pour la 35+E II, 2 pour la 90+E, et dans le futur pour la Math+) 6 housses Wyngs de différentes couleurs et textures, pour tous modèles confondus 1 Graph Math+ avec texte gravé personnalisé Merci Calcuso pour votre soutien, et bon courage pour les ventes ! :) Les événements de 2025 Le début de 2025 a été assez chargé côté administration, notamment en ce qui me concerne avec les restes du Puzzle de l'Avent et la bêta de MPM. Il n'y a donc pas encore de planning détaillé d'événements prévu, juste l'idée de fond de faire des événements plutôt petits avec ou ou deux lots à chaque fois. Si vous avez des événements favoris que vous voulez revoir, n'hésitez pas à faire signe dans les commentaires ! :D À bientôt sur Planète Casio ! Tue, 11 Mar 2025 14:34:31 +0100 Peut-on transférer des fichiers entre le 5800p et une calculatrice graphique Casio moderne ? https://www.planet-casio.com/Fr/forums/topic18667--.html Ce serait bien de pouvoir sauvegarder les données de mon 5800p sur une calculatrice avec interface USB... Tue, 11 Mar 2025 04:42:31 +0100 Un probleme pas comme les autres... https://www.planet-casio.com/Fr/forums/topic18666--.html Bonjour ! Je programme actuellement un petit moteur de jeu 2D style RPG en C. Pour le moment j'ai codé un ECS (fonctionnel !) mais je suis bloqué sur les maps... Voici le contexte : Les maps sont au format json lorsqu'elle sont stockés sur l'ordinateur et (de manière logique) il faut les convertir pour la calculatrice. Or, les maps contiennent les différentes layers de tiles MAIS, aussi et surtout, les différentes entités. Pour donner un exemple voici comment je crée une entité, ici le joueur : entity_t *player = entity_manager_add_entity(&game.entity_manager, "player"); rect_t player_bounds = {10.0f, 10.0f, 32.0f, 32.0f}; add_component(player, create_component(TRANSFORM_COMPONENT), player_bounds, PLAYER_DEFAULT_SPEED); add_component(player, create_component(SPRITE_COMPONENT), "player_idle_sheet"); add_component(player, create_component(ANIMATION_SYSTEM), 4, 0, PLAYER_DEFAULT_IDLE_ANIMATION_SPEED, true, true, false); add_component(player, create_component(PLAYER_SYSTEM)); (c'est beau hein :E ) Vous pouvez voir que ce n'est pas forcément simple de stocker ces différent types de donnés de manière propre dans une structure "map_t" par exemple... Donc voici ma question : Est-ce que ce serait plus propre de stocker la partie intéressante du fichier json qui contient toutes les définition des entités ou alors quelque chose de plus simple vous viendrai en tête ? En tout cas merci d'avance et j'espère que d'autres ont déjà eu le problème et donc une solution pas trop complexe... (et oui je vais publier le moteur) Mon, 10 Mar 2025 19:29:58 +0100 FX-CP 400+E Review https://www.planet-casio.com/Fr/forums/topic18665--.html http://i.imgur.com/IsWHjzE.mp4 Mon, 10 Mar 2025 12:13:59 +0100 Sending data over USB https://www.planet-casio.com/Fr/forums/topic18663--.html Hi, I am attempting to use the fxsdk/gint to engage in communication between my calculator and computer. I have attached the code I used on both ends to this post and I hope you can understand my logic from there. I only attempt to transmit a simple string, and whilst usb_fxlink_handle_messages is succesful, usb_read_sync blocks and usb_read_sync_timeout throws a timeout error. I suspect that the callback in fxlink_device_start_bulk_OUT isn't successful when sending my data, because if I call twice fxlink_device_start_bulk_OUT my usb_read_sync call just receives the header in place of my data. When browsing the forum for any advice I did find someone with a similar issue , but sadly it never seemed to be resolved. Sat, 08 Mar 2025 21:42:06 +0100