14 1 — Création de la carte
Shadow15510 edited this page 2022-07-16 11:06:12 +02:00

Création de la carte

Principes généraux

Nous allons commencer par faire une carte. Une carte est un tuple qui contient, dans l'ordre :

  • le dessin de la carte, dans une r-docstring (r""" ... """)
  • des tuples de 5 éléments qui correspondent à des points de passage entre cette carte et une autre.

Le tuple de la carte est accompagné d'un tuple de listes qui correspond aux entités de la carte. Les différents tuples des différentes cartes devront ensuite être concaténés pour être transmis au moteur.

Points de passages

Pour bien saisir cette partie, il faut voir que vos cartes sont des tuples. Et que ces tuples sont eux-même stockés dans un grand tuple. Les cartes ont donc un indice : leur place dans ce grande tuple.

Une carte (un tuple) est toujours de la forme :

carte = (r"""
...
""",
[],
(x_depart, y_depart, carte_arrivee, x_arrivee, y_arrivee),
(...))

Les points de passages sont donc de la forme de ce tuple : (x_depart, y_depart, carte_arrivee, x_arrivee, y_arrivee). Les deux premier éléments correspondent aux coordonnées du point de passage dans la carte. Les trois autres éléments sont là pour expliquer où il faut envoyer le joueur. i.e. sur quelle carte, et ) quelles coordonnées.

Barre basse

La 7e ligne de la calculatrice contient le prompt. Cette ligne contient par défaut la carte tronquée mais peut-être customisée. Pour cela il faut créer une fonction qui prend en argument data et stat (notez qu'il s'agit de copie non modifiable par effet de bord) et qui devra renvoyer une chaîne de caractères de 15 caractère au maximum. Par exemple :

def ma_low_bar(data, stat):
    return "{} PV".format(stat[0])

Gestion de Tiled

Créer des cartes à la main, ça peut vite devenir pénible, c'est pourquoi, Asci est fourni avec un convertisseur pour transformer vos cartes Tiled en fichier Python.

Dépendances

Ce programme nécessite la librairie xmltodict pour fonctionner.

$ pip3 install xmltodict

Utilisation

Enregistrez votre carte au format tmx ou csv, puis :

$ python converter ma_carte.tmx

Un fichier .py sera créé avec la carte à l'intérieur.

Vous pouvez également demander au script de trouver les portes, il suffit de lui préciser le symbole utilisé pour les portes :

$ python converter ma_carte.tmx doors=<symboles>

Si vous avez plusieurs symboles dédiés, il suffit de les mettres les uns à la suite des autres Préciser les symboles liés aux portes complète le tuple de la carte avec la syntaxe appropriée, il vous suffira de préciser l'indice de la carte d'arrivée et les coordonnées.

Vous pouvez également demander d'encoder les entités, les symboles détectés sont alors traité selon la syntaxe appropriée, et la carte est nettoyée desdits symboles. La syntaxe est alors :

$ python converter ma_carte.tmx entities=<symboles>

Vous pouvez également demander les coordonnées de plusieurs symboles en les mettant les uns à la suites des autres.

Si vous avez un dossier avec plusieurs cartes au format Tiled à convertir d'un coup vous pouvez utiliser le script bash automap.sh. Ce script détecte automatiquement les fichiers .tmx et les convertit en un fichier python lisible par Asci. Les cartes au format python sont automatiquement placées dans un dossier dédié.

Exemples

Trois petits exemples :

La carte seule :

$ python converter ma_carte.tmx

La carte avec les portes :

$ python converter ma_carte.tmx doors=^

La carte avec les portes, les PnJ et les points d'intérêts :

$ python converter ma_carte.tmx doors=^ entities=*?