Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Actualités


Index du Forum » Actualités » Concours de rentrée 2021 - Synchro-donjon !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 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.

» Tableau des scores «
Le concours est fini depuis le 7 Novembre.

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.

Lis l'article explicatif de ia2_path.py : IA Synchro-don​jon #2 : Recherche de chemin
Lis l'article explicatif de ia3greed.py : IA Synchro-donjon #3: Optimisations locales

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 Hors ligne Administrateur Points: 2670 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).
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 28/09/2021 21:09 | #


Comme mentionné dans les règles, le défi ne vient pas tout seul, il y a aussi des explications sur le fonctionnement des IAs par défaut et de l'API.

J'ai publié un premier article dans ce sens, avec une explication détaillée de ia2_path.py pour lancer ceux que le problème tente. C'est écrit dans un style pédagogique pour les lycéens, mais je ne doute pas que les habitués de la communauté n'en feront qu'une bouchée.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 478 Défis: 0 Message

Citer : Posté le 15/10/2021 13:39 | #


Merci pour tout ça je vais essayer de ma lancer aujourd'hui… un peu tard mais j'ai bon espoir d'avoir un bon truc.
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 15/10/2021 13:40 | #


Il n'y a pas beaucoup de solutions explorées encore, il est tout à fait possible de faire mieux en une soirée. Regarde bien l'explication de l'IA 2 comme point de départ ; je publierai bientôt (dans quelques jours max ?) celle de l'IA 3.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 478 Défis: 0 Message

Citer : Posté le 15/10/2021 20:03 | #


J'ai un problème sur la version SDL. L'update ne se fait pas après la réception d'une action mais seulement après l'appui sur la touche d'après.
Donc je lance le jeu, j'appuie sur la touche de droite… rien, je ré-appui et là ça va à droite, puis j'appuie sur la touche haut… ça va a droite… etc
Toujours une touche de retard, c'est pas grand chose mais ça rend le jeu "manuel" impossible très dur.

PS: L'IA ia2_path.py marche sans problèmes mais elle est super nulle…
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 15/10/2021 20:18 | #


Hmm je sais pas trop. Si tu veux la fonction qui lit une touche ultimement c'est ça :

def input_action():
    wait_release()
    i = KEY_NONE
    while not i in interactive_actions.keys():
        i = wait_key()
    return interactive_actions.get(i)

def poly_wait_key():
    event = SDL_Event()
    while 1:
        SDL_WaitEvent(event)
        if event.type == SDL_KEYDOWN:
            for key, value in _keys.items():
                if event.key.keysym.sym == value[0]:
                    return key

La seule explication raisonnable pour ton problème c'est qu'il y a un délai dans le "buffer", mais en principe SDL_WaitEvent() n'attend pas si quelque chose se trouve dans le buffer.

Tu peux tenter ça au cas où ? C'est un peu sale et ça agit que quand tu relâches les touches mais ça devrait aider à y voir plus clair.

def poly_wait_key():
    event = SDL_Event()
    while 1:
        while SDL_PollEvent(event):
            pass
        k = poly_get_key()
        if k != KEY_NONE:
            break
        SDL_WaitEvent(event)
    while poly_get_key() != KEY_NONE:
        SDL_WaitEvent(event)
    return k

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 478 Défis: 0 Message

Citer : Posté le 15/10/2021 20:21 | #


Ça ne change rien, mais j'ai remarqué que j'ai pas de délai avec la touche Échap pour quitter le jeu.
(Même sans le code que tu m'a passé)
C'est sans doute lié aux mouvements, plus qu'a la partie input.
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 16/10/2021 14:47 | #


Le tableau des scores est en ligne, et sera mis à jour par la suite : https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1

Je l'ai rajouté aussi en haut de l'article.

Ajouté le 16/10/2021 à 18:33 :
Le tableau des score est en ligne avec quelques participations : https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1

  • Participant #1: 53.8692 points/plateau
  • Participant #2: 53.4673 points/plateau
  • Participant #5: 53.4194 points/plateau

Ne vous laissez pas intimider par les scores proches (les trois approches sont quasi-identiques !), il y a encore beaucoup de marge à gagner.

Par exemple, si on décommente l'astuce commentée dans ia3greed.py (!), on obtient 56.2481 points/plateau, et on peut faire encore largement mieux.

Bon courage à tous ! o/

Ajouté le 16/10/2021 à 19:12 :
Et une nouvelle première place avec un score de 57.0246 points/plateau me donne immédiatement raison !

Ajouté le 16/10/2021 à 20:56 :
L'article expliquant le fonctionnement de ia3greed.py est paru, juste ici : https://www.planet-casio.com/Fr/forums/topic16907-1-ia-synchro-donjon-3-optimisations-locales.html

Actuellement cette IA est #2 sur le classement, mais pas pour très longtemps, donc n'hésitez pas à vous lancer

Ajouté le 20/10/2021 à 21:25 :
Deux nouvelles participations ce soir : https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1

On a du 61.0491 et du 57.3167, qui sont désormais #1 et #2 - ce qui montre bien le potentiel encore !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 478 Défis: 0 Message

Citer : Posté le 21/10/2021 09:10 | #


Ah merde… faut vraiment que je refasse mon algo…
On me prend de vitesse !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 21/10/2021 13:39 | #


On a une nouvelle participation qui pousse encore plus loin les bonnes idées et atteint pas moins de 70.54 points/plateau, bravo ! https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1

Ajouté le 24/10/2021 à 09:12 :
Deux nouvelles participations aujourd'hui, dont un 61.3689 points/plateau de SlyVTT qui prend la seconde place. Bien vu ! https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1

Ajouté le 28/10/2021 à 19:11 :
Quelques nouvelles participations ces derniers jours, avec la montée fulgurant de SlyVTT qui dépasse tout le monde de loin avec 85.7341 points/plateau. Mais par quel moyen me demande-t-on ?! https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 28/10/2021 21:44 | #


Lephenixnoir a écrit :
Mais par quel moyen me demande-t-on ?! https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1


Je ne peux rien dire, juste que tout est parfaitement légal

Ajouté le 01/11/2021 à 07:26 :
Lephe'

je ne sais pas si c'est volontaire, mais en analysant certains tableaux, il apparait que des monstres/pieges/pics peuvent se générer sur la grille aux emplacement de départ des joueurs (en fait je comprenais pas pourquoi avec certaines grilles "pas si horribles que cela", le score était vraiment négatif).

Le code de génération du plateau dans synchrod.py est :

    for i in range(128):
        if board[i] == VOID and ri(rs,0,16)<2:
            board[i]=[MONSTER, MONSTER, SPIKES, TRAP][ri(rs,0,4)]+ri(rs,0,5)

Si c'est un bug, et que ce n'est pas voulu, peut être faudrait il rajouter un truc du genre :

    for i in range(128):
        if board[i] == VOID and ri(rs,0,16)<2 and not i in pp:
            board[i]=[MONSTER, MONSTER, SPIKES, TRAP][ri(rs,0,4)]+ri(rs,0,5)

Car par construction, les emplacements des joueurs sont de type VOID/VIDE.

Si c'est volontaire pour donner un peu plus de piquants, c'est cool aussi

@+

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 01/11/2021 08:59 | #


Merci. Ce n'est pas volontaire, mais les emplacements des joueurs ne sont pas VOID par construction ; ni au début (puisque c'est ce qu'on étudie là), ni au cours de la partie (puisque tu peux marcher sur des pics).

Ç'aurait pu être une facilité, mais comme ça n'embête que les très bons scores et que mettre à jour les fichiers si près du but serait un peu casse-pieds pour tout le monde, je pense aussi bien de le laisser comme ça

Soit dit en passant comme traditionnellement les coûts des cases dans le pathfinding sont des coûts d'entrée, les algos ne sont pas cassés. Y'a juste un effet assez moche sur la visualisation.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 01/11/2021 10:09 | #


Oui effectivement, changer maintenant serait compliqué.
J'avoue que j'avais pas remarqué ça plus tôt, car c'est en analysant dans le détail (pour gratter la marge) que cela m'a sauté aux yeux ;-)

Je me suis mal exprimé sur le VOID ;-)
A la génération du tableau, les cases de départ des joueurs (# 17,30,97,110) sont forcées en type VOID/VIDE (par opposition au type WALL/MUR), afin d'être sûr de pas démarrer dans une case MUR, puis vient alors la phase de génération des monstres/pieges/pics, mais qui du coup voit un type VOID et donc autorise de positionner un piège/monstre/pics ici.

Bon de toute manière, statistiquement, cela ne doit pas représenter une grosse proportion de cas (mais j'ai pas regardé exactement à vrai dire).

@+

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 01/11/2021 10:19 | #


A la génération du tableau, les cases de départ des joueurs (# 17,30,97,110) sont forcées en type VOID/VIDE (par opposition au type WALL/MUR), afin d'être sûr de pas démarrer dans une case MUR, puis vient alors la phase de génération des monstres/pieges/pics, mais qui du coup voit un type VOID et donc autorise de positionner un piège/monstre/pics ici.

Ah oui, c'est exact ! J'avais oublié ce détail, c'est dans la génération initiale du labyrinthe.

Bon de toute manière, statistiquement, cela ne doit pas représenter une grosse proportion de cas (mais j'ai pas regardé exactement à vrai dire).

Toutes les cases ont une probabilité indépendante de 1/8 d'avoir une obstacle, dont 1/16 monstre, 1/32 piège, 1/32 pics, et la couleur est uniformément distribuée. Donc il y a quand même 22.8% des plateaux qui ont un obstacle sur au moins un des joueurs
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 08/11/2021 09:17 | #


Le concours est maintenant fini. On ne va pas cacher que ç'aura été une édition très plate ici... heureusement les problèmes ont été bien creusés par la communauté TI-Planet, ce qui a été très sympa à suivre/commenter.

Les scores de Synchro-Donjon sont finaux et l'anonymat est levé : https://tiplanet.org/concours_synchrod2021.php?delta=0&infos=0&worse=1&invalid=1

Les scripts seront disponibles dans la journée pour que vous puissiez voir comment chacun a procédé. Pas mal de bonnes idées sont sorties, donc je ferai un retour sur les aspects algorithmiques sympas du jeu dans l'article de résultats.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 08/11/2021 09:30 | #


Merci Lephe pour ce super concours, j'ai vraiment adoré. Et du coup je me suis mis au Python, et Bravo à Pavel qui est décidément vraiment très fort.
Place à la parole au vainqueur
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Eragon Hors ligne Gardien des bots Points: 478 Défis: 0 Message

Citer : Posté le 08/11/2021 10:06 | #


Merci pour le concours.

Une flemmardite aiguë m'a empêché de finir mon algo. Mais j'y ai pensé hier… mais c'était le tour de la fatigue du samedi soir de venir se venger.

Félicitation aux participants, et un grand bravo au vainqueur.
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 11/11/2021 19:14 | #


Afyu a renoncé à son lot (celui qu'il voulait est parti), donc tes efforts t'en valent quand même un Eragon, même si ton Dijkstra a été une certaine épreuve

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

Il me faudrait ton adresse postale pour te l'envoyer

Ajouté le 17/11/2021 à 13:38 :
Ping @Eragon !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 478 Défis: 0 Message

Citer : Posté le 20/11/2021 12:14 | #


Merci Afyu pour le lot.

Je suis certain que tout ce qu'il m'a manqué c'était de jouer avec les valeurs de difficultés… juste 10 min de travail m'auraient suffi.
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 20/11/2021 12:18 | #


Oui tu pouvais aussi jouer avec l'opti cachée dans ia3greed.py qui rapporte plusieurs points
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 147 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