extract.py

Created by arthurjacquin

Created on June 30, 2020

1.17 KB

Transforme les fichiers .slc accessibles ici en cartouche pour le sokoban.


# 1. Télécharger les niveaux (http://www.sourcecode.se/sokoban/levels)
# 2. Placer ce script et les niveaux dans le même dossier
# 3. Exécuter le script et renseigner le nom du fichier à extraire
# 4. Copier-coller le contenu pour faire une cartouche

def howmany(ch):
    id = ch[0]
    number = 0
    for char in ch:
        if char == id: number += 1
        else: break
    return number

src, index = input('# '), 0
content = open(src, 'r')
for line in content:
    line = line.strip()
    if line.startswith('<Level'): array = []
    elif line.startswith('<L>'): array.append(line[3:-4])
    elif line == '</Level>':
        index, level = index + 1, ''
        WIDTH, HEIGTH = len(max(array, key=len)), len(array)
        if WIDTH > 50 or HEIGTH > 30: continue
        for li in array:
            while len(li) < WIDTH: li += ' '
            reduced = ''
            while li:
                number = howmany(li)
                reduced += str(number) + li[0] if int(number) > 1 else li[0]
                li = li[number:]
            level += '|' + reduced.replace(' ', '-')
        print(f"l{index} = '{level[1:]}'")
content.close()
input('count = len(globals())-1')