Posté le 08/10/2023 20:55
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 56 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
Citer : Posté le 15/10/2023 12:59 | #
Tu peux juste utiliser les acronymes des cartes, une carte 25 bornes == I_25_BORNES
Caltos : G35+EII, G90+E (briquée )
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 :
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é
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
Caltos : G35+EII, G90+E (briquée )
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 :
Tu obtiendras les codes correspondant à chacune des cartes tels que définies dans le fichier kblibpub.py, lignes 18 à 39, à savoir
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",
}
Citer : Posté le 15/10/2023 18:19 | #
Merci beaucoup Sly’ et Fcalva, c’est exactement ce que je voulais
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
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
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 02/11/2023 12:32 | #
Merci. Effectivement, il faut au moins 2 joueurs au 1000 Bornes.
Tente donc au choix :
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
Citer : Posté le 02/11/2023 12:51 | #
ah je n'avais rien compris...
Désolé...
merci à tous
Citer : Posté le 02/11/2023 14:06 | #
Merci. Effectivement, il faut au moins 2 joueurs au 1000 Bornes.
Tente donc au choix :
Je me permets de corriger :
Et idem si joueur humain.
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 ?
Citer : Posté le 03/11/2023 10:07 | #
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
pour la remplacer par
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
Citer : Posté le 03/11/2023 10:08 | #
J'avais oublié de te dire merci
no problem
Citer : Posté le 03/11/2023 11:28 | #
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é ...
donc je passe par une variable intermédiaire et ça fonctionne
print_purple(cartew)
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 ...
Citer : Posté le 03/11/2023 13:02 | #
Je me permets de corriger :
Et idem si joueur humain.
Merci à toi, j'ai modifié.
Citer : Posté le 03/11/2023 17:11 | #
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):
crte = self.infos_joueur.pile_bataille[-1]
ensuite vous pourrez vérifier si il s'agit d'une carte d'attaque avec
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
crte = self.infos_joueur.pile_bataille[-1]
En espérant que cela vous aide ...
de même la pile des cartes de vitesses est accessible avec
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
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)
Citer : Posté le 04/11/2023 08:42 | #
merci
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