#-------------------------------------------------------------------------------------- # EXEMPLE D'UNE CLASSE C_JOUEUR DEFINISSANT UNE IA JOUANT BETEMENT SES CARTES AU HASARD #-------------------------------------------------------------------------------------- from kblibpub import * try: from random import choice except: from urandom import choice class c_joueur: def __init__(self, num_joueur, nbr_joueurs, points_objectif): self.num_joueur = num_joueur # mon numero de joueur self.nbr_joueurs = nbr_joueurs # nombre total de joueurs # informations de jeu collectees sur l'ensemble des joueurs self.infos_joueurs = [ i == num_joueur and c_infos_jeu_et_main(i, nbr_joueurs, points_objectif) or c_infos_jeu(i, nbr_joueurs, points_objectif) for i in range(nbr_joueurs) ] # mes informations de jeu self.infos_joueur = self.infos_joueurs[num_joueur] # nom de l'IA self.nom_joueur = "Penseur Aleatoire" # version de l'IA self.ver_joueur = "1.0" # nom de groupe (optionnel, pour les participants decidant de rejoindre un groupe) self.nom_groupe = "" # signature du groupe (a demander et recuperer aupres du chef de groupe) self.sig_groupe = "" # cri de victoire de l'IA self.msg_joueur = ( "\x4c\x65\x20\x68\x61\x73\x61\x72\x64\x20\x66\x61\x69\x74\x20\x62\x69\x65\x6e\x20\x6c\x65\x73\x20\x63\x68\x6f\x73\x65\x73" ) #-------------------------------------------------- # DEBUT DES FONCTIONS NECESSITANT D'ETRE AMELIOREES #-------------------------------------------------- def decide_coup(self): # cet exemple d'IA joue ses cartes completement au hasard # c'est cette fonction-ci qui a donc grandement besoin de tes lumieres carte = None origine, destination = self.num_joueur, self.num_joueur if len(self.infos_joueur.main) < self.taille_main: # si on a moins de cartes en main, alors on peut tirer une carte du et la rajouter a sa main origine = SABOT else: # sinon, si on a cartes en main, alors on peut jouer une carte de sa main # choisit la carte au hasard carte = choice(self.infos_joueur.main) # si c'est une carte d'attaque, choisit au hasard le joueur/IA qui est attaque (utile pour les parties a plus de 2 joueurs) if est_carte_attaque(carte): autres_joueurs = [i for i in range(self.nbr_joueurs)] autres_joueurs.remove(self.num_joueur) destination = choice(autres_joueurs) coup = c_coup(origine, carte, destination) # exemple d'une des nombreuses ameliorations possibles selon les regles du 1000 Bornes # SI # - je ne peux pas rouler # - ET je ne suis pas sous le coup d'une attaque # - ET j'ai une carte en main # ALORS je joue la carte dans mon jeu #if not self.infos_joueur.vehicule_roulant() \ # and not est_carte_attaque(self.infos_joueur.carte_bataille()) \ # and I_FEU_VERT in self.infos_joueur.main: # coup = c_coup(self.infos_joueur.num_joueur, I_FEU_VERT, self.infos_joueur.num_joueur) return coup def pari_allonge(self, bornes_arrivee): t = choice((True, False)) return t #-------------------------------------------------- # FIN DES FONCTIONS NECESSITANT D'ETRE AMELIOREES #-------------------------------------------------- def id_str(self): return self.infos_joueur.id_str() + " {:s} v{:s}".format(self.nom_joueur, self.ver_joueur) def nouvelle_manche(self, nbr_cartes, taille_main, bornes_arrivee): self.taille_main = taille_main for infos_joueur in self.infos_joueurs: infos_joueur.nouvelle_manche(nbr_cartes, taille_main, bornes_arrivee) def fin_manche(self, bornes_joueurs, len_pioche): for infos_joueur in self.infos_joueurs: infos_joueur.fin_manche(bornes_joueurs, len_pioche) def allonge(self, num_joueur, bornes_arrivee): for infos_joueur in self.infos_joueurs: infos_joueur.allonge(num_joueur, bornes_arrivee) def traite_coup(self, coup): for i in range(self.nbr_joueurs): self.infos_joueurs[i].traite_coup(coup) def rejoint_groupe(self, num_joueur, nom_groupe): self.infos_joueurs[num_joueur].nom_groupe = nom_groupe