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 2021 - Synchro-donjon !
Lephenixnoir En ligne Administrateur Points: 20623 Défis: 143 Message

Concours de rentrée 2021 - Synchro-donjon !

Posté le 12/09/2021 19:39

Bienvenue au concours de rentrée 2021 organisé par TI-Planet et Planète Casio !


Dans l'article introductif de l'événement, nous racontions comment tu as trouvé dans une brocante une console étrange avec deux cartouches.

La deuxième de ces cartouches contient un jeu qui s'appelle Synchro-donjon.

Le but de Synchro-donjon est de conquérir le plus rapidement possible le donjon du Cirque des Monts Pleureurs, un donjon situé au Nord-Ouest du royaume d'Alrys et que tu peux voir de l'extérieur en jouant à La geste d'Alrys, l'autre jeu de ce concours.

Dans ce jeu, il y a quatre joueurs qui commencent dans les coins : Jaune, Rouge, Bleu et Vert. Le but est de traverser le donjon aux joueurs pour les faire sortir par leurs sorties respectives (sur le côté opposé du plateau).


Il y a de nombreux étages au donjon, et chacun est différent et imprévisible - c'est pour ça que le donjon est difficile à conquérir.

Pour permettre au héros de continuer son aventure dans le monde d'Alrys, tu devras donc user d'ingéniosité et programmer ta calculatrice pour décider des actions à effectuer à chaque étage. En somme, ta tâche est d'écrire une IA pour Synchro-donjon !

Dans cet article je vais te présenter les règles du jeu. Mais je peux déjà te dire ce qui rend ce jeu est intéressant : comme tu n'as qu'une calculatrice branchée, la console pense que tu veux contrôler les 4 joueurs d'un coup, et donc toutes tes actions s'appliquent à tous les joueurs en même temps ! Coordonner tout ce beau monde est la difficulté de ce donjon.

Bien sûr, tu ne seras pas tout seul dans cette tâche, et plusieurs IAs te seront présentées pour t'aider à prendre en main le jeu ainsi que le code Python nécessaire pour écrire ton IA. Tu peux aussi joueur au jeu directement sur ta calculatrice pour te familiariser.

Règles du jeu

Le donjon est un plateau de 8 lignes et 16 colonnes. Les bords sont constitués de murs et des sorties. Les 4 joueurs commencent dans les coins et chacun doit atteindre sa sortie. Sur leur chemin, on trouve :

  • Des pics, qui font des dégâts si un des joueurs marche dessus.
  • Des monstres, qui font aussi des dégâts si un joueur les croise, mais qui sont vaincus durant le combat. Il est aussi possible de les attaquer à distance et le vaincre sans prendre de dégâts.
  • Des pièges, qui produisent des effets aléatoires et souvent imprévisibles : soit ils infligent des dégâts, soit ils font apparaître d'autres pics/pièges ailleurs dans le donjon.

Les pics, monstres, et pièges violets affectent tous les joueurs. Ceux qui sont jaunes, rouges, bleus ou verts n'affectent pas le joueur correspondant (donc ils affectent tout le monde sauf le joueur qui partage leur couleur).

À chaque tour, tu disposes de 5 actions possibles :

  • Les 4 actions ALLER_GAUCHE, ALLER_DROITE, ALLER_HAUT et ALLER_BAS indiquent aux joueurs de se déplacer. Tout le monde effectue le même mouvement. Un joueur qui est bloqué par un mur ne se déplace pas. Si un joueur marche sur des pics, il prend des degâts ; s'il marche sur un monstre, il tue le monstre mais prend des dégâts ; s'il marche sur un piège, le piège est activé.
  • L'action ATTAQUER indique aux joueurs d'attaquer les objets autour d'eux sans se déplacer. Tous les monstres à côté des joueurs sont détruits, et le joueurs ne prennent pas de dégâts. Cependant, tous les pièges à côté des joueurs sont également activés !

Au début du jeu, tu as 150 points. À chaque tour tu perds 1 point, et à chaque fois qu'un joueur prend des dégâts tu perds 10 points. S'il te reste des points quand tous les joueurs sont sortis alors ces points sont ajoutés à ton score.

Dans Synchro-donjon, ton IA jouera sur un grand nombre de plateaux et le score de tous les plateaux s'ajoutent pour former ton score final.

Installation et utilisation du programme

Synchro-donjon peut être installé sur les modèles suivants et sur PC. Le jeu est compatible avec un nombre impressionnant de modèles, allant jusqu'à la TI-82 Advanced Édition Python ! Ce résultat est possible grâce à la bibliothèque polycal4.py ainsi que des heures de compression investies par Critor.

Les fichiers polycal4.py et polyfont.py sont identiques à ceux de La geste d'Alrys, l'autre jeu du concours. Tu n'as besoin de les transférer qu'une fois pour les deux problèmes.

Tu peux jouer toi-même interactivement en lançant synchrod.py. Quand tu auras une IA (un modèle est donné plus bas dans cet article), tu pourras faire jouer l'IA en lançant ton fichier Python.

Trois IAs sont fournies avec le programme : ia1_ask.py qui est le squelette présenté plus bas, mais aussi ia2_path.py et ia3greed.py qui sont deux IAs plus évolées qui te seront présentées en détail plus tard durant le concours pour t'aider.

  • Graph 35+E II et Graph 90+E : Télécharger les scripts

    Transfère synchrod.py, polycal4.py et polyfont.py dans la mémoire de stockage. Dans le mode interactif, tu dois appuyer sur AC/ON pour saisir tes actions dans la console.

    Tutoriel de transfert de fichiers
    Tutoriel d'overclocking
    Émulateurs : Graph 90+E version 3.50 (Windows, Mac), Graph 35+E II version 3.40 (Windows)

  • HP Prime : Télécharger l'application

    Installe directement l'application SynchroD.hpappdir.zip. Tu peux basculer entre la vue Symb pour modifier le script et la vue Num pour l'exécuter.

    Logiciel HP Prime Virtual Calculator version 14592 (Windows 64 bits, Windows 32 bits)
    Logiciel de transfert (Windows 64 bits, Windows 32 bits, Mac)
    Tutoriel de transfert


  • TI-Nspire CX et TI-Nspire CX II : Télécharger le classeur CX II ou les scripts pour KhiCAS

    Pour le classeur (CX II uniquement), transfère le fichier dans un dossier de ton choix, sélectionne-le avec Ctrl → et lance le avec Ctrl R. Fais de même pour le script de ton IA. La vidéo ci-dessous à gauche te détaille la procédure de lancement.

    Pour les scripts KhiCAS, transfère-les dans le dossier /Xcas/ créé au premier lancement de KhiCAS, puis exécute soit synchrod.py soit ton IA en mode MicroPython. La vidéo ci-dessous à droite te détaille la procédure de lancement.

    Pour le support Python via KhiCAS : Ndless et KhiCAS
    Overclocking : Nover (Ti-Nspire CX), NoverII (TI-Nspire CX II)
    Simulateurs : TI-Nspire CX CAS et TI-Nspire CX version 5.3.2 (Windows, Mac)
    Logiciel de transfert : TiLP-II version 1.18 (Windows, Mac, Linux)



  • TI-82 Advanced Edition Python : Télécharger les scripts

    Il te suffit de transférer le fichier synchrod.py (ainsi que les IAs de ton choix) puis de les lancer dans l'application Python.


  • TI-83 Premium CE et TI-84 Plus CE : Édition Python ou Adaptateur TI-Python

    Transfère synchrod.py accompagné de SynchroD.b83 (TI-83 Premium CE) ou SynchroD.b84 (TI-84 Plus CE). Transfère auss ton IA. Ensuite lance l'application Python et lance le script synchrod.py ou ton IA.

    Les vidéo ci-dessous te montrent la démarche pour lancer le programme. Celle de gauche concerne les anciennes TI-83 Premium CE et TI-84 Plus CE(-T) avec leur adaptateur TI-Python. Celle de droite concerne les TI-83 Premium CE Édition Python ainsi que les TI-84 Plus CE-T Édition Python et TI-84 Python.


  • Numworks : Télécharger le script ou IDE en ligne Oméga

    Il te suffit de transférer et lancer synchrod.py. En raisons des limites de mémoire sur ce modèle, l'IA est incluses dedans, et tu peux la modifier et la soumettre sous cette forme.

    La mémoire limitée à 32 ko sur ce modèle risque de te freiner dans tes essais d'IA. Pour éviter ça, nous te conseillons d'installer un firmware tiers comme Oméga ou Khi pour disposer de 100 ko de mémoire. Le simulateur en ligne est tout aussi limité en plus d'être lent. Nous te conseillons plutôt le simulateur Oméga.

    Transfert direct de fichiers avec WebUSB
    Version dans le workshop Numworks (attention, peut geler le navigateur ; utilise plutôt l'IDE en ligne Oméga !)


  • Ordinateur : Télécharger les scripts

    Si tu n'as pas de modèle compatible, tu peux aussi tester le programme sur ordinateur. C'est le programme original accompagné de polycalc_sdl2.py, une extension de polycal4.py qui permet de jouer sur un ordinateur. Tu auras besoin du module PySDL2 pour l'utiliser.

Fonctionnement du plateau de jeu

Le plateau de jeu contient 8 lignes et 16 colonnes, et est codé dans une liste Python de 8×16 = 128 entiers. Chaque élément de la liste indique l'état d'une case du plateau, et ils sont arrangés dans cet ordre :


Si tu préfères numéroter les cases en lignes/colonnes, tu peux utiliser la méthode suivante.

  • Les lignes sont numérotées de Y=0 (ligne du haut) à Y=7 (ligne du bas).
  • Les colonnes sont numérotées de X=0 (colonne de gauche) à X=15 (colonne de droite).
  • La case sur la ligne Y et la colonne X a pour valeur V=16*Y+X.
  • La case de valeur V est sur la ligne Y=V//16 et sur la colonne X=V%16.

Chaque élément de la liste est une des valeurs suivantes : VIDE, MUR, PICS, MONSTRE, PIEGE ou SORTIE. En plus de ça, il peut y avoir une couleur : JAUNE, ROUGE, BLEU, VERT ou TOUS (violet).

Le tableau ci-dessous résume les combinaisons :


Sur les calculatrices monochromes, les couleurs sont remplacées par les symboles ci-dessous :


Sur la TI-82 Advanced Édition Python, le jeu est entièrement en mode texte, et les caractères suivants sont utilisés :
  • Les joueurs sont les symboles
  • Les pics sont les trois-points
  • Les monstres sont les symboles ¥
  • Les pièges sont les symboles Ø

Fonctionnement de l'IA

L'IA de ton programme doit être un fichier Python avec une fonction pour décider ce qui doit se passer à chaque tour (ou, sur Numworks, une fonction Python intégrée à synchrod.py). Le squelette de base est le fichier ia1_ask.py :

from polycal4 import get_infos
from synchrod import *

def tour(plateau, joueurs, evenements):
    # Demander une action avec input()
    return demander_action()

play_game(tour)

Les deux premières lignes importent les fonctions de Synchro-donjon. Évidemment, il est interdit d'accéder aux variables internes du script ou de modifier les valeurs identifiant les éléments de la map.

La fonction tour() est ton IA. Elle est appelée à chaque tour du jeu avec trois paramètres et doit renvoyer une action à accomplir.

  • plateau est la liste de 128 cases représentant le plateau de jeu (que tu ne dois pas modifier évidemment).
  • joueurs est une liste de 4 éléments indiquant la position des 4 joueurs sur le plateau. Tu peux utiliser soit le style joueurs[ROUGE] soit le style joueurs[1] selon tes préférences. Pour les joueurs qui sont encore sur le plateau, la position est un entier entre 0 et 127. Pour ceux qui sont déjà sortis, la valeur spéciale -1 est utilisée.
  • evenements est une liste d'événements qui se sont produits depuis le tour précédent.

Les événements sont utiles dans des scénarios un peu rares. Chaque élément de la liste peut être égal à :

  • (-1,-1,NOUVELLE_PARTIE,-1) si une nouvelle partie vient de commencer.
  • (<x>,<y>,PIEGE_APPARU,<joueur>) si <joueur> a activé un piège qui a fait apparaître un nouveau piège à la ligne <y>, colonne <x>.
  • (<x>,<y>,PICS_APPARU,<joueur>) si <joueur> a activé un piège qui a fait apparaître des pics à la ligne <y>, colonne <x>.

La fonction tour() doit choisir et renvoyer une action parmi ALLER_GAUCHE, ALLER_DROITE, ALLER_HAUT, ALLER_BAS et ATTAQUER. Lorsque l'IA remporte la partie, une nouvelle partie commence automatiquement.

Outils pour écrire ton IA

synchrod.py fournit plusieurs outils pour t'aider à écrire ton IA, spécifiquement 4 fonctions.

La fonction demander_action() donne la main au clavier de la calculatrice pour choisir la prochaine action. Sur les modèles où l'on peut saisir au clavier, les touches directionnelles, entrée et retour sont utilisées. Sur les autres (notamment CASIO), il faut appuyer sur AC/ON pour revenir à la console() et taper un chiffre.

La fonction est_un() permet d'identifier les pics, monstres, et pièges indépendamment de leur couleur. Par exemple un piège vert est un piège mais pas un monstre, donc est_un(PIEGE+VERT, PIEGE) vaut True mais est_un(PIEGE+VERT, MONSTRE) vaut False.

De façon similaire, la fonction affecte() permet de déterminer si des pics, monstres ou pièges affectent un joueur. Par exemple, les pics violets affectent Jaune mais pas les pics jaunes, donc affecte(PICS+TOUS, JAUNE) vaut True mais affecte(PICS+JAUNE, JAUNE) vaut False.

Enfin, il y a une fonction calculer_chemin(<plateau>, <début>, <fin>) qui calcule en chemin entre la case <début> et la case <fin> et renvoie une liste de directions (ALLER_*). C'est un outil très utile et assez puissant, qui sera expliqué plus en détail avec une des IAs d'exemple.

Utilisation de play_game()

La fonction play_game() appelée à la fin du programme lance la simulation du jeu. Elle a plusieurs paramètres que tu peux modifier à loisir pour améliorer ton IA :

  • blind=True peut être ajouté pour désactiver l'affichage du plateau de jeu et ne laisser que la console (ce qui va en général beaucoup plus vite).
  • seed=<nombre> peut être ajouté pour tester un plateau particulier. La valeur indiquée permet en effet de contrôler le générateur aléatoire.
  • maxgames=<nombre> permet de choisir le nombre de parties (par défaut 100).

À chaque fois que tu gagnes une partie, play_game() affiche deux lignes sur la console :

#0: 12648430
Bravo! 39T 50D -> 61

#0 est le numéro de la partie (ça va jusqu'à maxgames). Le nombre à droite, 12648430, est la graine aléatoire. Si tu demandes seed=12648430 tu retomberas exactement sur ce plateau (ce qui est utile si ton programme a une erreur que tu veux retester).

Sur la ligne du bas, le nombre devant T est le nombre de tours passés sur la plateau, le nombre devant D est la quantité de dégâts que tu as subis, et le résultat est ton score (150-T-D). Si ton score est négatif il compte pour 0.

À la fin de la partie, play_game() affiche le nombre de parties jouées et ton score final. Par exemple :

Games solved: 100
Score: 2171

Pour participer au concours

Pour participer à l'épreuve de Synchro-donjon, envoie ton fichier .py d'IA (ou ton script synchrod.py modifié sur Numworks) par courriel à contact@planet-casio.com avant le Dimanche 7 Novembre à 23:59 avec :

  • Pour sujet, Synchro-donjon ;
  • Un moyen de te contacter rapidement en cas de gain ou de question (adresse courriel, téléphone, compte social, compte discord, etc.) ;
  • Ton pseudonyme sur TI-Planet ou Planète Casio (optionnel) ;
  • Pour pouvoir recevoir ton lot, ton adresse postale avec nom et prénom, et un numéro de téléphone personnel valide. (Tu peux les communiquer plus tard si tu souhaites.)

Les informations personnelles transmises pendant ce concours ne seront évidemment utilisée que pour le bon fonctionnement de l'événement et sur sa durée.

N'hésite pas à envoyer plusieurs participations, nous ne retiendrons que la meilleure.

Lots

Les lots pour cette épreuve sont les suivants. Les 5 participants ayant les meilleurs scores pourront choisir, par ordre de classement, un lot de leur choix.

  • 1 lot Graph 90+E : 1 calculatrice Graph 90+E + 1 sac et stylo CASIO + 1 pack de goodies TI-Planète Casio

  • 1 lot Graph 35+E II : 1 calculatrice Graph 35+E II + 1 sac et stylo CASIO + 1 pack de goodies TI-Planète Casio

  • 1 lot Goodies n°1 : 1 clé USB TI-83 Premium CE (4 Go) + 1 batterie externe CASIO (2200 mAh) + 1 sac et stylo CASIO + 1 pack de goodies TI-Planète Casio

  • 1 lot Goodies n°2 : 1 recueil d'activités SNT Numworks (65 pages) + 1 clé USB simulateurs CASIO (8 Go) + 1 sac et stylo CASIO + 1 pack de goodies TI-Planète Casio

  • 1 lot Goodies n°3 : 1 cahier «Boss des maths» Numworks (80 pages) + 1 clé USB simulateurs CASIO (8 Go) + 1 sac et syylo Casio + 1 pack de goodies TI-Planète Casio




Tu peux voir l'article de TI-Planet sur les batteries externes pour plus de détails.

Le fait qu'il y ait des lots moins fournis sur cette épreuve et que des calculatrices CASIO n'est pas une marque de favoritisme mais d'organisation. Ce sont les lots que j'ai (Lephe) collectés en plus de ceux que Critor a pour Alrys. J'ai demandé à Critor de procéder ainsi pour faciliter le traitement des participations et lots sur cette épreuve.

Et voilà pour cette épreuve ! Je compte sur toi pour tester toutes tes idées de génie et conquérir ce Synchro-donjon en temps record !


Critor En ligne Administrateur Points: 2170 Défis: 18 Message

Citer : Posté le 13/09/2021 23:12 | #


Mise à jour ce soir des scripts :
- pour TI-Nspire CX II : https://tiplanet.org/forum/archives_voir.php?id=2791850
- pour Casio + ordi : https://tiplanet.org/forum/archives_voir.php?id=2791847

Pour TI-Nspire CX II, dans le cas où le module ti_system (apportant entre autres la fonction get_key) n'est pas utilisable (effacé du dossier /PyLib/, calculatrice en mode examen, ...), le script se lance maintenant correctement, il n'y a plus d'exception. Par contre dans ce cas, les touches clavier seront non fonctionnelles sur l'IA1.

Pour Casio + ordi (surtout ordi en fait) :
- En cas d'absence de la bibliothèque SDL2, l'exception affichée n'est plus sans rapport, elle devrait maintenant être compréhensible.
- Les performances ont été améliorées (fill_rect).

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 - 2021 | Il y a 135 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