Planète Casio - Projets de programmation - 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 - Projets de programmation - Flux RSS http://www.planet-casio.com 55 50 Programmes Casio, Jeux, Cours pour Calculatrices Casio. Sun, 17 Oct 2021 09:21:49 GMT Sun, 17 Oct 2021 09:21:49 GMT contact@planet-casio.com (Planet Casio) contact@planet-casio.com (Planet Casio) 5 Refonte de CalcCity https://www.planet-casio.com/Fr/forums/topic16902--.html Hey o/ Il y a quelques années, j'étais tombé sur CalcCity, de Menno, un jeu de gestion de ville façon Sim's City. J'avais été très séduit par le jeu, mais il restait quelques problèmes notamment des crash de la calto (plus le programme en Anglais :E) J'avais voulu refondre le code pour avoir un truc plus propre, mais j'avais pas le niveau et le code était vraiment horrible. Et puis, ces derniers temps, j'ai eu envie de faire un jeu de gestion façon Sim's City… et je me suis dit que nettoyer CalcCity et le porter pour Gint, pouvait être une bonne idée ^^ (le programme final serait posté sur la page du jeu d'origine). Je promet pas d'avancer vite, mais je pense le faire tranquillement. :p (Faut déjà que j'arrive à comprendre le code :waza:) Sun, 10 Oct 2021 10:55:17 +0200 ekiwi - moteur de jeu pour casio https://www.planet-casio.com/Fr/forums/topic16890--.html :here: ekiwi @rdp @RDP @Rdp @RdP @rdP @rDp https://i.imgur.com/ukUAlo7.png https://i.imgur.com/AdfzdUw.png https://i.imgur.com/7WvjK7Y.png #include <gint/gint.h> #include <gint/display.h> #include <gint/keyboard.h> enum OBJECT_TYPE{ OBJECT, CAMERA }; typedef struct { OBJECT_TYPE object_type, bopti_image_t *texture, int collision, int gravity, int visible, int position_x, int position_y int size_x, int size_y, int force_x, int force_y }object_t; int main(void){ int camera_x; int camera_y; extern bopti_image_t img_test_block; extern bopti_image_t img_player_1; object_t obj_test_block = {OBJECT,&img_test_block,1,0,1,20,10,32,32,2,0}; object_t obj_out_screen_block = {OBJECT,&img_test_block,1,0,1,115,10,32,32,0,0}; object_t obj_player = {OBJECT,&img_player_1,1,1,1,65,47,32,32,0,0}; while(1){ if(obj_test_block.visible == 1) dimage(obj_test_block.position_x-camera_x,obj_test_block.position_y-camera_y,obj_test_block.texture); if(obj_out_screen_block.visible == 1) dimage(obj_out_screen_block.position_x-camera_x,obj_out_screen_block.position_y-camera_y,obj_out_screen_block.texture); if(obj_player.visible == 1) dimage(obj_player.position_x-camera_x,obj_player.position_y-camera_y,obj_player.texture); dupdate(); } return 1; } salut! en ce moment je code un petit moteur de jeu, il actuellement il fonctionne très bien mais il y a pas beaucoup de fonctionnalités, mais ça va arriver dans les jours a suivre, je ne publie pas de version et ou de code source car le projet est clairement pas finit, je conte ajouter la gestion des touches ce vendredi et ce week-end. le logiciel peut déjà exporter en c/gint les objets avec les propriétés, mais pas encore de physique ni de dynamique. Fri, 24 Sep 2021 08:25:46 +0200 Ajouter un lecteur de carte SD a la graph 75+E https://www.planet-casio.com/Fr/forums/topic16882--.html Bonjour a tous, Voila un moment que l'idée me trotte en tête. Certains modèles de graph 75/fx9860 possèdent des lecteurs de cartes SD. (Les fx9860 modèles ga et gb sont trop différentes de la graphe 75+ pour être intéressant.) Le PCB de la graph 75 + E possède les emplacements pour souder la nappe du lecteur de carte. Malheureusement je n'ai pas trouvé de photo me permettant de voir en détail le PC du lecteur de carte et les composants manquants qui permettent de l'utiliser. C'est pourquoi je fait un appel a photo et documentation sur ces fx9860. Si vous en avez une sous la main, j'aimerais avoir quelques photos de ses entrailles. Je voudrait voir les variantes du matériel et des PCB en fonction de la génération de la calculatrice. Et si vous avez une calculatrice avec le lecteur de carte… signalez vous ! Je vous demanderais plus des photos détaillés du lecteur de carte, du PCB principal… et plus encore. Je vous laisse avec quelques photos de la graph 75/fx9860 en provenance directe de la bible. fx9860 g2 https://bible.planet-casio.com/common/hardware/screens/fx9860_g2/1.jpg fx9860 g3 https://bible.planet-casio.com/common/hardware/screens/fx9860_g3/1.jpg fx9860 g3s (Le modèle le plus proche de nos graph 75 + E) https://bible.planet-casio.com/common/hardware/screens/fx9860_g3s/1.jpg Tue, 14 Sep 2021 14:03:50 +0200 Rogue Life, ou tabasser des monstres dans une ruelle en toute légalité https://www.planet-casio.com/Fr/forums/topic16864--.html Un projet pas très ambitieux avec Masséna, essentiellement une arène de la taille de l'écran où il faut survivre à des vagues de monstres. Je dis pas très ambitieux mais ça se développe pas vite pour autant. x3 Voilà la tête actuelle du jeu en vidéo : https://www.youtube.com/watch?v=f_TSc--t_R4 Vous êtes un aventurer un peu baroudeur et grande gueule, mais vous savez ce que vous faites. Vous voulez donc conquérir les quelques arènes qui prétendent pouvoir poser un challenge... ou du moins c'est ce que vous prétendez, en fait c'est juste un défouloir. Chaque arène (niveau) est indépendante, et consiste en un certain nombre de vagues de monstres ; le but est de survivre jusqu'à la fin (sauf si j'ai la foi d'implémenter un mode infini, dans ce cas bon courage). Les techniques de combat incluent des attaques de base, et quelques compétences physiques et magiques liées à l'équipement. En termes de progression, a priori il n'y en a pas entre les niveaux. À chaque début d'arène on est niveau 1, et on progresse principalement en équipant des armes ou armures qui drop aléatoirement des monstres ou de façon prédéterminée dans le niveau. Le choix d'équipement disponible, qui vient avec quelques effets (défense, plus d'XP, vitesse, ce genre de choses) et skills (attaques supplémentaires, combos, magie, ce genre de choses) détermine le build pour la durée de l'arène. Et voilà l'état actuel des choses : Implémentation meh : Lephenixnoir, graphismes du feu de dieu : Masséna Moteur : ≥ 90% fini (un chouille sur-conçu) Mécaniques : ~ 50% fini (niveaux, vagues, bases de combat, physique OK ; équipements, skills, objets TODO) Animations : ≥ 120% du feu de dieu Contenu à proprement parler : ~ 30% fini (il reste beaucoup de choses à nommer/définir/dessiner) Voilà c'est pas mal pour une annonce je crois. (Et @RDP bien sûr, tu croyais y échapper Tituya ? :E) Sun, 29 Aug 2021 11:24:47 +0200 outil pour rendre compatible un add-in graph 35 +E II https://www.planet-casio.com/Fr/forums/topic16862--.html j'ai regardé un peu le site et j'ai vu un outil pour rendre compatible sh4, mais pas pour rendre compatibles les add-in qui utilise monochromeLib avec la graph 35 +E II! a ce que j'ai vu il suffit juste de remplacer une série d'octet. je vais voir si je vais réussir a coder ça. je pense m'aider du désassembleur de Ziqumu et de https://www.planet-casio.com/Fr/programmes/programme1795-last-gravity-duck-pierrotll-jeux-add-ins.html#62665 ce post Thu, 26 Aug 2021 16:31:48 +0200 Rinascita : un RpG en Python pour Graph 90+E https://www.planet-casio.com/Fr/forums/topic16855--.html Bonjour à tous ! Après avoir créé Asci, un moteur de jeu de rôle en Python pour la Graph 90, j'attaque un jeu de rôle en tant que tel ! Le jeu prend place dans le Royaume de Narfec. Et plus précisément, dans la ville d'Aspir. Cette dernière est gouvernée par la richissime Reine Acht d'Escid'mi. Comme souvent en ce temps-là beaucoup de puissants s'entouraient des meilleurs prophètes, des diseurs d'avenir et autres personnes du métier, la Reine Acht n'y fait pas exception et fait régulièrement appel à Smoastraund tant pour ses prédictions que ces connaissances médicales. Ce dernier, est astrologue et médecin reconnu, sa réputation a dépassé les frontières et beaucoup de ses quatrains se sont réalisés ; on dit sa science infinie. Sentant sa fin arriver, Smoastraund, vous confie, à vous, son vieil ami, une ultime et terrible prophétie qui prédit la fin prochaine de la Reine. Entre réalité et prédiction, saurez-vous déjouer les plans de vos adversaires pour sauver la Reine ? (ou échouerez vous lamentablement ?) `>> dépôt git du projet <<` Sun, 22 Aug 2021 23:43:41 +0200 [why?] bcasm -- language assembleur pour Basic Casio https://www.planet-casio.com/Fr/forums/topic16854--.html Un projet minuit passé. Ça faisait longtemps :whistle: bcasm est un petit language et assembleur Basic Casio, qui traduit du code syntaxe assembleur en Basic Casio exécutable on-calc. `bcasm` est restreint by design, et inspiré par le jeu TIS-100. Le prototype est fonctionnel, voici le meilleur jeu de tous les temps porté en bcasm : dumb.asm ;dumbasm clicker MOV 0 S ;draw position MOV 1 X MOV 1 Y MOV 0 ANS ;main loop LBL A ; display score LOC #include "waitkey.asm" ; increase score MOV S ANS ADD 1 MOV ANS S JMP A waitkey.asm ;wait for release LBL R MOV GTK ANS JEZ R ;wait for press LBL P MOV GTK ANS JNZ P Pour assembler ce code rien de plus simple, une ligne suffit ! $ bcasm dumb.asm 0->S 1->X 1->Y 0 Lbl A Locate X,Y,Ans Lbl R Getkey Ans=>Goto R Lbl P Getkey Ans=0=>Goto P S Ans+1 Ans->S Goto A `bcasm` écrivant sur STDIN, vous pouvez rediriger sa sortie dans un fichier. $ bcasm dumb.asm > dumb.txt Vous pouvez maintenant connecter votre calto et transférer dumb.txt dans sa mémoire secondaire ! Une fois la calculatrice ejectée, rendez vous dans le menu PRGM et utilisez LOAD pour charger dumb.txt (F6→F4). Enjoy! Les sources et instructions d'installation sont disponibles sur SourceHut avec un miroir sur le Gitea de Planète Casio. bcasm sur SourceHut Miroir sur le Gitea de Planète Casio #include NOP MOV ADD SUB MUL DIV NEG LBL JMP JEZ JNZ JMZ JLZ CLS DSP LOC Partagez vos « programmes » bcasm ici, pour contribuer au sentiment de :facepalm: -- Déso pas déso @RDP Fri, 20 Aug 2021 12:16:22 +0200 Asci : un moteur pour jeux de rôles en Python https://www.planet-casio.com/Fr/forums/topic16848--.html Bonjour à tous ! Avec la Graph 90 et son Python très… limité pas simple de faire un jeu de rôle… Asci est un moteur qui va être conçu pour vous simplifier la vie ! En terme d'utilisation, je vise quelque chose d'assez ergonomique, mais il y aura sans doute quelques points un peu délicat… Concrètement, à quoi va servir ce moteur ? Asci a avant tout pour but de rendre plus simple la création de petits jeux de rôles en Python. Ainsi, le moteur va se charger en grande partie de l'affichage, de l'avancée du scénario et de toute l'interface utilisateur. Vous de votre côté, il faudra que vous fournissiez une carte et un scénario sous forme d'évènements. `>> Le dépôt gitea <<` La carte du monde c'est à vous de la faire dans un variable à part, le nom ne sera pas imposé, mais il faudra respecter quelques règles (mettre la carte dans un tuple, en premier la carte du monde, après les maisons, les coordonnées des portes…) vous évoluez dans le monde façon pokémon : la carte bouge tout autour de vous Les mécaniques les combats sont laissés au développeur du jeu les points d'expérience sert au moteur pour savoir où il en est dans l'histoire, vous ne pouvez pas y toucher une liste de statistique est laissée libre, vous pouvez l'utiliser comme vous voulez. Ces statistiques peuvent être modifiée par les dialogues les touches 4, 6, 7 et 8 sont libres, vous pouvez y associer n'importe quelle fonction La mise en place du scénario les évèvements se découpent en catégories, à chaque catégorie correspond une fonction dans le code et un (ou des) symbole(s) qui déclenche(nt) ces évènements lorsque le joueur le(s) rencontre les évènements ne sont pas très dur à prendre en main, il s'agit de liste : `[XP_gagnée, "texte"]`. vous pouvez tout à fait mettre en place des dialogues complexes dans lesquels le joueur choisit sa réplique dans une liste Fri, 13 Aug 2021 11:36:13 +0200 ??? : Un Aventura-like rafraîchissant pour 90+E https://www.planet-casio.com/Fr/forums/topic16844--.html Salut ! C'est l'été (malgré la météo quelque peu désagréable), et été rime avec projet pour moi ! Comme vous avez peut-être pu le voir, j'ai commencé depuis peu un nouveau projet grandement inspiré de Aventura, le Royaume Poudingue (dont je vous invite à aller voir le Press Shift) Alors non ce ne sera pas un remake, juste un jeu répondant aux mêmes principes c'est à dire : :here: Une grande carte accessible dès le début :here: La possibilité de progresser comme on le souhaite :here: Pouvoir xp d'une certaine façon Je n'ai pas encore une idée bien claire du gameplay ou de l'histoire, mais je suis dans l'optique de faire un jeu avec un univers propre et détaillé. C'est pour cela que j'ai rajouté des personnages avec qui vous pouvez discuter :) Au niveau développement, j'ai privilégié le côté esthétique au technique : :here: Les cartes sont créées avec Tiled et peuvent posséder 2 layers. :here: Les collisions/objets sont indiquées directement dans le tileset grâce aux valeurs de Tiled. Il n'y a donc rien de plus simple que de définir un mur ! :here: Le joueur est constamment affiché au centre à la manière d'un jeu pokémon. La carte est donc affichée autour du joueur et non pas l'inverse. :here: Le joueur est animé. :here: Des personnages peuvent être dissimilés partout sur la carte avec des dialogues uniques. (Vous n'êtes pas à l'abri d'apparaître dans le jeu sauf refus catégorique :whistle:) Au niveau de ce que je souhaite rajouter : :here: Un intérieur (aléatoire ?) des maisons :here: Des capacités et de quoi xp :here: La carte sera divisée en 4 parties. Une par saison selon mes prévisions. :here: Une sauvegarde évidemment :here: Un tileset complet, pour l'instant c'est une partie de celui de pokémon rouge feu :E :here: Et des choses en plus, je ne vais quand même pas tout raconter ! Ce projet est avant tout un moyen d'apprendre le C et de découvrir les fabuleux outils de Lephenixnoir. Notamment fxconv qui est juste génial :) Je vais donc continuer tranquillement le développement du jeu en essayant de donner des nouvelles de temps en temps. Pour vous teaser, voici une panoplie de screenshots de l'état actuel du projet (la carte sert de test, je ne compte pas la garder) : https://www.planet-casio.com/storage/forums/DispCap3-16844.bmp https://www.planet-casio.com/storage/forums/DispCap4-183921.bmp https://www.planet-casio.com/storage/forums/DispCap5-183920.bmp Je ne donne volontairement pas de lien git Hope you enjoy :) @RDP <- C'est drôle, je me donne du travail pour dimanche Tue, 10 Aug 2021 00:44:46 +0200 WebP7, pour une énième solution de transfert à cheval entre les platformes https://www.planet-casio.com/Fr/forums/topic16841--.html C'est plus ou moins une bibliothèque JS servant à effectuer des transferts (ou autre commandes disponibles à travers le protocole p7) vers la calculatrice, utilisant l'API webUSB. Les sources (sur la forge) Choses à noter: :here: Je suis conscient que ça ne va probablement pas servir à grand chose puisque les nouvelles calculatrices utilisent des protocoles standards et que je crois avoir lu quelque part que maintenant que le module USB avait été rétro-ingénié (?), l'abstraction de BFile était la seule limite à la création d'une application de transfert utilisant ces fameux protocoles standards sur les calculatrices ne les utilisant pas ; sans oublier le fait que l'outil en ligne de commande est plus complet (pour l'instant), plus simple d'utilisation (probablement pour toujours au vu de mes aptitudes en CSS pour faire des interfaces sympas ⇒ raison pour laquelle j'oriente le projet vers une bibliothèque plutôt que vers un site ou une page WEB en tant que tel), et surtout plus rapide (en oubliant le fait que je n'ai pas implanté cette histoire d'envoi de paquets deux à deux dont je n'ai clairement pas saisi toutes les subtilités). :here: La totalité des commandes (dans le mode "classique", c'est à dire hors OS Update) n'a pas été implémentée et les mécanismes internes méritent quelques améliorations. :here: Même si j'ai dit que c'était à cheval entre les plateformes (notez ce magnifique jeu de mots digne des plus grands ;) ), c'est faux, laissez moi vous expliquer : L'idée de base était de faire un portage de P7 pour Android, qui viendra peut-être un jour, vu la simplicité de la chose (ce qui me fait d'ailleurs penser @Lephenixnoir que je n'oublie pas cette idée de portage de la suite sh-elf* pour Android, un jour ou l'autre, ça viendra...). Mais je me suis souvenu que Numworks utilisait pour les mises à jours des calculatrices clients des pages WEBs, que j'avais déjà testé sur mon téléphone et qui fonctionnait. De là me vint l'idée de reproduire la même chose sur calculatrice (le projet devait même permettre la mise à jour du système d'exploitation, chose qui est dorénavant au point mort, après avoir lu l'avis de @Cakeisalie5 sur le sujet), et c'est ainsi que je me suis embarqué la-dedans, en ce *magnifique* mois de Juillet. - Au dernières nouvelles, le projet fonctionne parfaitement sur Linux, voire normalement n'importe quel OS Unix (donc Android inclus, et comme j'aime bien le dire : ça, c'est carré dans l'axe), à voir MacOS (9 chances sur 10 que ça ne marche pas, quel plaisir ces problèmes de compatibilité mdr), du moment que le navigateur supporte webUSB (navigateur basé sur Chromium, Opéra (?), ou la nouvelle version de Edge (qui du coup est basé sur Chromium ?), mais pas Firefox :( ). - Côté Windows... marche pas :'( : théoriquement ça peut fonctionner, je me suis pas trop renseigné mais si j'ai bien compris, l'énumération des appareils pose problème, et ça à priori, sans installer de pilote(s) (genre Zadig qui permet de lister les appareils, mais ne fonctionne pas au moment de l'envoi des données, à creuser...), ça ne se corrige pas, ce qui est contraire à la volonté de base qui était de faire une interface simple, pour des gens simples, qui fonctionne directement ('Out-of-the-box', n'est-ce pas ?). En même temps chez Numworks ça fonctionne, mais je crois que c'est au moment de l'envoi des descripteurs que la calculatrice ajoute un champ avec les détails du pilote, hors on ne peut pas le contrôler (?). Bien évidemment je voudrais remercier Simon Lothar et Andreas Bertheussen pour leur documentation, ainsi que @Cakeisalie5 pour son utilitaire sur lequel je me suis parfois basé (plus précisément j'ai récupéré un ou deux commentaires que je trouvais biens, si ça pose problème je les retirerai, ainsi que la structure des fonctions internes, même si ce n'était pas parti pour au début). À part ça je me suis dit que je devrais faire comme tout le monde, c'est-à-dire ajouter une licence, mais je ne sais pas comment ça fonctionne juridiquement donc je suis moyennement chaud, de toute façon je ne vois pas qui irait voler un code pareil, et même si je mettais une licence, dans les grandes lignes elle ressemblerait à ça : C'est moi l'auteur, vous pouvez faire ce que vous voulez avec le code. Ce qui m'amène au dernier point de l'article : Désolé pour la qualité du code, je suis pas un monstre du JS et du haut-niveau en général (en fait je n'ai jamais fait de haut-niveau, excepté bien sûr du Python lors de ces excellents cours de SNT imposés en seconde et du Bash, mais bon le Bash...), quoique si on considère que le C est haut-niveau, je n'ai pas d'excuses, à part que mon niveau en tant que développeur C casse pas des briques (casse pas trois pattes à un canard si vous préférez). Bref... Voilà, voilà... Comme d'habitude toute remarque est bonne à prendre :) . Fri, 06 Aug 2021 16:23:57 +0200