Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Actualités


Index du Forum » Actualités » Concours de rentrée 2022 : Maîtrisez Pykaster3D !
Lephenixnoir Hors ligne Administrateur Points: 22585 Défis: 149 Message

Concours de rentrée 2022 : Maîtrisez Pykaster3D !

Posté le 22/09/2022 00:56

Mettez-vous à l'aise et branchez vos neurones, c'est de nouveau cette époque de l'année. Le concours de rentrée de TI-Planet et Planète Casio est de retour pour la 6ème année consécutive, avec un nouveau défi calculo-ludique et de nouveaux prix à décrocher !

Le concours de rentrée est ouvert jusqu'au Dimanche 13 Novembre 23h59.


Les captures d'écran ne mentent pas : Critor nous a bel et bien programmé un moteur 3D mi-Wolfenstein mi-DOOM en Python, dans lequel vous explorerez une grande arène fortifiée. Comme tu vas le voir, il tourne d'ailleurs sur la Graph 90+E et Graph 35+E II ! ... lentement, mais il tourne. :P

Article associé sur TI-Planet : Concours Python 2022 - Pykaster3D «attrape-les toutes» !

Principe et règles du jeu

L'unique défi de cette année nous ramène dans le royaume d'Alrys que vous avez libéré l'an dernier. À l'époque, le donjon du Cirque des Monts Pleureurs avait déjà fait parler de lui. Les nouvelles sont arrivées il y a quelques jours d'une infestation inquiétante dans le donjon de la presqu'île de Farfalie. Il semblerait que des souris électriques d'une espèce complètement inconnue se sont emparées des lieux.

Le donjon est composé de trois sections concentriques. D'abord, les catacombes, qui cachent une entrée secrète et furent le principal obstacle à franchir durant la reconquête d'Alrys :


Une fois le hall passé, se trouve un labyrinthe réparti sur 3 niveaux :


Et enfin une passerelle suspendue mène au coeur du donjon, où se sont installées les locataires indûs.


Le but du jeu est de traquer les souris et de les attraper toutes... au bon moment. D'après les rapports du terrain, le qualificatif «électrique» n'est vraiment pas là pour décorer, et certaines souris décochent de sacrées décharges.

Comme les années précédentes, le jeu peut se jouer de deux façons différentes : au clavier (pour tester), et en préprogrammant une série d'actions dans le script (pour la soumission finale). Les contrôles au clavier sont les suivants :

  • Avancer (#0, touche [↑]) et reculer (#2, touche [↓])
  • Tourner à gauche (#5, touche [←]) ou à droite (#6, touche [→])
  • Se décaler sur la droite (#1, touche [6]) ou sur la gauche (#3, touche [4])
  • Ne rien faire (#4, touche [5])
  • Sauter (#7, touche Entrée)

Le numéro correspondant à chaque peut être utilisé pour effectuer cette action dans le script. Note que dans le script les actions prennent des paramètres, ce qui les rend beaucoup plus polyvalentes que le clavier. Par exemple, le script préchargé dans pyka3d.py effectue les actions suivantes :

liste_actions = [
  # Attendre 5 tours
  4, 5,
  # Tourner 5 fois à droite de π/8 radians (22.5°)
  6, 0.39269908169872414,
  6, 0.39269908169872414,
  6, 0.39269908169872414,
  6, 0.39269908169872414,
  6, 0.39269908169872414,
  # Tourner 6 fois à gauche de π/8 radians (22.5°)
  5, 0.39269908169872414,
  5, 0.39269908169872414,
  5, 0.39269908169872414,
  5, 0.39269908169872414,
  5, 0.39269908169872414,
  5, 0.39269908169872414,
  # Avancer 77 fois de 1 pas
  0, 77,
  # Tourner à gauche de π/8 radians (22.5°)
  5, 0.39269908169872414,
  # Avancer 121 fois de 1 pas
  0, 121,
]

C'est une transcription directe d'une saisie au clavier, mais en ajustant les angles quand on tourne et les pas quand on se déplace il serait possible d'atteindre la même position beaucoup plus efficacement.

De façon générale, pyka3d.py fonctionne de la façon suivante :

  1. Il exécute toutes les actions données dans liste_actions.
  2. Ensuite il te donne la main pour continuer à jouer sur le clavier.
  3. Une fois la partie finie, il affiche une liste correspondant aux actions jouées au clavier, qui peut donc être copiée/collée et ajoutée à la fin de liste_actions.

Tout ceci se produit par l'appel jouer_selon(liste_actions,1). Pour éviter que l'affichage 3D (qui prend la majorité du temps) ne soit trop répétitif, tu peux appeler jouer_selon(liste_actions,0) à la place, qui ne démarre l'affichage que quand le contrôle est donné au clavier (après l'exécution de liste_actions).

Précisons les contrôles disponibles dans le script :

  • Les actions pour avancer, reculer, et se décaler acceptent comme paramètre des distances entre -1 et 1, valeurs décimales comprises (au lieu de juste 1 au clavier) ;
  • Les actions pour tourner acceptent n'importe quelle angle, y compris des tours complets (au lieu de juste 22.5° au clavier) ;
  • L'action de saut accepte une hauteur de saut entre 0 et 1 (au lieu de juste 1 au clavier).

Le but du jeu est donc d'utiliser ces contrôles pour attraper les souris. Le joueur comme les souris ont un niveau, qui décide des interactions :

  • Les souris de niveau inférieur à celui du joueur sont affichées petites et jaunes ; il suffit de les toucher pour les attraper, ce qui augmente un peu le score et augmente le niveau du joueur.
  • Les souris de niveau supérieur à celui du joueur sont affichées grandes et rouges ; touchez-les à vos risques et périls. Les décharges réduisent le score !
  • Le niveau du joueur influence également sa vitesse de déplacement et ses prouesses physiques... et donc sa capacité à atteindre différentes zones du donjon.




Les souris ont tendance à fusionner quand elles se recontrent... ou quand le joueur active une des 5 dalles cachées dans le donjon ; étant difficiles à trouver ces dalles n'ont pas été désamorcées durant le raid de l'an dernier.

Réfléchissons donc à la stratégie. Il te faut attraper un maximum de souris, vite de préférence, mais il faut aussi les attraper quand elles sont d'un niveau élevé (cela augmente plus le score) sans pour autant perdre le contrôle de la population, sous peine d'être choqué·e par le résultat.

Dors bien en pensant à ce problème... :3

Prenons un instant pour apprécier l'exploit technique des scripts, qui avec environ 80-100 ko de stockage et 100 ko de mémoire de travail parviennent à simuler un environnement riche en couleurs et parfois même en textures, sur une map grande de 64x29 cases avec des effets graphiques à faire rougir la compétition.

Aperçu des lots de l'année

Les lots de cette année sont bénévolement offerts par Calcuso, Casio, TI, cent20, avec des goodies de Parisse, TI-Planet et Planète Casio. Les prix sont très fournis surtout côté goodies ; je vous fais un résumé ici, pour les détails voyez l'annonce sur TI-Planet.

6 lots Graph 90+E : Calculatrice Graph 90+E + packs de goodies Casio, Xcas, et TIP/PC
4 lots Casio : Clé USB d'émulation Casio + 1 coque collector Casio + packs de goodies Casio, Xcas, et TIP/PC
2 lots N0120EX : Calculatrice Numworks N0120EX + packs de goodies Numworks, Xcas et TIP/PC
7 lots Numworks : Coque collector Numworks + Autocollant Numworks + packs de goodies Numworks, Xcas et TIP/PC
6 lots CX2CAS : Calculatrice TI-Nspire CX II-T CAS avec licence logicielle + packs de goodies TI, Xcas, et TIP/PC
2 lots Calculso : Calculatrice TI-83 Premium CE Édition Python garantie 6 ans avec gravure de texte laser + émulateur TI-SmartView CE + chargeur mural + housse et film de protection Wyngs + livret de prise en main et cahier d'activités + packs de goodies TI et TIP/PC
2 lots 83PCE : Calculatrice TI-83 Premier CE Édition Python + émulateur TI-SmartView CE + film de protection Wyngs + livret de prise en main et cahier d'activités + 2 cahiers d'activités TI + packs de goodies TI et TIP/PC

Soit un total de 29 lots pour récompenser les meilleurs scores à la chasse aux souris. Avec ça n'allez pas dire que vous n'aspirez pas à être le meilleur dress- euh, chasseur. Chasseur.

Comme les années précédentes, les lots seront choisis par les participants par ordre décroissant de score. Un lot est également réservé au meilleur groupe (voir ci-dessous pour les règles des groupes) ; ce lot sera sélectionné par le premier membre du groupe à choisir.

Comment jouer à Pykaster3D

Grâce à la dernière version de la bibliothèque polycal5.py, Pykaster3D fonctionne sur 12 environnements Python :

  • Graph 35+E II, fx-9750G III, fx-9860G III
  • Graph 90+E, 90+E avec KhiCAS, fx-CG 50, fx-CG 50 avec KhiCAS
  • HP Prime
  • Numworks avec Khi et KhiCAS
  • TI-Nspire CX II, CS II avec Ndless et KhiCAS, et CX avec Ndless et KhiCAS

Je liste ici les instructions pour les plateformes couramment utilisées par la communauté Planète Casio ; pour la liste complète, vois l'article de TIP.

Ordinateur avec SDL2

Extrais l'archive zip dans un dossier de ton choix puis lance pyka3d.py. Il te faudra la bibliothèque SDL2, que tu peux installer avec la commande "pip install PySDL2" sur toutes les plateformes.


Graph 90+E avec l'application Python

Transfère les programmes sur la calculatrice et lance pyka3d.py dans l'application PYTHON pour jouer. Il n'y a pas de saisie clavier sur la Graph 90+E, donc en mode manuel les 8 actions défilent en bas de l'écran et il te faut appuyer sur AC/ON pour sélectionner celle que tu veux quand elle passe.

L'exécution est lente ; il est important de mettre le deuxième paramètre de jouer_selon() à 0 pour éviter les affichages inutiles. Je conseille également d'utiliser l'émulateur ou d'overclock pour gagner du temps.


Graph 90+E avec KhiCAS

Transfère les scripts dans le dossier racine de la mémoire de stockage. Lance KhiCAS en mode MicroPython (à sélectionner via le menu F6 puis ouvrir, et exécuter pyka3d.py. Le mode manuel utilise les touches normalement ; EXIT pour quitter. Les mêmes remarques que la Graph 90+E s'appliquent pour les performances.


Graph 35+E II

Transfère les programmes sur la calculatrice et lance pyka3d.py dans l'application PYTHON pour jouer. Il n'y a pas de saisie clavier sur la Graph 35+E II, donc en mode manuel les 8 actions défilent en bas de l'écran et il faut appuyer sur AC/ON pour sélectionner celle qu'on veut quand elle passe.

L'exécution est lente ; il est important de mettre le deuxième paramètre de jouer_selon() à 0 pour éviter les affichages inutiles. Je conseille également d'utiliser l'émulateur ou d'overclock pour gagner du temps.


Règles de soumission et gestion des groupes

Envoie ton script pyka3d.py modifié par mail à info@tiplanet.org avant le 13 Novembre 23h59, avec :

  • En objet, Pykaster3D ;
  • Un moyen de contact que tu surveilles fréquemment (email, SMS, Discord, etc) ;
  • En option, ton pseudonyme Planète Casio et/ou TI-Planet ;
  • Pour recevoir les lots, ton adresse postale complète avec nom/prénom et un numéro de téléphone (pour suivre les envois). Ces informations peuvent être envoyées plus tard, mais on gagne du temps à les communiquer tout de suite.

Les informations personnelles ne seront partagées à aucun tiers et détruites sur demande.

En soumettant tu peux également demander une clé USB d'émulation Casio, que nous fournirons dans la limite de nos stocks (18 clés). Le but est de permettre de tester sur des machines réactives si jamais tu n'en as pas sous la main.

Pour créer un groupe, indique ton pseudonyme Planète Casio ou TI-Planet et joins un logo (carré) pour le groupe. Une signature Python te sera fournie, et toute personne accompagnant sa soumission de ta signature sera considérée comme un membre du groupe. (Chaque participant ne peut faire partie que d'un groupe.)

Le score de chaque groupe sera calculé à partir des scores des membres par une moyenne pondérée. Le meilleur groupe remportera un lot dédié à se partager.

Conclusion

Cette année, un seul sujet mais quel sujet ! Bon courage pour optimiser celui-là. Ce n'est même pas la peine de prononcer le mot «combinatoire» tant les options sont vastes (plus quelques pièges comme le fait que modifier une action dans le passé impacte toute la suite du script). Je pense que les chances sont bien plus côté exploration que bruteforce.

Bon courage pour ce défi, faites honneur à la communauté Planète Casio !
Et n'hésitez pas si besoin à aller consulter le topic d'entraide.


Tituya Hors ligne Rédacteur Points: 1986 Défis: 16 Message

Citer : Posté le 23/09/2022 10:20 | #


Comme chaque année il va y avoir un classement en ligne, avez vous une idée de quand il sera disponible ?

Je pense essayer de participer, c'est un travail titanesque et la gourde casio me fait de l'oeil
Vraiment bravo Critor (et lephe ? Je ne sais pas si tu as participé à la conception) pour cette prouesse !
Bretagne > Reste du globe
(Et de toute façon, vous pouvez pas dire l'inverse grâce à Bzh)
Projet en cours : Adoranda

Mes programmes
Hésite pas à faire un test !


Hackcell Hors ligne Maître du Puzzle Points: 1474 Défis: 11 Message

Citer : Posté le 23/09/2022 10:40 | #


Bon comme chaque année (presque ) J'ai un topique d'entraide en cours, je devrais le sortir cette aprem
Lephenixnoir Hors ligne Administrateur Points: 22585 Défis: 149 Message

Citer : Posté le 23/09/2022 12:19 | #


Tituya a écrit :
Vraiment bravo Critor (et lephe ? Je ne sais pas si tu as participé à la conception) pour cette prouesse !

Je n'ai contribué qu'à l'idée et la motivation ; l'intégralité de la programmation du moteur, ainsi que la conception de la carte, est de Critor.
Thebigbadboy Hors ligne Maître du Puzzle Points: 420 Défis: 16 Message

Citer : Posté le 23/09/2022 13:25 | #


Avant le 13 novembre ?!

Ça laisse pas mal de temps, donc grandement moyen que je m'y mette à fond

J'ai pas trop compris pour les groupes, je suppose par ex qu'il y a un nombre max de membres (ou alors il n'y aura qu'un seul et tout le monde se partagera un cadeau)
Un problème sans solution est un problème mal posé — Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 22585 Défis: 149 Message

Citer : Posté le 23/09/2022 13:32 | #


Pour les groupes, il n'y a pas de nombre max de membres. Par contre le score du groupe est une moyenne (pondérée) des scores des membres, donc il vaut mieux que tout le monde soit au top pour aider le groupe.

Le meilleur groupe reçoit un lot à se partager entre les membres. Étant entendu que les membres peuvent aussi gagner un lot individuellement, c'est «en plus».
Calamari Hors ligne Membre Points: 142 Défis: 0 Message

Citer : Posté le 23/09/2022 15:55 | # | Fichier joint


Mb88 a écrit :
@Calamari, it does not starts in xterm mode : It generates an image like before. Please send the entire source code, I can't get it working.


Ah, I see that I wasn't very clear, sorry about that. If SDL works then xterm mode won't be used, as it's a fallback. Uninstall python3-sdl2 and it should work. Or you can rename/move polycalc_sdl2.py.

I've also attached an archive that doesn't contain the SDL code, so it will force xterm mode. Good luck!
Slyvtt Hors ligne Community Manager Points: 832 Défis: 0 Message

Citer : Posté le 23/09/2022 21:25 | #


Bravo à vous, super jeu pour ce concours !! Vous vous etes vraiment arrachés cette année.
C'est un peu chaud pour moi en timing en ce moment, mais je vais tenter de participer.
Bon courage et bonne chance à tous les participants.
Mb88 Hors ligne Membre Points: 293 Défis: 0 Message

Citer : Posté le 23/09/2022 22:24 | #


@Calamari, it works under Manjaro ruah.
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 23/09/2022 23:18 | #


Merci pour vos retours.

Tituya a écrit :
Comme chaque année il va y avoir un classement en ligne, avez vous une idée de quand il sera disponible ?

C'est en cours de codage, patience.
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 24/09/2022 01:49 | #


Voilà, ce n'est pas terminé, il manque notamment la gestion des groupes, mais je ne vais pas vous faire patienter plus longtemps.

Comme promis donc, une première version du tableau des scores est en ligne, et normalement à jour avec les participations d'aujourd'hui :
https://tiplanet.org/concours_pykaster3d_2022.php?delta=0&infos=1&worse=0&invalid=0

Si vous ne vous trouvez pas, n'hésitez pas à prendre contact. Normalement nous faisons attention, mais nous ne sommes pas à l'abri d'une participation qui qui serait classée à tort en tant que spam...
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 24/09/2022 12:19 | #


Nouvelle participation de moi, en touriste au clavier sans le moindre calcul, rien qu'en testant une nouvelle version plus rapide du jeu, et je suis premier, sans même avoir cherché à toutes les attraper :

https://tiplanet.org/concours_pykaster3d_2022.php?delta=0&infos=1&worse=1&invalid=1

Certes, j'ai sans doute un léger avantage, je connais la carte ainsi que le système de score.

Bien évidement je ne prendrai aucun lot, c'est juste pour le plaisir.

Mais si j'y arrive comme ça sans forcer, c'est qu'il doit être possible de faire encore nettement mieux alors à vous de jouer.
Hackcell Hors ligne Maître du Puzzle Points: 1474 Défis: 11 Message

Citer : Posté le 24/09/2022 12:54 | #


si vous voulez connaitre le systéme de score, j'ai fais un topique d'entraide

https://www.planet-casio.com/Fr/forums/topic17167-1-topique-dentraide-v601s-hq.html

Je suis également en train d'essayer d'extraire la map et d'etudier les ia.

Ensuite je pense faire deux trois "cheat" qui ne changent pas le fonctionement du jeu mais donne de gros avantage, mais ça je le garderais pour ma team, donc il faudra vous satisfaire de screenshot
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 24/09/2022 12:58 | #


Merci à toi @Hackcell, je rajoute ton topic aux annonces et le mettrai en avant.

J'ai une nouvelle version plus rapide qui devrait je pense sortir aujourd'hui, aussi.
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 24/09/2022 14:18 | #


Les scripts de participation pour ordinateurs et Casio Graph 90+E fx-CG50 passent en version 1.1 :
https://tiplanet.org/forum/archives_voir.php?id=3058069

Au menu :
- correction d'un vilain bug dans la réunion d'intervalles
- prise en compte de l'altitude maximale de la carte pour stopper les rayons lancés plus tôt si plus rien n'a de chance d'être affichable
- amélioration des tests décidant de si les tuiles 3D verticales rencontrées par les rayons nécessitent d'être affichées ou pas
- externalisation de ce qui concerne le clavier dans une fonction (parce que cela nous permet de la court-circuiter avec notre script de traitement automatique de vos participations, pour prendre la capture d'écran finale et quitter en affichant le score)

Sur la trajectoire de démo ça va sensiblement plus vite, je mesure dans les 15% d'amélioration.
Dans les corridors ou espaces intérieurs fermés de la carte, l'amélioration est encore plus nette.
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 24/09/2022 16:08 | #


L'inconnu n°3 remonte de 2 places et nous claim un score "leet" !
https://tiplanet.org/concours_pykaster3d_2022.php?delta=0&infos=0&worse=1&invalid=1

D'ailleurs en passant, ceux qui ne souhaitent pas être anonymisés, il vous suffit de le dire.
Critor Hors ligne Administrateur Points: 2275 Défis: 18 Message

Citer : Posté le 24/09/2022 22:11 | #


Je ne suis déjà plus en tête. Bravo à l'inconnu n°1 qui, curieusement, me bât tout juste d'1 point :

https://tiplanet.org/concours_pykaster3d_2022.php?delta=0&infos=0&worse=1&invalid=1

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 39 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd