Skip to content

Commit

Permalink
wip AI
Browse files Browse the repository at this point in the history
  • Loading branch information
Strapontin committed May 23, 2024
1 parent 1a4c484 commit c6b393e
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 6 deletions.
15 changes: 15 additions & 0 deletions AI-helper/Explication_regles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,18 @@ Pour nominer un joueur que vous souhaitez tuer, dites simplement "Je nomine Bob"
Chaque jour, vous pouvez nominer pour autant de joueurs que vous le souhaitez, et quiconque a le plus de voix est exécuté. Il faut un nombre de vote égal ou supérieur à 50% des joueurs en vie ou l'exécution est annulée. En cas d'égalité, aucun joueur est exécuté.

Si vous mourrez, vous continuez d'avoir une importance dans la partie. Vous pouvez continuer de parler, et vous fermez vos yeux pendant la nuit. Vous pouvez encore gagner ou perdre avec votre équipe. En réalité, le résultat de la partie se détermine souvent suite aux votes et opinions des joueurs morts. Lorsque vous mourez, vous perdez votre compétence, vous ne pouvez plus nominer, et il vous reste un dernier vote pour toute la partie, à utiliser soigneusement.


Il y a toujours un seul Démon par partie. La composition du village est prédéfinie en amont selon le nombre de joueurs :
- 5 Joueurs : 3 Villageois, 0 Etrangers, 1 Sbire, 1 Démon
- 6 Joueurs : 3 Villageois, 1 Etrangers, 1 Sbire, 1 Démon
- 7 Joueurs : 5 Villageois, 0 Etrangers, 1 Sbire, 1 Démon
- 8 Joueurs : 5 Villageois, 1 Etrangers, 1 Sbire, 1 Démon
- 9 Joueurs : 5 Villageois, 2 Etrangers, 1 Sbire, 1 Démon
- 10 Joueurs : 7 Villageois, 0 Etrangers, 2 Sbire, 1 Démon
- 11 Joueurs : 7 Villageois, 1 Etrangers, 2 Sbire, 1 Démon
- 12 Joueurs : 7 Villageois, 2 Etrangers, 2 Sbire, 1 Démon
- 13 Joueurs : 9 Villageois, 0 Etrangers, 3 Sbire, 1 Démon
- 14 Joueurs : 9 Villageois, 1 Etrangers, 3 Sbire, 1 Démon
- 15 Joueurs et plus : 9 Villageois, 2 Etrangers, 3 Sbire, 1 Démon
A plus de 15 joueurs, des rôles de 'Voyageur' sont ajoutés
59 changes: 53 additions & 6 deletions AI-helper/script.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,22 @@
def main():
reset_path()

# For all roles
parse_roles_to_json()

# For all files to format
for file_path in get_files_to_format():
dest_path = get_dest_path(file_path)

file_content = remove_unwanted_lines(file_path)

if '/roles/' in file_path:
# If it is a role, save its description
save_role_description(file_path)
# if '/roles/' in file_path:
# # If it is a role, save its description
# save_role_description(file_path)

# Remove the role's description
file_content = re.search(r'(?P<NotDesc>Exemple(.|\n)+)',
file_content).group('NotDesc').strip()
# # Remove the role's description
# file_content = re.search(r'(?P<NotDesc>Exemple(.|\n)+)',
# file_content).group('NotDesc').strip()

os.makedirs(os.path.dirname(dest_path), exist_ok=True)
with open(dest_path, 'w') as file:
Expand Down Expand Up @@ -52,19 +55,63 @@ def save_role_description(file_path):
file.write(role_description)


def parse_roles_to_json():
roles_json = []

for role_path in get_roles():
file_content = open(role_path, 'r').read()

# Get the real name of the role
role_name = re.search(r'title: (?P<Description>.+)', file_content)

# Matches the description content until the next '###'
description = re.search(
r'Description(\s|\n)+(?P<Description>(.|\n)+?(?=\n+###))', file_content)

# Exemples
examples = re.search(
r'Exemples(\s|\n)+(?P<Examples>(.|\n)+?(?=\n+###))', file_content)

# Mécaniques & conseils
# !!! Attention ! Certains fichiers précises 'Si vous êtes gentil|maléfique ' !!!
mecanics = re.search(r'Mécaniques et conseils(\s|\n)+(?P<Mecanics>(.|\n)+?(?=\n+###))', file_content)

# Bluffer
#TODO: Match from next line (avoir the role name)
bluff = re.search(r'Bluffer(\s|\n)+(?P<Bluff>(.|\n)+?(?=\n+###))', file_content)

# Combattre
#TODO: Match from next line (avoir the role name)
fight = re.search(r'Bluffer(\s|\n)+(?P<Bluff>(.|\n)+?(?=\n+###))', file_content)

# Comment conter
#TODO : Certains fichiers ont un '?' après le texte.


def get_roles():
path = "../docs/roles/*"

files = sorted(glob(path, recursive=True))
for file in files:
print(file)
yield file


def get_files_to_format():
path = "../docs/**/*.mdx"
ignored = ["legendaires.mdx",
"roles.mdx",
"index.mdx",
"/fiches/",
"/roles/",
"guide_laissez_un_faire.mdx",
"/modules/"]

files = glob(path, recursive=True)
for file in files:
if any(ign in file for ign in ignored):
continue # skip this file
print(file)
yield file


Expand Down

0 comments on commit c6b393e

Please sign in to comment.