123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- from Outils.Moteur_de_jeu import Conversion
- from Outils.Moteur_de_jeu.Conversion import *
- from os import (popen,system)
- """
- Attention, ce code est conçu pour des plateaux standards : 9 cases sur 9 avec 10 barrières par joueurs
- """
- def inserer_coup(stats, code_p, code_c) :
- """
- Mets à jour les stats de la partie code_p pour le coup code_c
- """
- # Création du tableau des codes de parties à partir du texte brut, puis recherche :
- tab_p = [l[:l.find(" ")] for l in stats]
- (trouve, id_p) = recherche(tab_p, code_p)
- if not trouve :
- insertion_place(stats," ", id_p)
- # Création du tableau de codes de parties à partir de la ligne brute :
- l = stats[id_p]
- tab_c_complet = l[l.find(" ") + 1:].split(",")
- if tab_c_complet == [''] :
- tab_c_complet = []
- # Création du tableau de nombres d'occurences :
- tab_c = []
- tab_n = []
- for c in tab_c_complet :
- tab_c.append(c[:c.find(":")])
- tab_n.append(int(c[c.find(":") + 1:]))
- # Recherche du coup et insertion/incrémentation :
- (trouve, id_c) = recherche(tab_c, code_c)
- if not trouve :
- insertion_place(tab_c_complet, code_c + ":1", id_c)
- else :
- tab_c_complet[id_c] = code_c + ":" + str(tab_n[id_c] + 1)
- # Recomposition :
- l = code_p + " "
- for coup in tab_c_complet :
- l += coup + ","
- l = l[:-1]
- stats[id_p] = l
-
- def analyser_fichier(origine, destination, nom, stats) :
- # Déplacement du fichier avant traitement :
- original = open(origine + "/" + nom, "r")
- contenu = original.readlines()
- original.close()
- copie = open(destination + "/" + nom, "w")
- for l in contenu :
- copie.write(l)
- copie.close()
- ###
-
-
- gagnant = int(contenu[-1][-1]) - 1
- types_joueur = ["",""]
- # Recherche du début de la partie :
- l = 0
- while contenu[l][:3] != "Cou" :
- if contenu[l][0] == "J" :
- types_joueur[int(contenu[l][7]) - 1] = contenu[l][-2]
- l += 1
- # On ne prend en compte que les coups joués par des humains :
- if types_joueur[gagnant] == "O" :
- return
- plateau = Plateau(9,9,10)
- # Analyse de chaque coup :
- while contenu[l][:3] == "Cou" :
- s = contenu[l]
-
- #Césure de la ligne :
- str_c = s[s.find(":") + 2:]
- coup = coup_from_str(str_c)
- #Si le coup a été joué par le gagnant, on l'insère dans stats :
- if plateau.tour == gagnant :
- code_p = code_from_plateau(plateau)
- code_c = code_from_coup(coup)
-
- inserer_coup(stats, code_p, code_c)
-
- plateau.executer_coup(coup)
- l += 1
-
-
-
-
- def traiter_parties(origine, destination, nom_fichier_stats) :
- liste_noms_brute = popen("dir " + origine + " /b").read().split("\n")[:-1]
- liste_noms = [nom for nom in liste_noms_brute if nom[-3:] == "txt"]
- fichier = open(nom_fichier_stats, "r")
- stats = []
- for l in fichier :
- if l != [] :
- stats.append(l[:-1])
- fichier.close()
- for nom in liste_noms :
- analyser_fichier(origine, destination, nom, stats)
- fichier = open(nom_fichier_stats, "w")
- for l in stats :
- fichier.write(l + "\n")
- fichier.close()
- system("del /Q " + origine)
-
-
- def test() :
- fichier = open("stats.txt", "r")
- stats = fichier.readlines()
- fichier.close()
- stats = inserer_coup([], "bill", "ah_ah")
- stats = inserer_coup(stats, "bill", "oh_oh")
- stats = inserer_coup(stats, "bill", "ah")
- stats = inserer_coup(stats, "bill", "zh_zh")
- stats = inserer_coup(stats, "bill", "oh_oh")
- stats = inserer_coup(stats, "zzz", "oh_oh")
- stats = inserer_coup(stats, "zzz", "oh_oh")
- stats = inserer_coup(stats, "gauss", "bah")
- stats = inserer_coup(stats, "d", "oh_oh")
- stats = inserer_coup(stats, "zzzz", "oh_oh")
- fichier = open("stats.txt", "w")
- for l in stats :
- fichier.write(l + "\n")
- fichier.close()
- #traiter_parties("PARTIES_A_TRAITER", "PARTIES_TRAITEES", "stats.txt")
- traiter_parties("TEST_PARTIES_A_TRAITER", "TEST_PARTIES_TRAITEES", "test_stats.txt")
|