[Trucs et astuces] Le défi de Quetzalcoatl
Posté le 24/10/2020 19:07
Alors voilà, c'est Critor qui a codé la plupart de ce défi, moi j'ai fait que la génération de la cave et l'interface du ballon donc je suis à peu près dans la même situation que vous sur le code. En l'absence d'un topic d'entraide, voilà quelques trucs et astuces ! :P
Mes techniques ne sont pas super avancées mais je pense qu'elles pourront vous aider à avancer. Comme d'habitude, ne partagez pas des solutions directement, ça casserait le jeu. Je rappelle que vous pouvez voir les scores des participants
sur la page dynamique des participations !
Ce code-là est plus simple que le labyrinthe, tout se passe dans
modifier_vol(). Les paramètre de la fonction s'appellent
ay,
da et le troisième est la durée. Les quatre premières variables de
state sont
x,
y,
a et
vy (même si
vy n'est nommé que
state[3]). À chaque étape on a :
state[3] -= ay
state[1] = max(0, min(cave_h - 1, state[1] + state[3]))
Ce qui montre que, si on ignore le min/max qui sert à juste à ne pas sortir de l'écran, à chaque tour y augmente de vy et vy augmente de ay. Donc le premier paramètre est une accélération verticale
On a également la modification suivante de
a :
state[2] = max(0, min(1, a + da))
Donc le deuxième paramètre
va est une « vitesse » pour le contrôle de
a, qui varie entre 0 et 1. L'annonce précisait qu'il semble s'agir de la forme du ballon.
Les collisions sont super compliquées mais si vous avez l’œil observateur vous remarquerez qu'il y a des ellipses. x3
Sur le calcul du score, on a :
• Pour chaque
modifier_vol(), 10 points si on accélère/décélère (ay≠0) ou si on change de forme (da≠0)
• À chaque étape,
3*(da > 0)*(1 + da) + 2*(dapi > 0)*(1 + dapi), ça a l'air de pénaliser si on change trop de forme
• 7 points par collision, sachant que si on rentre beaucoup dans la roche il y a plusieurs collisions en même temps
Donc clairement le tout c'est d'éviter au maximum les collisions et de pas envoyer trop d'instructions.
Du coup, voilà les trucs et astuces !
Avancer en ligne droite : Si on choisit bien
ay pour que
vy tombe à zéro, on peut alors laisser
ay à 0 et avancer en ligne droite au lieu de s'embêter à faire des morceaux de paraboles.
Faire des virages dangereux : Il n'y a pas de pénalité si
ay est élevé, donc on peut très bien foncer vers le haut pour passer un passage serré et annuler toute la vitesse avec un contrordre en une seule étape ! Il n'y a que le coût de l'appel à
modifier_vol() à prendre en compte.
Toujours repasser à la vitesse zéro : C'est beaucoup plus facile d'enchaîner les manœuvres si vous repassez à la vitesse zéro chaque fois que vous changez de direction, ça évite de se trimballer des vitesses résiduelles qui gênent le mouvement.
On peut encore largement grind jusqu'à la première place en faisant attention à ces éléments. Bon courage à tous ! o/
Citer : Posté le 27/10/2020 12:43 | #
Je vois qu'il n'y a pas grand-monde de Planète Casio sur ce défi-là. Dans tous les cas, n'oubliez pas que le fin approche et on a pas mal de participations en ce moment. Il reste également des places pour des lots !
Le troisième et dernier défi sera annoncé bientôt, il est conçu pour trancher avec celui-ci et je le trouve passionnant parce que les approches pour le résoudre sont beaucoup plus concrètes. J'espère qu'il vous plaira
Citer : Posté le 27/10/2020 12:53 | #
Merci.
Il ne faut pas oublier non plus que nous avions conçu ce concours pour récompenser à la fois généreusement et aussi largement que possible un maximum de gens, comme les années précédentes.
Les participants ayant déjà gagné une calculatrice au 1er défi doivent opter en priorité pour un lot de goodies sans calculatrice si ils regagnant au 2ème défi.
Donc il reste encore plus de beaux lots à gagner que le classement ne le laisse paraître...