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 - Concours


Index du Forum » Concours » Le Fil d'Entraide du Concours de Rentrée 2023
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Le Fil d'Entraide du Concours de Rentrée 2023

Posté le 08/10/2023 20:55

Bon comme à l'accoutumée, le concours de rentrée est apparu.

Le cru 2023 est basé sur le jeu de cartes du 1000 bornes que vous connaissez certainement Toutes et Tous.
Les modalités du concours sont ici : Concours Python de rentrée 2023-2024 ou dans le post original sur TIP.



Donc voici le fil d'entraide qui suivra ici. Je crée juste le lien, n'ayant pour le moment pas encore regardé en détail les scripts du jeu. Il s'agit de la zone d'échange habituelle sur la communauté Planète Casio afin d'échanger des infos, des outils, demander de l'aide ...

Bon code à Toutes et Tous, un grand merci à Critor et à la bande de codeurs du défi, et amusez-vous bien.


1, 2, 3, 4, 5, 6 Suivante
Fcalva En ligne Membre Points: 600 Défis: 10 Message

Citer : Posté le 08/10/2023 21:06 | #


Je suis partant pour faire une équipe PC si il y a d'autres gens qui veulent rejoindre
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 09/10/2023 10:16 | #


Bonne idée l'équipe PC, il faut y aller à fond !
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: 2389 Défis: 17 Message

Citer : Posté le 10/10/2023 19:39 | #


Juste deux mini astuces qui pourront vous servir:

si vous voulez savoir quelle est la dernière carte présente sur la pile de bataille (en gros si on vous a mis une attaque):
if len(self.infos_joueur.pile_bataille):
  crte = self.infos_joueur.pile_bataille[-1]

ensuite vous pourrez vérifier si il s'agit d'une carte d'attaque avec
if not est_carte_attaque( crte ):
  print( "Pas de carte de bataille à traiter : OK " )
else:
  print("Il faut traiter cette carte de bataille")


de même la pile des cartes de vitesses est accessible avec
if len(self.infos_joueur.pile_vitesse):
  crte = self.infos_joueur.pile_bataille[-1]

En espérant que cela vous aide ...
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Validuser Hors ligne Membre Points: 508 Défis: 1 Message

Citer : Posté le 10/10/2023 19:40 | #


Ah merci Sly'
Votre développeur favori
Je suis en train de travailler sur TD'PC : un Tower Defense sur G35+EII (Bien sûr que oui je travaille dessus )
Ne pas cliquer
Mtn que tu à cliqué tu est obligé de tout installer
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 13/10/2023 19:55 | #


J'essaie pour ma part désespérément de faire fonctionner la version PythonEx sur ma G90+E mais j'ai toujours un message d'erreur :

"Traceback (most recent call last):
File "<stdin>", line 1
SyntaxError: Invalid Syntax
>>>
"

Vous auriez une idée ?
Je n'ai jamais utilisé PythonExtra avant donc il y a peut être qq chose que je fais mal.
Peut être que je l'ai juste mal installé et qu'il en manque des morceaux.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 13/10/2023 21:36 | #


As-tu bien mis les scripts à la racine, et non pas dans un sous-dossier ?
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 13/10/2023 21:42 | #


J'avais mis dans un sous dossier et effectivement le problème venait bien de là.
Merci bcp.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 13/10/2023 21:45 | #


Merci pour ton retour, bien rassuré que ça ait marché.

Contrairement à l'application Python de Casio, PythonEx et KhiCAS/Micropy ne vont pas chercher les scripts à importer dans le même dossier que celui du script que tu as lancé, mais uniquement dans la racine.
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 14/10/2023 08:38 | #


Notez que c'est un bug qui devra être corrigé plus tard (import relatifs au dossier courant). Cela dit erreur de syntaxe c'est étonnant, je creuserai...
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: 2389 Défis: 17 Message

Citer : Posté le 14/10/2023 09:55 | #


A priori ça c'est dans micropy, pas dans PythonExtra, non ?

Je suis superbement étonné de la vitesse d'éxécution, ça tourne vraiment super bien. Le seul "souci" que je rencontre est que comme j'ai mis pas mal de "print" pour tracker le comportement de l'IA, ça scrabouille la sortie graphique car la console et la sortie graphique sont communes (ça pourrait être une belle évolution de splitter les deux).
Sinon c'est vraiment excellent, bravo !!!
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 14/10/2023 10:00 | #


L'erreur de syntaxe oui, mais comme l'import relatif est certainement supporté, soit il faut que je configure MicroPython mieux soit l'erreur est indirecte, on verra.

En effet le rendu graphique est sur l'unique VRAM et le shell aussi, donc ça se superpose. Je pourrais séparer les VRAM, mais j'ai un peu peur de la consommation de mémoire (178 ko de tas en moins ça pourrait être problématique pour les scripts). Quand on aura accès à la mémoire supplémentaire utilisée par l'appli Python, je pourrai faire ça.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Critor En ligne Administrateur Points: 2673 Défis: 18 Message

Citer : Posté le 14/10/2023 10:06 | #


Effectivement, les print() sont désactivés en cours de partie dans le cas de PythonExtra, pour éviter que la mise à jour de l'affichage console n'écrase l'affichage graphique.

Pour cela je sauvegarde la fonction print() en _print(), puis affecte print() avec une nouvelle fonction qui selon la configuration détectée appelle _print() ou pas.

PythonExtra n'est pas la seule plateforme/configuration concernée par le problème. Il y a aussi :
- HP Prime
- TI-83PCE/84+CE
- TI-Nspire avec Micropython
Dimartino Hors ligne Maître du Puzzle Points: 325 Défis: 2 Message

Citer : Posté le 14/10/2023 17:20 | # | Fichier joint


Salut, j'ai réussi à faire marcher le jeu mais je ne comprend pas certaine situations du jeu : ex sur la photo en PJ, je ne peux pas poser ma borne 75, je ne comprends pas pourquoi.
Quelqu'un pourrait m'expliquer ?
Et des fois le jeu marque allonge/extension je ne sais pas à quoi ça fait référence...
Mon projet du moment : Memen'Casio
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 14/10/2023 17:56 | #


tu dois dans un premier temps faire 700km tout pile donc tu ne peux pas poser plus qu'une borne 25km.
si tu atteints 700km, alors on te pose la question de l'allonge, a savoir si tu desire arreter ici ou aller à 1000km.
c'est pour ca que tu ne peux pas poser ta borne 75 pour le moment
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Dimartino Hors ligne Maître du Puzzle Points: 325 Défis: 2 Message

Citer : Posté le 14/10/2023 20:44 | #


Merci Sly'
Mon projet du moment : Memen'Casio
Dimartino Hors ligne Maître du Puzzle Points: 325 Défis: 2 Message

Citer : Posté le 14/10/2023 20:56 | #


Désolé pour le double post, j'ai une erreur à un moment donné, mais le jeu se ferme instant, c'est assez chiant parce que je n'ai pas le temps de lire l'erreur. Vous auriez un moyen pour éviter ça ?
Mon projet du moment : Memen'Casio
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 15/10/2023 09:06 | #


Pour celles et ceux qui joueraient sur PC avec une résolution d'écran petite, il y a risque que vous ne voyiez pas l'intégralité de l'écran. C'est arrivé hier à Ptitjoz en résolution 1366*768 et il ne voyait donc pas les mains de cartes :

Dans ce cas, il faut éditer le fichier pc7.py au niveau de la ligne 368
et changer la ligne suivante
pc_sdl2._PC_init(640, 480, 2)

pour la remplacer par
pc_sdl2._PC_init(640, 480, 1)


Initialement il est demandé à PySDL2 d'ouvrir une fenêtre de 640*480 avec un upscaling de x2 donc en fait une fenêtre de 1280x960 effectivement trop grande pour les faibles résolutions d'écran. En passant le facteur d'upscaling à x1, on revient à du véritable 640*480 et magie :

on a bien cette fois tout l'écran visible.

Pour les curieux, pas la peine de tenter un nombre flottant du style 1.5 ou 1.8, afin d'ajuster plus finement, cela ne fonctionnera pas, il faut un entier.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 15/10/2023 09:16 | #


Autre petite astuce, si vous voulez faire ressortir quelques messages important dans la console, il est sympa de pouvoir mettre un peu de couleur dans vos messages afin d'attirer votre oeil sur ce qui est vraiment important, je vous partage donc quelques petites fonctions que vous pourrez coller au tout début de votre script d'IA, juste après les lignes :
from kblibpub import *

try:
    from random import choice
except:
    from urandom import choice


et avant la ligne
class c_joueur:

    def __init__(self, num_joueur, nbr_joueurs, points_objectif):
        ...


Voici donc mes fonctions print_xxx() avec xxx un nom de couleur. Vous pourrez bien entendu jouer un peu avec et améliorer à votre sauce, c'est cadeau :

# SOME SIMPLE FUNCTIONS TO PRINT WITH COLOR USING ANSI CODES (MAYBE NOT TRANSVERSE TO ALL PLATEFORMS)
class Colors:
    """ ANSI color codes """
    BLACK = "\033[0;30m"
    RED = "\033[0;31m"
    GREEN = "\033[0;32m"
    ORANGE = "\033[0;33m"
    BLUE = "\033[0;34m"
    PURPLE = "\033[0;35m"
    CYAN = "\033[0;36m"
    LIGHT_GRAY = "\033[0;37m"
    DARK_GRAY = "\033[1;30m"
    LIGHT_RED = "\033[1;31m"
    LIGHT_GREEN = "\033[1;32m"
    YELLOW = "\033[1;33m"
    LIGHT_BLUE = "\033[1;34m"
    LIGHT_PURPLE = "\033[1;35m"
    LIGHT_CYAN = "\033[1;36m"
    LIGHT_WHITE = "\033[1;37m"
    BOLD = "\033[1m"
    FAINT = "\033[2m"
    ITALIC = "\033[3m"
    UNDERLINE = "\033[4m"
    BLINK = "\033[5m"
    NEGATIVE = "\033[7m"
    CROSSED = "\033[9m"
    END = "\033[0m"

def print_red(skk):
    print(Colors.RED + "{}".format(skk) + Colors.END)
def print_orange(skk):
    print(Colors.ORANGE + "{}".format(skk) + Colors.END)
def print_yellow(skk):
    print(Colors.YELLOW + "{}".format(skk) + Colors.END)
def print_green(skk):
    print(Colors.GREEN + "{}".format(skk) + Colors.END)
def print_blue(skk):
    print(Colors.BLUE + "{}".format(skk) + Colors.END)
def print_cyan(skk):
    print(Colors.CYAN + "{}".format(skk) + Colors.END)
def print_purple(skk):
    print(Colors.PURPLE + "{}".format(skk) + Colors.END)


Je pense que le principe est assez simple pour fignoler et vous permettre de compléter avec vos couleurs. C'est basé sur les Escape Code ANSI donc devrait fonctionner sur Win/Linux/Mac, par contre pas sur calculatrices, désolé.

Il alors de faire un appel à print_blue("mon message en bleu") par exemple pour avoir le texte écrit en bleu dans la console.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Dimartino Hors ligne Maître du Puzzle Points: 325 Défis: 2 Message

Citer : Posté le 15/10/2023 12:49 | #


Salut, d'abord merci Sly' pour ces astuces c'est incroyable !

J'aimerais accéder à la main de mon ia, pour ça je print(self.infos_joueur.main) mais je me retrouve avec des entiers allant de 1 à 19, ce qui est logique car dans le fichier kblibpub.py il y a :
I_25_BORNES, I_50_BORNES, I_75_BORNES, I_100_BORNES, I_200_BORNES, I_FEU_VERT, I_FEU_ROUGE, I_VEHICULE_PRIORITAIRE, \
  I_LIMITATION, I_FIN_LIMITATION, I_PANNE_ESSENCE, I_POMPE_ESSENCE, I_CAMION_CITERNE, I_CREVAISON, I_ROUE_SECOURS, \
  I_VEHICULE_INCREVABLE, I_ACCIDENT, I_REPARATIONS, I_AS_VOLANT, N_CARTES = range(20)


De ce que j'ai compris il définit un nb aléatoire pour chaque carte. Mais du coup, comment je fais pour savoir quel nb correspond à quelle carte ?
Mon projet du moment : Memen'Casio
Fcalva En ligne Membre Points: 600 Défis: 10 Message

Citer : Posté le 15/10/2023 12:59 | #


Tu peux juste utiliser les acronymes des cartes, une carte 25 bornes == I_25_BORNES
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
1, 2, 3, 4, 5, 6 Suivante

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 166 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