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: 2309 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.


Fcalva Hors ligne Membre Points: 520 Défis: 9 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 : G90+E, FX-92+ (x2)
Dimartino Hors ligne Maître du Puzzle Points: 310 Défis: 2 Message

Citer : Posté le 15/10/2023 13:03 | #


Oui, mais ce que je voudrais c'est une liste de tous les coups possibles. Pour ça, je commence par y mettre toutes les cartes de la main. Pour ça j'avais fait :
coup_list = []
for i in range(len(self.infos_joueur.main)):
   coup_list.append(self.infos_joueur.main[i])

Mais je me retrouve avec les nombres aléatoires. Je ne comprend pas bien comment je pourrais utiliser le acronymes du coup...

Je pourrais faire ça en le hardcodant, mais ça serait horrible...

Merci de ta réactivité
Mon projet du moment : Memen'Casio
Fcalva Hors ligne Membre Points: 520 Défis: 9 Message

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


Ben le nombre correspond a la carte, et si dans ta liste tu as 3 et que 3 est assigné a I_75_BORNES alors 3 == I_75_BORNES
J'ai un peu de mal a piger la syntaxe en python mais c'est une enum quoi
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

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


il y a déjà la conversion des codes cartes à travers CODES_CARTES[ID_Carte]

donc ce que tu veux faire c'est :
st = str([CODES_CARTES[carte] for carte in self.infos_joueur.main])

Tu obtiendras les codes correspondant à chacune des cartes tels que définies dans le fichier kblibpub.py, lignes 18 à 39, à savoir
CODES_CARTES = {
  None : "?",
  I_25_BORNES : "25",
  I_50_BORNES : "50",
  I_75_BORNES : "75",
  I_100_BORNES : "100",
  I_200_BORNES : "200",
  I_FEU_VERT : "V",
  I_FEU_ROUGE : "R",
  I_VEHICULE_PRIORITAIRE : "VP",
  I_LIMITATION : "L",
  I_FIN_LIMITATION : "FL",
  I_PANNE_ESSENCE : "P",
  I_POMPE_ESSENCE : "E",
  I_CAMION_CITERNE : "CI",
  I_CREVAISON : "C",
  I_ROUE_SECOURS : "S",
  I_VEHICULE_INCREVABLE : "IN",
  I_ACCIDENT : "A",
  I_REPARATIONS : "R",
  I_AS_VOLANT : "AV",
}

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: 310 Défis: 2 Message

Citer : Posté le 15/10/2023 18:19 | #


Merci beaucoup Sly’ et Fcalva, c’est exactement ce que je voulais
Mon projet du moment : Memen'Casio
Ptitjoz Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 02/11/2023 11:58 | #


Bonjour
je démarre ce concours sur pc, mais je rencontre un souci…

si je fais python3 kb.py avec 2 joueurs et un humain ça fonctionne
2 joueurs pas d'humain ca fontionne
par contre, si je veux lancer contre sa propre ia ça plante...

une idée ? Merci

$ python3 kb.py ia_random
Pour reproduire, plante la graine 198410986.
=====================
Debut de partie a 9000pts
--------------------
IA0 Penseur Aleatoire v1.0
=====================
Manche 1 Pioche 1
--------------------
IA0 +100pts (botte)
Coup invalide :  S IA #0(Main) -> IA #0(Jeu)
Etat IA0 :
- bornes 0/700 km
- bataille : ?
- vitesse : ?
- bottes : AV
- main :  100 R V 75 S FL 100
Traceback (most recent call last):
  File "/home/joz/Developpement/TIP/KB/kb002/kb.py", line 52, in <module>
    kb_partie(classes_joueurs, nbr_humains)
  File "/home/joz/Developpement/TIP/KB/kb002/kblibprv.py", line 855, in kb_partie
    coup = joueur.decide_coup()
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/joz/Developpement/TIP/KB/kb002/ia_random.py", line 60, in decide_coup
    destination = choice(autres_joueurs)
                  ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/random.py", line 373, in choice
    raise IndexError('Cannot choose from an empty sequence')
IndexError: Cannot choose from an empty sequence


Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Fcalva Hors ligne Membre Points: 520 Défis: 9 Message

Citer : Posté le 02/11/2023 12:08 | #


Tu as mis qu'une seule IA ? Eh bien c'est logique, tu ne peux pas jouer au milles bornes tout seul non
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Critor En ligne Administrateur Points: 2614 Défis: 18 Message

Citer : Posté le 02/11/2023 12:32 | #


Merci. Effectivement, il faut au moins 2 joueurs au 1000 Bornes.

Tente donc au choix :
  • pour affronter ia_random :
    python3 kb.py ia_clavier ia_random
  • pour faire s'affronter 2 ia_random :
    python3 kb.py ia_random ia_random
Critor En ligne Administrateur Points: 2614 Défis: 18 Message

Citer : Posté le 02/11/2023 12:33 | #


Un live Twitch dédié au concours est prévu ce jeudi 2 novembre 18h.
Tu y seras accueilli par Radalium, brillant lauréat de notre concours de l'année dernière, avec cent20 en coanimation.
Lien : https://www.twitch.tv/radalium
Ptitjoz Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 02/11/2023 12:51 | #


ah je n'avais rien compris...
Désolé...
merci à tous
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 02/11/2023 14:06 | #


Critor a écrit :
Merci. Effectivement, il faut au moins 2 joueurs au 1000 Bornes.

Tente donc au choix :
  • pour affronter ia_random :
    python3 ia_clavier ia_random
  • pour faire s'affronter 2 ia_random :
    python3 ia_random ia_random


Je me permets de corriger :

Python3 kb.py ia_random ia_random


Et idem si joueur humain.
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: 2309 Défis: 17 Message

Citer : Posté le 03/11/2023 10:07 | #


J'ai testé sur windows10 et 11 avec vscode et PyCharm.
Ainsi que sur linux (Ubuntu 22.04 LTS) avec vscode et PyCharm.
En parallèle linux avec Terminator en ligne de commande sort aussi les logs avec la prise en compte des couleurs.

Dans tous les cas cela fonctionne chez moi.

Il faut juste que le terminal sache gérer les ESCAPE Codes ANSI (ce que classiquement tous les terminaux sérieux usuels font sans problème).

Tu t'en sers comment de ces fonctions ? Tu as un bout de code à nous montrer ?
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 03/11/2023 10:07 | #


Slyvtt a écrit :
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.

J'avais oublié de te dire merci
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 03/11/2023 10:08 | #


Ptitjoz a écrit :
J'avais oublié de te dire merci

no problem
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 03/11/2023 11:28 | #


Slyvtt a écrit :
J'ai testé sur windows10 et 11 avec vscode et PyCharm.
Ainsi que sur linux (Ubuntu 22.04 LTS) avec vscode et PyCharm.
En parallèle linux avec Terminator en ligne de commande sort aussi les logs avec la prise en compte des couleurs.

Dans tous les cas cela fonctionne chez moi.

Il faut juste que le terminal sache gérer les ESCAPE Codes ANSI (ce que classiquement tous les terminaux sérieux usuels font sans problème).

Tu t'en sers comment de ces fonctions ? Tu as un bout de code à nous montrer ?

je pense que tu répondais au message sur les couleurs que j'ai effacé... Désolé ...

print_red("*** Carte : ",carte," : ",CODES_CARTES[carte]," ***")
ne fonctionnait pas car n'attendait qu'un seul argument et non 5
donc je passe par une variable intermédiaire et ça fonctionne

cartew ="*** Carte :" + str(carte) + " : " +CODES_CARTES[carte]+" ***"
print_purple(cartew)

Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 03/11/2023 11:45 | #


Oui effectivement il faut faire la concaténation de chaine avant de la passer en argument de la fonction.
j'ai fait au plus simple avec ces fonctions, elles ne prennent qu'un seul argument, j'ai pas fait de versions variadiques ...
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Critor En ligne Administrateur Points: 2614 Défis: 18 Message

Citer : Posté le 03/11/2023 13:02 | #


Slyvtt a écrit :
Je me permets de corriger :

Python3 kb.py ia_random ia_random


Et idem si joueur humain.

Merci à toi, j'ai modifié.
Ptitjoz Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 03/11/2023 17:11 | #


Slyvtt a écrit :
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 ...


Slyvtt a écrit :

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]


ce n'est pas joueur.pile.vitesse[-1] ?



Sinon qelques questions basiques... afin pouvoir avancer dans la compréhension de ce concours (ne riez pas)

comment connaitre les cartes que l'adversaire a sur sa table ( par exemple un véhicule prioritaire, un accident, ses bornes, etc)

idem pour les cartes que j'ai devant moi, un As du volant, mes bornes, une limitation de vitesse)

je ne suis que dans le cas de figure que de 2 joueurs mon IA contre une autre IA

Merci de votre aide
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 03/11/2023 21:24 | #


La pile dite de "vitesse" est la pile qui contient les limitations de vitesse (50km/h maxi) et la fin de limitation de vitesse.
Je sais c'est trompeur.

Les bottes du joueur sont accessibles via self.infos_joueur.bottes

celles de l'adversaire via self.infos_joueurs[num_joueur].bottes avec num_joueur le numéro du joueur en question (je te laisse chercher cette partie du problème)
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 222 Défis: 10 Message

Citer : Posté le 04/11/2023 08:42 | #


merci
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 31/12/2023 14:45 | #


Bon les Loustics

il vous reste grosso modo 15 jours pour améliorer vos IA et poster celles-ci pour combattre dans l'arène et espérer être dans les 3 finalistes de l'année.

Donc il est plus que temps de vous y mettre sérieusement, vous avez encore le temps, mais là faut plus procrastiner.

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...

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