La Revue des Projets - 119
Posté le 26/08/2018 18:00
Bonjour à tous !
La vie existe-t-elle ailleurs que sur Terre ? Et bien oui ! Dans une galaxie lointaine et inconnue, Autour d'une petite étoile qui vie des hauts, et des bas ; 5 planètes gravitent... L'une d'elle est habitée par des êtres étranges, reclus mais sympathiques. Ils forment une communauté soudée, animée du désir d'aller de l'avant de pousser toujours plus loin leurs connaissances du monde et que l'on appelle "Casionaute". Cette planète vous la connaissez tous c'est Planète-Casio et ce soir est un grand soir puisque c'est le jour de notre rendez-vous hebdomadaire !
Bienvenue dans la Revue des Projets ! Cette semaine quelques beaux projets en perspectives : nous aurons ce soir l'honneur d'accueillir pour la seconde fois consécutive notre cher admin Dark-Storm ainsi que Redeyes qui nous entretient de ses avancées, nous aurons l'aimable surprise d'une visite de Zezombye ainsi que de notre cher Ninestars qui fait maintenant partie du Panthéon des programmeurs sur calculatrice Casio. On vous souhaite une bonne lecture pour cette Revue des Projets bien remplie !
Nous en rêvions, et il nous en a parlé,
Nous l'avons encouragé et il nous l'a fait !
Je vous parle du Sprite-Optimiser !
Dark Storm a écrit :Hi!
Après un petit mot sur un projet perso, un grand mot sur un truc qui se veut beaucoup plus grand public. J'ai nommé le
Sprite Optimizer !
C'est un outil qui sert à générer un code Multi Drawstat assez optimisé, pour dessiner en Basic mais sans prise de tête tous vos sprites, ou du moins ceux qui ne sont pas trop gros.
Comment ça fonctionne ? Tout est indiqué sur la page de l'utilitaire, ou directement dans la doc dispo sur
la forge.
Pour les utilisateurs de GNU/Linux, c'est assez simple, il suffit de cloner le dépôt, d'installer les dépendances avec
pip et de lancer le script comme indiqué dans les exemples.
Pour les utilisateurs de Windows, j'ai écrit
des instructions qui je l'espère seront claires et fonctionnelles. Si vous pouvez me confirmer que tout va bien, je vous en serais reconnaissant.
Bref, voici un exemple de ce que produit le Sprite Optimizer.
![](/files/forums/drak_gen-15315.png)
drak.png processed in 73 lines (11.5s)
Graph(X,Y)=({16-2T, 7-7T, 11-11T, 5-5T, 17-11T, 14-6T, T, 31-31T, 20-26T, 9-10T, 21-31T, 26-27T, 17-23T, 9-8T, 12-18T, 7-14T, 27-36T, 29-34T, 4-4T, 4+4T, 26-22T, 2T, 16-11T, 18-19T, 28-25T, 23-26T, 16-19T, 11-14T, 15-20T, 12-17T, 9-15T, 22-20T, 22-22T, 19-21T, 16-18T, 12-11T, 14-15T, 15-17T, 5-4T, 1, 2-4T, 29-32T, 25-24T, 21-17T, 25-27T, 23-27T, 12-14T, 10-14T, 27-26T, 25-24T, 14-12T, 15-17T, 13-15T, 9-8T, 2T, 2-4T, 26-30T, 14-18T, 26-31T, 22-27T, 19-21T, 30-30T, 29-29T, 24-24T, 21-21T, 17-17T, 14-14T, 14-14T, 13-13T, 12-12T, 6-6T, 2-2T, 1-T}, {26-27T, 21-32T, 21-31T, 20-29T, 24-32T, 2-T, 11-3T, 18-25T, 15-8T, 10-3T, 27-29T, 13-19T, 11-17T, 21-27T, 23-23T, 6-T, 27-29T, 21-21T, 20-25T, 22-25T, 7-4T, 28-32T, 28-34T, 13-7T, 25-33T, 14-11T, 15-17T, 8-8T, 24-22T, 6-6T, 14-7T, 20-21T, 11-13T, 7-8T, 5-5T, 30-32T, 20-18T, 12-10T, 28-30T, 11-9T, 28-30T, 18-15T, 24-20T, 17-19T, 8-12T, 26-30T, 17-13T, 10-10T, 25-27T, 21-23T, 16-17T, 12-12T, 10-12T, 17-19T, 13-14T, 15-15T, 14-11T, 2+2T, 27-32T, 27-29T, 17-23T, 26-26T, 20-20T, 29-29T, 29-29T, 29-29T, 28-28T, 19-19T, 26-26T, 20-20T, 16-16T, 20-20T, 29-29T})
Une nouvelle qui ne vous autorise plus aucune fainéantise : vous allez pouvoir faire de magnifiques sprites de personnages !
Nous continuons (pas la poésie, les projets) avec
Redeyes qui continue dans son projet
Sword Burst Zero ! Petit rappel des épisodes précédent : Sword Burst Zero est un jeu de rôle dans lequel vous devez sauvez un étrange univers parallèle sans quoi le monde réel tombera également...
RedEyes Kurenai a écrit :J'aimerai vous exposer les avancées de la grande rénovation de Sword Burst Zero Proto-Z en mode graphique. C'est un rpg qui m'a été inspiré du jeu vidéo Megaman (Rockman) Zero sur Game Boy Advance, où je trouvais que les images de dessins au cours du jeu faisaient un très beau rendu. J'ai donc essayé d'adopter cette idée dans mon propre jeu.
Alors, j'ai terminé l'encodage du menu principal avec le système de sauvegarde, de réinitialisation du jeu, de chargement de la partie sauvegardée, la rubrique des armes, la carte d'identité ainsi que quitter le jeu sans sauvegarder où s'affiche la sauvegarde précédente avant de confirmer son choix. Avec les arrangements graphiques, il me reste environ 20 ko de mémoire principale restante en tout pour continuer à élaborer les maps du jeu et les différents événements de l'histoire... Il se peut du coup qu'il y ait moins de pictures que dans la version 1.1 pour pouvoir récupérer un peu de mémoire principale afin de poursuivre le développement. Cela dit, il y aura tout de même 3 pictures à 2064 octets. Elles serviront à conserver une map actuelle pour que les sprites se déplacent, pour enregistrer l'écran lors des dialogues, et une pour le moteur de combat.
J'ai ainsi donc procédé à ces différentes modifications pour récupérer un maximum de place pour entamer la suite du scénario pour cette première partie. Donc, vous vous en doutez bien, vous aurez l'occasion de combattre dans le jeu.
De plus, il y aura de nouveaux personnages qui joueront un rôle important dans l'histoire, je ne vous en dirai pas plus pour ne pas tout vous spoiler. Cela dit, voici tout de même quelques images du menu principal que j'ai retravaillé ces derniers temps:
C'est tout pour le moment. Je vous tiendrai au courant des prochaines avancées sur le
topic officiel.
N'oubliez pas que tout ceux qui veulent faire partie des différents administrateurs réseau du Online-Universe peuvent se manifester sur le topic!
Un jeu chaque fois plus beau, plus complet, mieux ficelé. C'est un projet rondement mené, qui avance sûrement.
La suite sans transition avec
Zezombye et son MicroPython sur calculatrice ! Un projet loin d'être "micro", démonstration :
Zezombye a écrit :CasioPy (portage de MicroPython sur calculettes monochromes) avance, et après avoir surmonté un obstacle concernant les arguments variadiques, j'ai pu avancer sur l'interface.
Du coup quelques screens :
- L'écran de sélection des programmes
- L'écran d'édition
- Et enfin, l'écran d'exécution (lorsqu'on appuie sur le bouton [EXE]) :
Niveau fonctionnalités de python, rien à dire malheureusement : il faut que je trouve pourquoi la fonction pow() ne marche pas.
Maintenant, quelques sondages :
- Concernant l'icône : laquelle vous préférez ?
- Concernant le menu des programmes, je pensais faire un arbre comme ça :
Dites si vous trouvez qu'il faut ajouter une nouvelle catégorie (mais dans ce cas ça fera 2 écrans), changer le nom des catégories, ajouter d'autres mots clés ou en changer de catégorie.
Je rappelle que CasioPy est destiné à la terminale, et donc à des algorithmes simples, donc par exemple je n'ajouterai pas les mots clés "yield" ou "with" parce qu'ils ne sont pas utilisés dans un python simple.
- Concernant le clavier, je pensais le redéfinir comme ça :
Les "?" sont des emplacements libres pour lesquels je n'ai pas d'idée (peut être ajouter d'autres mots clés moins utilisés mais possibles, comme "pass", "class", "self", "as", "in", "is").
On pourrait également remplacer les touches de fonctions (log, sin, cos, tan et leurs opposés) parce que c'est pas très utile en algorithmie
Du coup voilà, dites ce que vous en pensez
![](https://www.planet-casio.com/images/smileys/hehe.gif)
Félicitation c'est un projet complexe qui demande du temps et de l'investissement, deux choses pas toujours simple à fournir de manière régulière... Mais Zezombye y parvient malgré tout !
Notre invité spécial rien que pour vos yeux mesdames et messieurs
Ninestars amène à son terme son énorme projet : Windmill ! Un moteur graphique 3D puissant et graphiquement très réussi ce projet mériterais tous les Casio Award : le plus beau, le plus ambitieux, le plus complexe,...
NineStars a écrit :Jour 18
![](http://img110.xooimage.com/files/7/5/c/screenshot5-54fd209.png)
Windmill avance toujours, bien que la dernière vidéo soit impressionnante, il reste beaucoup de choses à faire.
Voici les nouveautés de la semaine :
- Réorganisation du code. J'ai ajouté une class Player et une class Engine avec un tas de petites modifications. Maintenant on peut créer son propre moteur physique et de gestion du jeu totalement indépendant du rendu 3D.
On peut même créer des moteurs physiques différents. Je suis en train d'en coder 2 :
>> Moteur de déplacement d'un personnage. En vue classique style FPS, on peut courrir, sauter, regarder dans toutes les direction (@Lephé : tout est fluide), interagir avec les objets (porte, trappe, ...)
>> Moteur de création de map. En vue de haut uniquement, on peut selectionner un objet, le déplacer, le tourner et observer ses coordonnées en temps réel. Une fois au bon endroit, il suffit d'écrire les coordonnées en dur dans le code. Très pratique pour créer une map.
- Ajout des billboard. Ce sont des sprites qui font toujours face au joueur. Il tournent sur l'axe vertical pour toujours faire face à la caméra. J'ai crée des arbres avec et des personnages avec.
- Ajout des masques alpha. Chaque texture doit avoir un sprite, et peut avoir un masque. La texture est dessinée que si le pixel du masque est noir.
- Ajout des sphere englobantes. Au chargement d'une nouvelle map, Windmill calcule automatiquement une sphere englobante pour chaque objet. Ceci permet de faire un test rapide. Si la sphere n'est pas à l'écran, aucune utilisté de vérifier si tous les triangles à l'intérieur sont à l'écran. Pour l'instant j'ai fais l'algo pour créer le spheres, il me reste l'algo pour savoir si elles sont à l'écran. J'ai mesuré les fps avant pour faire la comparaison.
- Ajout d'un tas de petites modifications.
- J'ai commencé à rédiger un manuel complet pour utiliser Windmill
Donc voilà, pas mal de nouveautés, c'est à chaque fois de plus en plus impressionnant
![](https://www.planet-casio.com/images/smileys/wink.gif)
Vous l'avez lu c'est juste... incroyable : tous le monde pourra bientôt réaliser les plus impressionnants graphismes en 3D en un claquement de doigts ! Qui se charge du premier Assassin's Creed ?
Un invité surprise s'est caché entre les articles attendant patiemment que je tombe dessus :
Shadow15510 a écrit :
Coucou tous le monde ! juste un 'tit mot pour vous dire que j'ai
presque terminé mon ("mon" c'est égoïste Lephé et Dark-Storm ont plus bossé que moi sur le projet)
Tamacasio.
Il me reste néanmoins quelques détails à voir c'est pourquoi je fait appel à vous, chers casionautes ! Je cherche actuellement des mini-jeux à inclure dans le projet (actuellement je n'en ai qu'un...
![](https://www.planet-casio.com/images/smileys/confused2.gif)
) je suis preneur pour tout idée de nourriture (boissons comprises) Si vous avez des idées merci de m'en faire part
ici !
Merci d'avance et qui sait ? A une prochaine fois peut-être...
![](/storage/staff/Tamacasio.gif)
Les images sont un peut moins affreuse...
Si vous avez des heures à perdre le dimanche matin entre le petit-déjeuner de 8 heures et la collation à 10... vous avez de quoi vous occuper un peu : chercher des idées des idées de nourritures
Cette semaine 8 programmes ont été postés
Oui cher lecteur ! 8 programmes ça fait deux mois que nous n'avons pas eu autant de programmes en une seule semaine !
Nous sommes heureux de vous présenter :
Zork de
Djpadbit Une adaptation du jeu d'aventure du même nom.
Pokémon Casio de
Redeyes Un jeu dans lequel vous devrez battre une flopée de maître pokémon avant le boss final...
Nombres Premiers de
KikooDX Ah ! un utilitaire : cela faisait longtemps
![](https://www.planet-casio.com/images/smileys/hehe.gif)
! celui-là permet de connaitre les nombres-premiers entre 1 et 1000.
File Changer de
KikooDX permet de changer le fichier dans lequel les listes sont stockées.
Space Invaders de
Benji Un jeu indémodable qui existe depuis que l'ordinateur existe !
La Lorièn de
Sadow15510 Un jeu de gestion où vous devez contrer les armées du Mordor et de l'Isengard.
Tamacasio de
Shadow15510 Est une adaptation de la célèbre petite console "Tamagotchi"
Dream Penalty de
Pierrick est un jeu où le but est de marquer le pénalty.
Drak a proposé l'idée de mettre en place un calendrier des événements à venir, d'ici là à ce que ce soit réalisé il peut être sympathique de faire un petit récap' ici des grands moments de la semaine à ne pas manquer.
Évènement de la semaine à venir :
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Le Mercredi 29 Août ne loupez pas le TDM de Drak ! Surprises et révélations sur les fonctionnalités inattendus sur votre calculatrice seront au rendez-vous...
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Le Samedi 1 Septembre ça ne vous revient pas mais si : l'ouverture du vote du Jeu du Mois juillet-août 2018 !
![](https://www.planet-casio.com/images/smileys/pointer.gif)
Le Dimanche 2 Septembre la 120ème Revue des Projets.
On se retrouve pour de nouveaux projets la semaine prochaine !
En attendant
vous aussi vous pouvez participer
Voir la RdP précédente : la RdP-118
Citer : Posté le 26/08/2018 18:10 | #
Tant de choses impressionnantes !
Pour @Zezombye, j'aime bien ton menu, il y a de tout. On peut toujours écrire yield à la main donc rien à redire. Pour ton clavier, je serais tenté de laisser OPTN et VARS à leur place, et plutôt s'en servir pour mettre des commandes comme sauvegarder le fichier, lancer dans l'interpréteur, des choses comme ça. Pareil pour les deux raccourcis de compréhension, les def et les if sont bien plus utiles, donc je mettrais plutôt les compréhensions dans les menus.
Très beau ce billboard @Ninestars ! Voilà qui va peupler tes univers, il ne manque plus qu'un bon écran couleur pour booster l'ambiance (gros clin d’œil obvious). Ça donne quoi les perfs' sur les sphères englobantes ? On s'imagine que ça doit être très significatif, non ?
Citer : Posté le 26/08/2018 18:25 | #
alors là... je suis subjugué par tous ces projets magnifiques !
@Ninestars : dans ton moteur physique, tu intégreras les collisions ?
et pour les interactions ( trappe et porte ) tu pense mettre un collider ( de façon à que la trappe ne s'active pas quand elle se trouve dans l'angle de l'écran ) ?
Sinon tu progresses dans ton projet à vitesse grand V ! Félicitations !
@Shadow : j'ai quelques idées de mini jeux :
- un penalty
- un jump ( genre mario leader price
- un jeu où tu dois deviner où est la balle sous le gobelet ( je sais pas comment ca s'appelle... )
Sinon ravi de tes progrès en C !!!
Dijkstra - The Witcher
Citer : Posté le 26/08/2018 18:28 | #
Merci de ton soutient Lightmare
Citer : Posté le 26/08/2018 18:35 | #
Toujours aussi superbes les graphismes de RedEyes !
@zz : je préfère la seconde icone. Le menu des programmes est bien. Pour les fonctions manquantes, tu as prévu de laisser Shift+4 Catalog de toute façon ?
Changer trop de chose sur le clavier risque d'être compliqué à retenir, d'autant plus que le marquage sur la calto ne changera pas
Même remarque que Lephé sur OPTN et VARS.
Sinon le reste est très cohérent
@lephé : Merci. Je n'ai pas encore fini de les implémenter, il me reste à créer le test de collision entre la sphère et mon cône de vision
@Ligthtmare : Oui les collisions sont prévus... pour dans pas si longtemps que ça
Je ne comprends pas le "collider"
Citer : Posté le 26/08/2018 19:02 | #
Si planet casio est la première planète, qu'elle sont les 4 autres
@zezomb J'aime bien la première et la seconde icône.
Citer : Posté le 26/08/2018 19:58 | #
Pour les 4 autres : t'as Casiopéia, TI-Planet, Codewarus et Casio Education
Citer : Posté le 26/08/2018 20:01 | #
WOOOOOOOOOOOOOOHHHH. Cette RDP est vraiment fat. 8 Programmes dans la semaine ? Bordel de merde, je n'arrive plus à suivre quoi que ce soit. Good good good good !
@Zezombye : L'icône python sans le texte est très bien. Les autres ne sont pas terribles.
Citer : Posté le 26/08/2018 21:54 | #
Rien à dire sur SBZ, c'est très beau. J'espère qu'il sera à la hauteur du label, ça fait trop longtemps qu'on en a pas remis.
Pourquoi ne pas baser le menu sur un fichier de conf comme Eigenmath ? Ça permettrait à tout le monde d'avoir une config qui lui est plaisante à utiliser. Sinon pour la config par défaut celle que tu as pondue est très bien.
Pour le clavier, il ne me semble pas avoir vu de quoi indenter. C'est pourtant la base du Python, donc ça mériterait une touche associée, en accès direct pour indenter et shift+touche pour désindenter par exemple.
Concernant l'icône, mon classement est celui-ci de la plus sympa à la moins : 2, 3, 1 et 4
Eh beh, Windmill continue d'envoyer du pâté, ça fait plaisir à voir
Comme idée de mini-jeux, on peut taper dans les classiques : niaiseux, snake, réflexe, etc. PC en est rempli
Citer : Posté le 27/08/2018 01:05 | #
Pour les mini-jeux, tu pourrais aussi ajouter un petit memory et/ou une chasse aux souris, ça peut être original
Aussi, bien joué Dark Storm pour Sprite Optimizer! A en juger par le topic de Zezombye, ça n'a pas dû être facile, Bravo!
C'est génial de voir Windmill progresser de plus en plus, je suis vraiment impatient de voir les avancées sur calculatrice! Vas-y Ninestars
Pour Casio Python, personnellement j'aime bien la troisième image
Citer : Posté le 27/08/2018 08:12 | #
Une semaine bien remplie bravo à tous !!
@Zz ; le deuxième icone est ma préférée
@Drak : Je t'ai pas trop demandé pour le mini-calendrier de la semaine mais comme tu trouvais l'idée bonne, le temps que cela se mette en place... enfin bref...
@Redeyes :
@Ninestars : Tiens-nous au courant de ton tuto sur Windmill
Je peux dors et déjà vous annoncer que le vote du jeu du mois va être serré très serré je vous laisse méditer la-dessus
Citer : Posté le 27/08/2018 13:46 | #
Tu veux dire quoi par "raccourcis de compréhension" ?
Ouaip bien sûr, et là le catalogue contiendra l'intégralité des mots clés, ainsi que beaucoup plus de constructions (par exemple if/and/else, if/or/else etc, comme le python graph 90).
Ouaip mais idéalement le prof distribuerait un poly avec le clavier changé. De toute façon je change que les touches qui sont inutiles en python (touche frac, théta, r, etc) donc même si l'utilisateur n'a pas connaissance des changements du clavier ça ne lui fera pas d'impact.
Pour le i, nope parce que ben il y a déjà la lettre i
Je l'avais pas mis sur le clavier ça, mais shift+haut/bas = page up/down, shift+gauche/droite = début/fin. Du coup il y a déjà ces commandes
Pourquoi pas (par contre le ':' et '#' restent dans le mode alpha, y'a pas assez d'emplacements libres en alpha) mais j'ai rien à mettre dedans en fait
Sinon je vois que la 2ème icône a gagné haut la main
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 27/08/2018 17:37 | #
Tu veux dire quoi par "raccourcis de compréhension" ?
Les raccourcis [0 for i in range()] et [[0 for i in range()] for j in range()]. Cette façon de définir des listes s'appelle par compréhension.
Changer trop de chose sur le clavier risque d'être compliqué à retenir, d'autant plus que le marquage sur la calto ne changera pas Enfin ça peut être utile. Après tu peux laisser le i imaginaire comme un i normal par exemple, le = là où il est.
Pour le coup de mettre 1j sur SHIFT 0, je trouve que c'est une bonne chose. L'interpréteur officiel le fait ; je vois ça comme une marque de soin.
j'avais mis ça pour bien signifier que l'égalité c'est == et l'assignement (donc la flèche) c'est =.
Perso le seul fait que la flèche s'utilise avec la destination à droite (_→B) et le symbole égalité avec la destination à gauche (b = _) suffit à justifier qu'on ne fasse pas pareil. Le = habituel me convient, je pense.
Pourquoi pas (par contre le ':' et '#' restent dans le mode alpha, y'a pas assez d'emplacements libres en alpha) mais j'ai rien à mettre dedans en fait
Ok pour le ALPHA, c'est normal que ça produise des caractères ça. Que dis-tu d'un menu personnalisé ? Comme ça dans mon programme fictif où j'utilise souvent la fonction make_matrix(), je peux avoir un raccourci spécial.
Citer : Posté le 27/08/2018 18:14 | #
J'ai l'impression que ce message est passé à la trappe :
Pour le clavier, il ne me semble pas avoir vu de quoi indenter. C'est pourtant la base du Python, donc ça mériterait une touche associée, en accès direct pour indenter et shift+touche pour désindenter par exemple.
À priori, si la touche → n'a plus besoin d'être utilisée, on peut l'assigner à l'indentation.
Si je résume :
Shift + replay : début | fin | pg up | pg down
(Shift + ) → : indenter (désindenter)
= : change pas
Éventuellement, Shift + (-) : ==
Mais j'insiste vraiment sur le fait que l'indentation doit être facile à manipuler ! Python est basé là dessus, donc on ne peut pas se permettre d'avoir un système bancal sur ce point.
Citer : Posté le 27/08/2018 18:22 | #
Pourquoi pas. Après pour la désindentation, faire "suppr" enlève automatiquement 2 espaces.
L'indentation est facile à manipuler, quand on fait une nouvelle ligne ça garde le niveau d'indentation (ou ça l'augmente s'il y a un ':' ).
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 27/08/2018 18:26 | #
Nan, ça justement c'est pas "facile" à manipuler. Est-ce que tu peux indenter par bloc ? Enlever les deux espaces, ça se fait de manière intelligente ? À savoir ne pas en enlever deux si t'es pas dans un bloc indenté.
Pour le coup, les tabulations sont quand même plus simples à manipuler, pas besoin d'un savant calcul pour connaitre le nombre d'espaces à ajouter/enlever
Citer : Posté le 29/08/2018 11:38 | #
Yeah, c'est cool de voir autant de choses si impressionnantes toutes !
@Dark's : T'as encore quelques pistes ou heuristiques pour améliorer un peu plus les performances de ton utilitaire, ou on s'est déjà bien et suffisamment approché des optima qu'on estimait ? De plus, ça avait été évoqué sur la shout à moment donné, mais je pense que ça vaudrait le coup de balancer une instance vraiment grosse (hors du champ de ce qui nous intéresse sur les casios) sur primers.xyz, histoire de voir un peu jusqu'où on peut aller…
@RedEyes : C'est vrai que, comme déjà on a pu le voir par avant, ces dessins sont quand même bien stylés, ça donne envie ! Et ça risque d'être dur le jour où il faudra choisir une miniature pour ton programme.
@Zz : Pour les icones, je dirais la seconde ou la première personnellement. Je ré-émets aussi la remarque de Dark's, pour la configuration des menus, si tu peux essayer de faire un truc bien souple (typiquement chargé depuis un fichier, ou bien assez bien organisé dans le code source pour que ça se change bien), ça pourrait profiter non seulement à ton programme, lui offrant plus de souplesse, mais aussi à d'éventuels éditeurs pour d'autres langages qu'on pourrait tirer facilement de ton boulot (genre le Lua, ou n'importe quel autre truc imaginé par quelqu'un d'autre…
@Ninestars : Toujours bien impressionnant, et le mieux c'est que c'est déjà obsolète avec le jour 19 tout ça… x) J'attends vraiment de voir ce qui va nous être sorti de ce moteur !
@Shadow : Chouette de voir que t'es venu presque à bout de ton projet, sans aller jusqu'à une image «affreuse», j'avoue que l'espèce de chat fait un peu peur de loin ceci dit…
Citer : Posté le 29/08/2018 11:45 | #
De plus, ça avait été évoqué sur la shout à moment donné, mais je pense que ça vaudrait le coup de balancer une instance vraiment grosse (hors du champ de ce qui nous intéresse sur les casios) sur primers.xyz, histoire de voir un peu jusqu'où on peut aller…
Je vote pour, mais avec la condition du lever de crayon, ie. un point supplémentaire à l'infini chaque fois qu'on veut relier des lignes qui ne sont pas adjacentes. C'est plus fun.
Citer : Posté le 29/08/2018 11:52 | #
Outre le contenu impressionnant de cette revue des projets, je souligne quand-même le travail assez qualitatif de Shadow sur cette RDP
Citer : Posté le 29/08/2018 13:39 | #
T'as encore quelques pistes ou heuristiques pour améliorer un peu plus les performances de ton utilitaire, ou on s'est déjà bien et suffisamment approché des optima qu'on estimait ?
Je n'ai pas de pistes triviales. Les résultats peuvent ne pas être optimaux (#156896), d'où l'intérêt de vérifier avec le dessin. Après comme je le disais, dans la majorité des cas le résultat semble être suffisamment opitmisé.
Je ne passerai donc pas personnellement plus de temps là dessus, sauf si quelqu'un me donne une idée d'algo. Mais dans ce cas autant qu'il l'implémente lui-même, ça reste du Python plutôt simple.
Pour primers.xyz, c'est une idée, mais du coup comme l'indique Lephe il faut formuler le sujet pour du Super Drawstat, à savoir avec lever de crayon.
Citer : Posté le 29/08/2018 14:20 | #
Voilà un début.
PROBLÈME
Vous êtes un utilisateur chevronné du dessin vectoriel et du module turtle. Afin de montrer à vos amis ce que cette machine a dans le ventre, vous décidez de compresser une image monochrome avec votre nouvel algorithme turtle-gz.
Le format turtle-gz est optimisé pour dessiner rapidement une image matricielle avec le module turtle sans anti-aliasing. Chaque fichier est constitué d'une succession de commandes de deux types :
DRAW_TO x, y
Le rendu démarre sur une surface blanche de la taille de l'image. La position de la tortue est initialisée avec une première commande MOVE_TO, puis le dessin est tracé par une succession de commandes DRAW_TO. Chaque commande DRAW_TO x, y produit une ligne de pixels noirs entre la position actuelle de la tortue et la position (x,y) ; après l'opération, la tortue se déplace en (x,y).
Vous avez déjà choisi une représentation compacte pour les commandes ; votre objectif est maintenant de calculer la plus courte liste de commandes qui produise votre image monochrome.
L'algorithme utilisé par le module pour tracer une ligne est le suivant :
Ajouter un exemple de ligne ?
ENTRÉE
La première ligne de l'entrée contient la largeur w et la hauteur h de l'image, séparées par une espace. Suivent ensuite h lignes de w+1 caractères : w pixels et un \n. Chaque pixel peut être le caractère '0' (blanc) ou le caractère '1' (noir).
Les pixels sont repérés par des coordonnées (x,y). La première ligne de données correspond à y=0 et la dernière à y=h-1. Dans chaque ligne, le premier pixel correspond à x=0 et le dernier à x=w-1.
Exemple d'entrée :
Ajouter un sprite de Poudingue, si @Drak est d'accord, pour le clin d'oeil
SORTIE
Une liste de commandes, avec une commande par ligne. Chaque commande commence par le mot-clé MOVE_TO ou DRAW_TO suivi de deux entiers x et y séparés par une virgule. Des espaces ou tabulations peuvent être insérés entre les mots.
Exemple de sortie :
Ajouter une solution pour le sprite de Poudingue