alrys.py

Created by andreanx

Created on September 12, 2021

25.3 KB

“La Geste d’Alrys”, concours de rentrée 2021 par TI-Planet et Planète Casio. Programme le trajet réalisant le meilleur score. Tu as 10 donjons à visiter. Chaque donjon pillé te donne le droit de t’arrêter dans un village pour reprendre des forces. Au bout de 9 donjons pillés, les villageois te remettront une barque te permettant d’atteindre l’île du 10ème donjon pour ton ultime combat. Envoie ton script modifié à info@tiplanet.org , même si tu n’as pas réussi à atteindre le 10ème donjon. Les images du jeu sont des versions modifiées du pack “Toen’s Medieval Strategy” par Andre Mari Coppola, sous licence CC BY 4.0


# partie du script à ne pas modifier pour participer
# voir plus bas à compter de la ligne 202

from kandinsky import set_pixel, fill_rect, draw_string
from ion import keydown
from math import pi, cos, sin, ceil

try:
  from kandinsky import draw_line
except:
  def draw_line(x1, y1, x2, y2, c):
    m, a1, b1, a2, b2 = 0, int(x1), int(y1), int(x2), int(y2)
    if (x2 - x1) ** 2 < (y2 - y1) ** 2:
      m, a1, a2, b1, b2 = 1, b1, b2, a1, a2
    if min(a1, a2) != a1: a1, b1, a2, b2 = a2, b2, a1, b1
    for a in range(a1, a2 + 1):
      b = int(b1 + (b2 - b1) * (a - a1) / ((a2 - a1) or 1))
      set_pixel((a, b)[m], (b, a)[m], c)

def fill_circle(x, y, r, c):
  for h in range(-int(r), int(r)+1):
    w = max(0, r*r-h*h)**.5
    fill_rect(int(x - w), int(y + h), int(2 * w), 1, c)

map=b"\xd9\x10\x48\x21\x50\x21\x38\x1a\x48\x14\x58\xa9\x01\x28\x71\x18\xb1\x01\x80\x02\x11\x60\x11\x38\x2a\x38\x14\x28\x15\x30\x91\x01\x78\x15\xe1\x01\x68\x44\x90\x01\x12\x30\x11\x30\x1a\x0b\x1a\x28\x14\x28\x35\x08\x1d\x41\x1d\x11\x1d\x09\x15\x30\x21\x20\x1d\x39\x1d\x29\x1d\xe0\x01\x0c\x88\x01\x12\x30\x19\x28\x1a\x1b\x1a\x18\x14\x38\xbd\x01\x10\x25\x20\x31\x20\x25\x19\x3d\x11\x1d\x70\x23\x10\x93\x01\x68\x14\x18\x11\x20\x2a\x0b\x2a\x10\x14\x30\x65\x28\x3d\x18\x1d\x30\x11\x38\x25\x09\x45\x09\x15\x50\xfb\x01\x50\x0c\x15\x14\x10\x19\x28\x52\x10\x0c\x48\x6d\x08\x45\x08\x25\x28\x21\x38\x75\x48\x93\x02\x30\x14\x25\x0c\x18\x11\x38\x3a\x68\x8d\x01\x1a\x3d\x28\x31\x38\x35\x14\x25\x40\xa3\x02\x28\x0c\x1d\x0c\x28\x19\x40\x22\x48\x11\x18\x5d\x52\x45\x18\x41\x38\x25\x14\x25\x40\xbb\x01\x19\x53\x28\x0c\x2d\x0c\x18\x21\x40\x12\x60\x2b\x10\x65\x1a\x3d\x38\x49\x38\x25\x14\x15\x48\x7b\x21\x23\x11\x5b\x20\x0c\x35\x0c\x20\x19\x40\x0a\x60\x3b\x18\x2d\x10\x65\x10\x0d\x20\x49\x48\x35\x58\x6b\x21\x23\x19\x53\x20\x0c\x35\x0c\x30\x21\x58\x0a\x18\x0e\x08\x43\x40\x2d\x19\x0d\x11\x0d\x09\x35\x28\x39\x40\x45\x58\x6b\x21\x13\x19\x53\x28\x0c\x2d\x0c\x30\x21\x58\x0a\x28\x4b\x48\x1d\x51\x25\x28\x49\x30\x55\x50\x73\x41\x5b\x28\x0c\x25\x0c\x38\x11\x88\x01\x53\x58\x0d\x49\x25\x38\x41\x38\x55\x50\x73\x31\x5b\x28\x0c\x25\x0c\x40\x11\x80\x01\x63\x48\x1d\x49\x25\x28\x41\x40\x75\x08\x09\x20\x6b\x31\x5b\x28\x0c\x2d\x14\x30\x19\x78\x5b\x50\x25\x49\x25\x28\x39\x38\x85\x01\x08\x11\x28\x73\x31\x43\x28\x0c\x3d\x0c\x30\x19\x30\x14\x28\x5b\x50\x35\x39\x35\x28\x31\x18\x0e\x18\x8d\x01\x19\x28\x63\x31\x4b\x20\x0c\x3d\x0c\x38\x19\x28\x24\x18\x63\x48\x3d\x41\x35\x18\x41\x40\x7d\x21\x28\x5b\x20\x11\x53\x18\x14\x35\x0c\x38\x21\x28\x14\x18\x6b\x40\x2d\x12\x0d\x49\x35\x10\x41\x48\x2d\x22\x25\x10\x29\x18\x5b\x19\x08\x11\x53\x20\x0c\x35\x0c\x38\x19\x30\x0c\x18\x7b\x38\x25\x12\x1d\x41\x35\x18\x31\x58\x2d\x22\x1d\x18\x31\x10\x53\x19\x08\x09\x63\x18\x0c\x35\x0c\x38\x11\x30\x0c\x18\x8b\x01\x30\x1d\x12\x25\x49\x2d\x18\x31\x60\x2d\x12\x25\x28\x29\x10\x43\x21\x10\x09\x5b\x18\x14\x2d\x14\x30\x11\x38\x0c\x10\x3b\x1c\x3b\x38\x0d\x1a\x1d\x51\x2d\x10\x41\x58\x2d\x0a\x2d\x30\x29\x10\x3b\x29\x08\x09\x5b\x20\x0c\x35\x0c\x28\x19\x10\x09\x20\x0c\x08\x4b\x1c\x2b\x30\x1d\x22\x1d\x49\x2d\x10\x41\x28\x14\x28\x55\x38\x29\x10\x3b\x09\x14\x09\x08\x11\x53\x28\x0c\x35\x0c\x20\x39\x20\x0c\x08\x43\x14\x33\x38\x15\x1a\x2d\x49\x25\x10\x39\x28\x1c\x20\x5d\x40\x29\x10\x33\x09\x0c\x11\x08\x11\x53\x28\x0c\x35\x0c\x18\x39\x20\x0c\x10\x43\x24\x1b\x40\x25\x0a\x3d\x39\x25\x18\x29\x30\x0c\x30\x5d\x40\x29\x10\x33\x21\x08\x19\x4b\x28\x0c\x35\x0c\x18\x31\x38\x83\x01\x38\x7d\x21\x2d\x18\x41\x20\x0c\x28\x5d\x40\x29\x10\x3b\x19\x0f\x11\x53\x28\x0c\x35\x0c\x10\x31\x50\x73\x30\x8d\x01\x19\x2d\x18\x31\x30\x0c\x28\x5d\x38\x29\x10\x43\x31\x4b\x28\x0c\x45\x0c\x08\x29\x30\x15\x10\x83\x01\x30\x8d\x01\x11\x2d\x18\x29\x30\x0c\x30\x5d\x38\x29\x10\x4b\x29\x43\x28\x0c\x4d\x0c\x08\x29\x14\x18\x25\x8b\x01\x38\x5d\x12\x25\x09\x2d\x18\x29\x30\x0c\x28\x35\x14\x25\x30\x29\x10\x5b\x19\x43\x30\x0c\x45\x0c\x18\x21\x1c\x10\x25\x43\x11\x3b\x40\x55\x0a\x2d\x09\x2d\x10\x29\x60\x35\x24\x1d\x30\x29\x10\x63\x11\x3b\x30\x0c\x25\x12\x25\x0c\x10\x21\x14\x20\x15\x2b\x20\x4b\x48\xad\x01\x18\x29\x50\x3d\x24\x1d\x28\x29\x10\x1b\x10\x43\x11\x33\x30\x0c\x65\x0c\x10\x19\x0c\x30\x2b\x30\x3b\x20\x1c\x30\x95\x01\x18\x21\x58\x3d\x24\x1d\x28\x29\x10\x1b\x10\x43\x11\x1b\x48\x0c\x35\x12\x25\x0c\x10\x19\x30\x2b\x38\x3b\x20\x14\x50\x7d\x10\x31\x48\x4d\x14\x25\x20\x29\x10\x23\x18\x3b\x09\x13\x60\x0c\x5d\x0c\x18\x11\x30\x1b\x58\x33\x20\x0c\x68\x65\x18\x29\x58\x6d\x28\x19\x10\x23\x28\x43\x60\x0c\x5d\x0c\x18\x19\x38\x0b\x60\x33\x18\x21\x70\x4d\x18\x31\x60\x5d\x30\x11\x10\x23\x30\x33\x58\x0c\x65\x0c\x20\x19\xa0\x01\x33\x08\x41\x58\x55\x18\x39\x58\x5d\x30\x11\x10\x23\x10\x14\x10\x33\x40\x0a\x0c\x5d\x0c\x20\x31\xa8\x01\x23\x10\x39\x58\x5d\x20\x31\x60\x55\x30\x09\x10\x23\x10\x24\x10\x3b\x30\x1a\x5d\x18\x39\x18\x1c\x50\x0f\x28\x1b\x10\x41\x40\x6d\x18\x31\x68\x4d\x50\x23\x18\x14\x18\x4b\x28\x1a\x5d\x20\x29\x20\x0c\x90\x01\x0b\x20\x41\x28\x7d\x20\x21\x30\x1a\x20\x4d\x28\x14\x20\x23\x10\x14\x0f\x14\x08\x5b\x20\x1a\x4d\x40\x11\x58\x12\x38\x12\x30\x49\x18\x3d\x22\x2d\x20\x21\x30\x12\x28\x45\x30\x0c\x28\x23\x10\x14\x08\x14\x10\x53\x30\x12\x3d\x38\x0a\x08\x19\x48\x12\x88\x01\x39\x08\x09\x08\x4d\x12\x35\x28\x11\x30\x12\x0c\x20\x45\x60\x23\x20\x0c\x08\x0c\x10\x5b\x18\x0c\x18\x12\x2d\x20\x1c\x10\x21\x48\x22\x70\x39\x20\x8d\x01\x20\x29\x30\x0c\x20\x3d\x38\x12\x20\x23\x18\x0d\x10\x0d\x10\x63\x28\x1a\x3d\x18\x0c\x18\x19\x48\x1a\x48\x14\x18\x41\x20\x55\x0f\x3d\x18\x39\x28\x0c\x18\x45\x10\x0c\x20\x12\x20\x23\x10\x12\x0d\x08\x0d\x18\x63\x18\x2a\x3d\x18\x0c\x08\x21\x58\x69\x08\x49\x18\x9d\x01\x10\x49\x28\x0c\x08\x45\x10\x14\x28\x12\x10\x23\x18\x0a\x20\x0a\x08\x73\x20\x22\x3d\x28\x0a\x99\x02\x18\x4d\x11\x4d\x08\x59\x20\x0c\x45\x18\x0c\x50\x23\x50\x7b\x20\x22\x3d\x20\x0a\x91\x02\x18\x4d\x21\x45\x08\x59\x20\x4d\x20\x0c\x28\x0c\x10\x23\x50\x83\x01\x28\x22\x35\x28\x89\x02\x18\x45\x39\x3d\x08\x51\x28\x35\x30\x0c\x48\x23\x28\x14\x08\x0c\x93\x01\x20\x2a\x35\x10\xb1\x01\x30\x31\x18\x3d\x41\x45\x10\x51\x20\x35\x38\x0c\x38\x23\x58\x33\x19\x3b\x30\x22\x35\x18\x79\x60\x21\x20\x2d\x0e\x49\x4d\x08\x61\x10\x35\x38\x0c\x40\x23\x20\x24\x08\x14\x33\x19\x3b\x20\x3a\x35\x18\x51\x38\x13\x28\x15\x11\x18\x3d\x61\x45\x10\x49\x1a\x3d\x38\x0c\x38\x23\x30\x14\x10\x14\x3b\x11\x43\x20\x3a\x2d\x10\x41\x78\x7d\x71\x3d\x10\x49\x0a\x0f\x08\x35\x50\x0c\x30\x23\x38\x12\x08\x4b\x11\x3b\x30\x32\x25\x10\x31\x78\x95\x01\x69\x3d\x10\x49\x1a\x2d\x28\x22\x40\x23\x38\x22\x4b\x11\x43\x38\x22\x25\x18\x21\x78\x95\x01\x79\x35\x10\x61\x3d\x70\x23\x50\x12\x43\x11\x4b\x14\x20\x0c\x08\x1a\x25\x18\x11\x80\x01\x9d\x01\x79\x35\x18\x39\x18\x35\x50\x0a\x28\x23\x28\x32\x0b\x08\x93\x01\x24\x18\x22\x25\x18\x11\x30\x33\x10\xb5\x01\x71\x35\x18\x39\x18\x35\x78\x23\x38\x1a\x20\x9b\x01\x0c\x20\x2a\x25\x10\x31\x08\x33\x08\xed\x01\x51\x35\x18\x39\x18\x35\x78\x23\x38\x0a\x0e\x0a\x20\x9b\x01\x28\x2a\x25\x10\x21\x18\x3b\xfd\x01\x29\x4d\x20\x31\x10\x35\x28\x2a\x28\x2b\x30\x12\x08\x12\x18\xa3\x01\x28\x2a\x25\x10\x11\x20\x13\x08\x0f\x08\x13\x8d\x01\x2a\x65\x11\x4d\x28\x21\x10\x35\x28\x3a\x18\x2b\x30\x1a\x08\x0a\x28\x9b\x01\x28\x2a\x25\x08\x21\x18\x13\x18\x13\x08\x8d\x01\x2a\x8d\x01\x1c\x15\x18\x31\x08\x35\x30\x12\x1b\x12\x10\x2b\x38\x12\x40\xa3\x01\x20\x22\x25\x18\x11\x20\x13\x10\x1b\x20\x6d\x3a\x7d\x2c\x0d\x18\x29\x10\x2d\x38\x12\x1b\x12\x08\x3b\x30\x0a\x48\xa3\x01\x20\x2a\x25\x10\x11\x12\x18\x13\x08\x13\x40\x55\x12\x1b\x1a\x7d\x1c\x15\x20\x21\x08\x25\x48\x3a\x3b\x08\x0b\x70\xa3\x01\x20\x2a\x25\x10\x21\x28\x0b\x08\x0b\x60\x45\x0a\x13\x1a\xad\x01\x18\x29\x1d\x60\x2a\x53\x20\x23\x08\x4b\x19\x6b\x08\x0e\x20\x22\x25\x10\x11\x68\x12\xb0\x01\x45\x22\x3d\x10\x31\x15\x38\x15\x40\x9b\x01\x08\x4b\x21\x63\x38\x1a\x1d\x18\x11\x28\x12\x28\x12\xc0\x01\x3d\x12\x0b\x12\x35\x10\x29\x08\x0d\x38\x25\x30\xa3\x01\x08\x43\x21\x73\x38\x1a\x15\x18\x11\x28\x1b\x18\x12\x40\x0a\x88\x01\x35\x1a\x0b\x0a\x35\x10\x41\x38\x15\x30\xab\x01\x08\x43\x19\x73\x40\x1a\x0d\x18\x19\x18\x4b\x40\x0a\x40\x1c\x40\x35\x1a\x3d\x10\x39\x78\x93\x01\x40\x33\x11\x6b\x50\x1a\x0d\x10\x19\x08\x73\x28\x0a\x38\x1c\x50\x6d\x20\x31\x80\x01\x73\x68\x33\x09\x6b\x48\x1a\x0d\x20\x11\x93\x01\x18\x0a\x38\x1c\x68\x3d\x88\x01\x1a\x38\x6b\x78\xa3\x01\x48\x1a\x0d\x20\x11\x9b\x02\x68\x1d\x88\x01\x2a\x28\x43\x48\x5a\x0e\x08\x7b\x11\x1b\x38\x22\x0d\x20\x11\x43\x19\xa3\x02\xa0\x01\x22\x28\x4b\x38\x6a\x10\x8b\x01\x09\x1b\x30\x22\x0d\x28\x11\x43\x09\x0c\x08\x0c\x11\xd3\x03\x08\x5b\x38\x32\x18\x22\x18\x93\x01\x09\x1b\x28\x1a\x0d\x10\x0f\x18\x11\x43\x29\xdb\x01\x19\xeb\x01\x08\x53\x38\x42\x10\x1a\x18\xbb\x01\x30\x22\x0d\x18\x19\xab\x02\x31\xeb\x01\x08\x4b\x40\x22\x08\x1a\x18\x12\x10\xcb\x01\x28\x22\x0d\x10\x21\x23\x58\xb3\x01\x19\x83\x02\x08\x43\x58\x2a\x28\x0a\x18\xc3\x01\x20\x22\x28\x21\x0b\x70\xc3\x03\x08\x3b\x18\x12\x50\x1a\x20\x0a\x20\xc3\x01\x20\x1a\x30\x19\x0b\x70\x9b\x01\x70\x13\x20\x8b\x01\x08\x4b\x60\x12\x20\x12\x28\xbb\x01\x20\x1a\x20\x31\x90\x01\x3b\xb8\x01\x0b\x0a\x60\x13\x10\x1b\x28\x1b\xa0\x01\x12\x18\x0a\x18\x43\x11\x6b\x30\x0b\x28\x29\xb0\x01\x13\x60\x12\xe8\x01\x0b\x30\x0b\x90\x01\x2a\x20\x0a\x10\x0b\x08\x33\x09\x0a\x09\x6b\x70\x21\xcd\x02\x14\xad\x01\xe8\x01\x1a\x30\x0a\x53\x11\x73\x30\x14\x11\x18\x29\x45\x0e\xd5\x01\x1c\x45\x14\x75\x60\x22\x78\x12\x40\xcb\x01\x30\x14\x28\x31\x35\x22\xad\x02\x24\x4d\x80\x01\x15\x58\x1a\x50\xcb\x01\x20\x1c\x28\x41\x35\x1a\x85\x01\x2c\x1d\x0c\x0d\x0c\x1d\x0c\x3d\x14\x45\x98\x01\x0f\x98\x01\x12\x28\xc3\x01\x18\x24\x18\x51\x35\x0a\xb5\x01\x14\x1d\x14\x0d\x0c\x3d\x14\x45\x50\x0e\xa0\x01\x1a\x08\x1c\x0b\x40\x53\x0f\x6b\x20\x1c\x08\x0c\x61\xe5\x01\x14\x25\x14\x15\x0c\x0d\x0c\x25\x0c\x35\x48\x3a\x28\x12\x30\x51\x20\x19\x10\x09\x60\x63\x28\x14\x18\x61\x6d\x13\x75\x14\x3d\x0c\x45\x0c\x0d\x58\x1a\x91\x02\x40\x31\x08\x6b\x20\x14\x20\x61\x5d\x13\xcd\x01\x80\x01\xe1\x02\x40\x21\x08\x6b\x20\x0c\x09\x28\xc1\x01\x08\x31\x20\x3d\xa8\x01\x89\x03\x38\x11\x08\x6b\x18\x14\x20\x21\x20\x21\x10\x29\x28\x11\x08\x41\x20\x15\xb0\x01\xa9\x03\x18\x21\x08\x53\x30\x14\x28\x19\x0f\x11\x68\x19\x20\x49\x88\x01\x81\x04\x12\x10\x11\x08\x3b\x50\x0e\x10\xb9\x09"

pal = ((119, 214, 76), (41, 147, 53), (79, 174, 62), (120, 213, 61), (54, 105, 38), (230, 231, 211), (184, 167, 128), (124, 103, 97), (71, 55, 40), (216, 196, 179), (185, 146, 107), (81, 73, 40), (103, 87, 80), (70, 87, 57), (52, 172, 66), (60, 200, 82), (53, 139, 57), (55, 55, 39), (96, 117, 185), (104, 136, 186), (70, 119, 128), (88, 71, 71), (170, 147, 140), (214, 215, 192), (154, 103, 90), (88, 70, 70), (170, 243, 118), (180, 145, 68), (244, 203, 48), (164, 110, 26), (245, 234, 140), (122, 77, 76))

sprites=[
  b"\xc0\x03\x5a\xc0\x07\x5a\x80\x08\x5a\xc0\x01\x5a\xc0\x05\x5a\xc0\x01\x5a\xc0\x05\x5a\xc0\x01\x5a\x40\x5a\xc0\x04\x5a\xc0\x01\x5a\x40\x5a\x80\x02\x5a\x80\x05\x5a\x80\x02\x5a\x80\x05\x5a\x80\x02\x5a\xc0\x07\x5a\x80\x0b\x5a\xc0\x07\x5a\x80\x08\x5a\xc0\x07\x5a\xc0\x03\x5a\xc0\x03\x5a\xc0\x03\x5a\xc0\x03\x5a\x80\x02\x5a\xc0\x01\x5a\xc0\x05\x5a\xc0\x01\x5a\xc0\x05\x5a\xc0\x01\x5a\xc0\x05\x5a\xc0\x01\x5a\xc0\x09\x5a\xc0\x07\x5a\xc0\x07\x5a\xc0\x07\x5a\xc0\x09\x5a\xc0\x07\x5a\xc0\x01\x5a\x80\x05\x5a\x80\x02\x5a\x80\x05\x5a\xc0\x02\x5a\xc0\x04\x5a\xc0\x02\x5a\xc0\x04\x5a\xc0\x02\x5a\xc0\x07\x5a\x80\x07",
  b"\x80\x15\x55\x56\x80\x07\x55\x56\xc0\x06\x55\x47\x97\x01\x80\x06\x55\x47\x97\x01\xc0\x05\x55\x47\x56\x97\x01\x56\x80\x05\x55\x47\x56\x97\x01\x56\x80\x03\x55\x56\x40\x87\x02\x56\x97\x01\x80\x03\x55\x56\x40\x87\x02\x56\x97\x01\xc0\x02\x47\x56\x97\x01\xc7\x01\xd5\x01\x97\x01\x80\x02\x47\x56\x97\x01\xc7\x01\xd5\x01\x97\x01\xc0\x01\x48\x87\x01\x97\x01\x48\x55\x47\x55\x47\x58\x95\x01\xc0\x01\x48\x87\x01\x97\x01\x48\x55\x47\x55\x47\x58\x95\x01\xc0\x01\xc7\x01\x56\x58\x57\x48\x55\x48\x55\x47\x58\x95\x01\x80\x01\xc7\x01\x56\x58\x57\x48\x55\x48\x55\x47\x58\x95\x01\x40\x48\x47\xd9\x01\x56\x58\x88\x01\x55\x58\x95\x01\x98\x01\x40\x48\x47\xd9\x01\x56\x58\x88\x01\x55\x58\x95\x01\x98\x01\x40\xc8\x01\x99\x01\xd8\x01\x88\x01\xd8\x01\x55\x58\x40\xc8\x01\x99\x01\xd8\x01\x88\x01\xd8\x01\x55\x58\x88\x02\x59\x98\x02\x88\x01\x55\xd8\x01\x55\x88\x02\x59\x98\x02\x88\x01\x55\xd8\x01\x55\x88\x02\x99\x01\x98\x02\x95\x02\x58\x55\x88\x02\x99\x01\x98\x02\x95\x02\x58\x55\xc8\x01\xd9\x01\xd8\x01\x59\x58\xd5\x02\xc8\x01\xd9\x01\xd8\x01\x59\x58\xd5\x02\x40\xc8\x01\x99\x03\xd8\x01\x95\x01\x80\x01\xc8\x01\x99\x03\xd8\x01\x95\x01\xc0\x01\x88\x01\x99\x02\x98\x01\x99\x01\x58\x55\x80\x02\x88\x01\x99\x02\x98\x01\x99\x01\x58\x55\xc0\x02\x88\x01\x99\x04\x80\x03\x88\x01\x99\x04\xc0\x01",
  b"\x80\x13\x88\x02\x80\x06\x88\x02\xc0\x04\xc8\x01\x92\x02\x88\x01\xc0\x03\xc8\x01\x92\x02\x88\x01\x80\x03\x48\xd2\x04\x48\xc0\x02\x48\xd2\x04\x48\xc0\x02\x48\x92\x05\x48\x80\x02\x48\x92\x05\x48\xc0\x02\x88\x01\x92\x04\x48\xc0\x02\x88\x01\x92\x04\x48\xc0\x03\x48\x53\x92\x03\x53\x48\x80\x03\x48\x53\x92\x03\x53\x48\x80\x03\x48\x53\x92\x03\x53\x48\x80\x03\x48\x53\x92\x03\x53\x48\x80\x02\x88\x01\x93\x01\x92\x03\x53\x48\x80\x02\x88\x01\x93\x01\x92\x03\x53\x48\xc0\x01\x48\xd3\x01\x92\x03\x93\x01\x48\xc0\x01\x48\xd3\x01\x92\x03\x93\x01\x48\x80\x01\x48\x93\x01\x92\x04\x53\x48\xc0\x01\x48\x93\x01\x92\x04\x53\x48\xc0\x01\x48\x93\x01\xd2\x03\x93\x01\x48\xc0\x01\x48\x93\x01\xd2\x03\x93\x01\x48\x80\x02\x48\xd3\x01\xd2\x01\xd3\x01\x48\xc0\x02\x48\xd3\x01\xd2\x01\xd3\x01\x48\x80\x03\x88\x01\xd3\x02\x88\x01\xc0\x03\x88\x01\xd3\x02\x88\x01\xc0\x04\xc8\x02\xc0\x05\xc8\x02\x80\x13",
  b"\x92\x02\x93\x01\x92\x03\x93\x01\x92\x03\x93\x01\x92\x03\x93\x01\x92\x02\x93\x03\x92\x01\x93\x03\x92\x01\x93\x03\x92\x01\x93\x25\x92\x01\x93\x03\x92\x01\x93\x03\x92\x01\x93\x03\x92\x01\x93\x02\x92\x03\x93\x01\x92\x03\x93\x01\x92\x03\x93\x01\x92\x25\x94\x01\x92\x03\x94\x01\x92\x03\x94\x01\x92\x03\x94\x01\x92\x02\x94\x03\x92\x01\x94\x03\x92\x01\x94\x03\x92\x01\x94\x35\x92\x01\x94\x03\x92\x01\x94\x03\x92\x01\x94\x03\x92\x01\x94\x02\x92\x03\x94\x01\xd2\x02\xd4\x01\x92\x03\x94\x01\xd2\x02\x54\x92\x10",
  b"\x80\x23\x41\xc2\x01\x80\x06\x41\xc2\x01\x80\x05\x42\x41\xc2\x01\x43\x82\x01\x80\x04\x42\x41\xc2\x01\x43\x82\x01\xc0\x03\x44\x81\x01\x42\x43\x42\xc3\x01\x42\x80\x03\x44\x81\x01\x42\x43\x42\xc3\x01\x42\xc0\x02\x44\x41\x44\x82\x02\x83\x01\x42\x43\x42\x80\x02\x44\x41\x44\x82\x02\x83\x01\x42\x43\x42\xc0\x01\x41\x44\x41\x44\x81\x01\x82\x01\xc3\x01\x42\x43\x42\x80\x01\x41\x44\x41\x44\x81\x01\x82\x01\xc3\x01\x42\x43\x42\x40\x41\x44\x41\xc4\x01\x41\x42\x43\x42\xc3\x01\xc2\x01\x41\x44\x41\xc4\x01\x41\x42\x43\x42\xc3\x01\xc2\x01\x44\x41\x44\x41\x84\x01\x81\x01\xc2\x01\x43\x82\x01\x43\x42\x44\x41\x44\x41\x84\x01\x81\x01\xc2\x01\x43\x82\x01\x43\x42\x84\x01\x41\xc4\x01\x81\x01\x42\x83\x01\xc2\x02\x84\x01\x41\xc4\x01\x81\x01\x42\x83\x01\xc2\x02\x40\xc4\x02\x81\x01\x42\x83\x02\x82\x01\x80\x01\xc4\x02\x81\x01\x42\x83\x02\x82\x01\x80\x01\x41\x84\x01\x41\xc4\x01\x41\x42\xc3\x01\xc2\x01\x40\x41\x84\x01\x41\xc4\x01\x41\x42\xc3\x01\xc2\x01\x40\x44\x41\x84\x01\x41\x84\x01\x81\x01\xc2\x01\x80\x02\x44\x41\x84\x01\x41\x84\x01\x81\x01\xc2\x01\x80\x03\x84\x01\x80\x01\xc1\x01\xc0\x01\x42\xc0\x02\x84\x01\x80\x01\xc1\x01\xc0\x01\x42\x80\x21",
  b"\xc0\x05\x4e\xc0\x07\x4e\xc0\x07\x8f\x01\x80\x07\x8f\x01\xc0\x03\x4f\xc0\x02\x50\xcf\x01\x80\x03\x4f\xc0\x02\x50\xcf\x01\x80\x03\x4e\x4f\xc0\x01\x50\x4e\x50\x4e\x4f\x50\xc0\x02\x4e\x4f\xc0\x01\x50\x4e\x50\x4e\x4f\x50\xc0\x02\xcf\x01\x40\x4d\x44\x90\x01\x4e\x50\x80\x03\xcf\x01\x40\x4d\x44\x90\x01\x4e\x50\xc0\x02\x50\x4e\x8f\x01\x44\x8e\x01\x84\x01\x90\x01\x4e\x80\x02\x50\x4e\x8f\x01\x44\x8e\x01\x84\x01\x90\x01\x4e\xc0\x01\x90\x02\x4e\x4f\x50\x44\x90\x01\xcf\x01\xc0\x01\x90\x02\x4e\x4f\x50\x44\x90\x01\xcf\x01\xc0\x01\x4d\x44\x50\x4e\x4f\x4d\x4b\x90\x01\x8e\x01\x4f\x90\x01\x80\x01\x4d\x44\x50\x4e\x4f\x4d\x4b\x90\x01\x8e\x01\x4f\x90\x01\xc0\x01\x50\x44\x50\x8e\x01\x51\x4b\x84\x01\x50\x44\x50\x80\x02\x50\x44\x50\x8e\x01\x51\x4b\x84\x01\x50\x44\x50\xc0\x01\x44\x90\x01\x8e\x02\x90\x01\x4e\x50\x8f\x01\xc0\x01\x44\x90\x01\x8e\x02\x90\x01\x4e\x50\x8f\x01\x80\x01\x4d\x44\x50\x8e\x01\xcf\x01\x90\x01\x4e\xcf\x01\x50\x40\x4d\x44\x50\x8e\x01\xcf\x01\x90\x01\x4e\xcf\x01\x50\x40\x44\x50\x4d\x44\x50\x4e\x50\x4d\x84\x02\x90\x01\x4d\x40\x44\x50\x4d\x44\x50\x4e\x50\x4d\x84\x02\x90\x01\x4d\x80\x01\x44\xd0\x01\x4e\x4f\x4e\x4b\x4d\x84\x01\x8d\x01\xc0\x01\x44\xd0\x01\x4e\x4f\x4e\x4b\x4d\x84\x01\x8d\x01\x80\x01\x4b\x84\x01\x50\x4e\x50\x8e\x01\x50\x51\x8d\x01\x4b\x50\x80\x01\x4b\x84\x01\x50\x4e\x50\x8e\x01\x50\x51\x8d\x01\x4b\x50\x80\x01\x51\x4b\x84\x02\x50\x4d\x4b\xc0\x03\x51\x4b\x84\x02\x50\x4d\x4b\x80\x04\x4d\x51\xcb\x01\x4d\x80\x05\x4d\x51\xcb\x01\x4d\x80\x04",
  b"\xc0\x03\x5b\x5c\x80\x07\x5b\x5c\xc0\x06\x5d\x5b\x9c\x01\x80\x06\x5d\x5b\x9c\x01\xc0\x05\x5d\xdb\x01\x5c\x5b\x80\x05\x5d\xdb\x01\x5c\x5b\x80\x03\x96\x01\x47\x5d\x5b\x5d\xdb\x01\x9e\x01\x56\x80\x02\x96\x01\x47\x5d\x5b\x5d\xdb\x01\x9e\x01\x56\xc0\x01\x56\xc7\x01\x9d\x01\x5b\xdd\x01\x5b\x9e\x01\x87\x01\x96\x01\xc7\x01\x9d\x01\x5b\xdd\x01\x5b\x9e\x01\x87\x01\x56\x47\x80\x02\x9d\x02\x9b\x01\x5c\x9e\x01\x48\x56\x47\x80\x02\x9d\x02\x9b\x01\x5c\x9e\x01\x48\x56\x80\x01\x5d\x9c\x01\xdf\x01\x9b\x01\x5d\x9c\x01\x9e\x01\x56\x80\x01\x5d\x9c\x01\xdf\x01\x9b\x01\x5d\x9c\x01\x9e\x01\x56\x40\x5d\x5b\x5c\x5e\x5c\x5f\x48\xdd\x01\x5b\x9e\x01\x5c\x80\x01\x5d\x5b\x5c\x5e\x5c\x5f\x48\xdd\x01\x5b\x9e\x01\x5c\x80\x01\xdb\x01\x5c\x5e\x5c\x88\x01\x58\x5b\x5d\x5c\x58\xc0\x01\xdb\x01\x5c\x5e\x5c\x88\x01\x58\x5b\x5d\x5c\x58\x80\x01\x5d\x9b\x01\x9c\x01\x9e\x01\x5c\x4d\xdf\x01\x58\x4a\x40\x4d\x5d\x9b\x01\x9c\x01\x9e\x01\x5c\x4d\xdf\x01\x58\x4a\x40\x4d\x9d\x01\x9b\x01\xdc\x01\x8d\x01\x58\x48\x58\x4a\x58\x40\x4d\x9d\x01\x9b\x01\xdc\x01\x8d\x01\x58\x48\x58\x4a\x58\x40\x4d\x40\x5f\x9d\x01\x9c\x01\x58\xcd\x01\x48\x98\x01\x80\x01\x47\x40\x5f\x9d\x01\x9c\x01\x58\xcd\x01\x48\x98\x01\x80\x01\x47\x4d\x58\x5f\xd8\x01\x46\xc0\x03\x47\x56\x4d\x58\x5f\xd8\x01\x46\xc0\x03\x47\x56\x4d\x5f\x58\x4a\x48\x86\x01\x80\x01\x5c\xc0\x01\x47\x56\x40\x4d\x5f\x58\x4a\x48\x86\x01\x80\x01\x5c\xc0\x01\x47\x56\x40\x8d\x01\x5f\x4a\x48\x46\x80\x01\x58\x40\x58\x40\x96\x01\x80\x01\x8d\x01\x5f\x4a\x48\x46\x80\x01\x58\x40\x58\x40\x96\x01\x80\x11",
  b"\x80\x13\x85\x01\x40\x45\x80\x06\x85\x01\x40\x45\xc0\x05\x46\x47\x46\x87\x01\x45\x80\x05\x46\x47\x46\x87\x01\x45\x80\x05\x45\x48\x49\x4a\x46\x47\x80\x05\x45\x48\x49\x4a\x46\x47\x80\x05\x46\xc9\x01\x4a\x45\x80\x05\x46\xc9\x01\x4a\x45\x80\x05\x47\x45\x47\x45\x47\x4a\x80\x05\x47\x45\x47\x45\x47\x4a\x80\x05\x4b\x47\x46\x4a\x46\x47\x80\x05\x4b\x47\x46\x4a\x46\x47\x80\x05\x4c\x8b\x01\x87\x01\x46\x80\x05\x4c\x8b\x01\x87\x01\x46\x80\x05\xc7\x01\x86\x01\x4a\x80\x05\xc7\x01\x86\x01\x4a\x80\x05\x47\x4c\x4b\x48\x4a\x46\x80\x05\x47\x4c\x4b\x48\x4a\x46\x80\x05\x4c\x47\x4b\x48\x46\x4a\x80\x05\x4c\x47\x4b\x48\x46\x4a\x80\x05\x47\x4c\x47\xc6\x01\x80\x05\x47\x4c\x47\xc6\x01\x80\x05\xc7\x01\x46\x4a\x46\x80\x05\xc7\x01\x46\x4a\x46\xc0\x03\xcd\x01\x4c\x87\x01\xc6\x01\xc0\x03\xcd\x01\x4c\x87\x01\xc6\x01\x80\x03\x8d\x02\x47\x4c\x4b\x48\x46\x4a\x80\x03\x8d\x02\x47\x4c\x4b\x48\x46\x4a\xc0\x03\x8d\x02\x47\x4b\x48\x46\x80\x04\x8d\x02\x47\x4b\x48\x46\x80\x03",
  b"\xc0\x02\x81\x03\x80\x05\x81\x03\xc0\x04\x81\x04\x80\x04\x81\x04\x80\x04\x41\x88\x03\x41\x80\x04\x41\x88\x03\x41\x80\x03\x5e\x40\x88\x04\x40\x5e\x80\x02\x5e\x40\x88\x04\x40\x5e\x80\x02\x9e\x01\x48\x5e\x43\x9e\x01\x43\x5e\x48\x9e\x01\x80\x02\x9e\x01\x48\x5e\x43\x9e\x01\x43\x5e\x48\x9e\x01\x80\x02\x9e\x01\x48\x5e\x48\x9e\x01\x48\x5e\x48\x9e\x01\x80\x02\x9e\x01\x48\x5e\x48\x9e\x01\x48\x5e\x48\x9e\x01\xc0\x02\x9e\x05\x48\xc0\x02\x9e\x05\x48\x80\x03\x41\x9e\x01\x88\x01\x9e\x01\x41\x88\x01\x80\x03\x41\x9e\x01\x88\x01\x9e\x01\x41\x88\x01\x80\x02\xc8\x02\xde\x01\xc1\x01\xc0\x02\xc8\x02\xde\x01\xc1\x01\x80\x02\x88\x01\x5d\x88\x02\xc1\x02\x80\x02\x88\x01\x5d\x88\x02\xc1\x02\x80\x02\x48\xdd\x01\x88\x01\x5d\x88\x01\x81\x01\x48\x80\x02\x48\xdd\x01\x88\x01\x5d\x88\x01\x81\x01\x48\x80\x02\x88\x01\x5d\xc8\x01\x5d\x41\xc8\x01\x41\x80\x02\x88\x01\x5d\xc8\x01\x5d\x41\xc8\x01\x41\x80\x02\x88\x01\x5d\xc8\x01\x5d\x88\x01\xc1\x01\x80\x02\x88\x01\x5d\xc8\x01\x5d\x88\x01\xc1\x01\x80\x02\x88\x03\x5d\xc1\x01\x48\xc0\x02\x88\x03\x5d\xc1\x01\x48\xc0\x03\x9d\x02\x80\x01\xc8\x01\xc0\x03\x9d\x02\x80\x01\xc8\x01\x80\x04\xc8\x01\x80\x01\xc8\x01\x80\x04\xc8\x01\x80\x01\xc8\x01\x80\x02"
]

def getmap(xr, yr, x=0, y=0, i=0, rle=map, w=146, nbits=3):
  xr, yr = int(xr), int(yr)
  xold, yold, iold = x, y, i
  maskval = (1 << nbits) - 1
  maskcnt = (0xFF >> nbits >> 1) << nbits
  while i<len(rle) and (y < yr or y == yr and x <= xr):
    xold, yold, iold = x, y, i
    c = (rle[i] & maskcnt) >> nbits
    if rle[i] & 128:
      i += 1
      c |= rle[i] << (7 - nbits)
    x += c
    y += x // w
    x %= w
    i += 1
  return rle[iold] & maskval, xold, yold, iold

def dess(rle,x0,y0, detour=0):
  i, x, y= 0, 0, 0
  couleur_fond = rle[0] & 31
  while i<len(rle):
    v = rle[i]
    mv = v & 31
    c = (v & 96) >> 5
    if v & 128:
      i += 1
      c |= rle[i] << 2
    while c:
      cw = min(c, 32 - x)
      if not(detour) or mv != couleur_fond:
        fill_rect(x0 + x, y0 + y, cw, 1, pal[mv])
      c -= cw
      x = (x + cw) % 32
      y += x == 0
    i += 1

def show(compass=False):
  x0 = int(state[0]) - 4
  y0 = int(state[1]) - 3
  xr, yr, ir = 0, 0, 0
  for dy in range(7):
    for dx in range(10):
      i, xr, yr, ir = getmap(dx + x0, dy + y0, xr, yr, ir)
      if i != screen_sprites[dy*10+dx]:
        dess(sprites[i], dx*32, dy*32)
        screen_sprites[dy*10+dx] = i
        if dx + x0 == int(state[0]) and dy + y0 == int(state[1]):
          dess(sprites[-1], dx*32, dy*32, 1)
  draw_string(" {}".format(len(state[7])), 0, 204, (255, 127, 0))
  draw_string(" {:03d}%+{}".format(int(state[4]), state[5]), 32, 204, (255, 0, 0))
  draw_string(" {}pts".format(int(state[3])), 128, 204, (0, 127, 0))
  if compass:
    r = 15
    x = r + 1
    fill_circle(x, x, r, (255, 255, 255))
    a = state[2] * pi / 180
    draw_line(x, x, x + int(r * cos(a)), x + int(r * sin(a)), (0, 0, 255))

def interpolx2y(x1, y1, x2, y2, x):
  return y1 + (y2 - y1) * (x - x1) / (x2 - x1)

def interpoly2x(x1, y1, x2, y2, y):
  return x1 + (x2 - x1) * (y - y1) / (y2 - y1)

def sign(x):
  return (x > 0) - (x < 0) 

def segments(x1, y1, x2, y2):
 dx = sign(x2 - x1)
 dy = sign(y2 - y1)
 lx, ly = [], []
 if dx:
   if dx>0:
     r = range(int(x1) + 1, int(x2) + (ceil(x2) > x2))
   else:
     r = range(int(x1) + ( ceil(x1) > x1) - 1, int(x2), -1)
   for x in r:
     lx.append((x, interpolx2y(x1, y1, x2, y2, x)))
 if dy:
   if dy>0:
     r = range(int(y1) + 1, int(y2) + (ceil(y2) > y2))
   else:
     r = range(int(y1) + ( ceil(y1) > y1) - 1, int(y2), -1)
   for y in r:
     ly.append((interpoly2x(x1, y1, x2, y2, y), y))
 l = [(x1, y1)]
 while len(lx) or len(ly):
   if not(len(ly)) or len(lx) and abs(lx[0][0] - l[len(l) - 1][0]) < abs(ly[0][0] - l[len(l) - 1][0]):
     l.append(lx[0])
     lx.pop(0)
   else:
     l.append(ly[0])
     ly.pop(0)
 l.append((x2, y2))
 return l

def peut_aller(id):
  return id != 1 and (id != 3 or state[6])

def dist(x, y):
  return ((x - state[0])**2 + (y - state[1])**2)**.5

def a_gagne():
  return len(state[7]) >= 10

def en_avant(l, refresh=True):
  state[3] -= .1
  a = state[2] * pi / 180
  destx = state[0] + l*cos(a)
  desty = state[1] + l*sin(a)
  l = segments(state[0], state[1], destx, desty)
  for k in range(1, len(l)):
    c, xr, yr, ir  = getmap(int(min(state[0],l[k][0])), int(min(state[1],l[k][1])))
    if not(peut_aller(c)) or not(peut_aller(getmap(l[k][0], l[k][1], xr, yr, ir)[0])): break
    d = dist(l[k][0], l[k][1]) * (.2 + ((c == 5) and .1 or (c == 4) and .2 or (c == 2) and .3))
    state[3] -= d # score
    state[4] -= d # life
    state[0:2] = l[k][0:2]
    if c==7 and not(xr in state[7]):
      if state[4] >= 100:
        state[4] = max(state[4] - 100, 0)
        state[3] += 100
        state[5] += 1
        state[7].append(xr)
    if c==6 and xr != state[8]:
      if not state[6] and len(state[7]) >= 9:
        state[6] = 1
      elif state[5]:
        state[4] = min(250, state[4] + 120)
        state[5] -= 1
      state[8] = xr
    if refresh: show()

def a_droite(a):
  state[2] += a

def aller_selon_loop(f):
  try:
    while not(keydown(5)) and f() and not(a_gagne()): pass
  except KeyboardInterrupt:
    return aller_selon_loop(f)  

def aller_selon(f):
  global state, screen_sprites
  screen_sprites = [255,] * (10 * 7)
  state = [47.5, 43.5, 0, 0, 250, 1, 0, [], 0]
  aller_selon_loop(f)
  state[3] += 1000 * a_gagne()
  return state[3]

def action_clavier():
  show(True)
  d, a = 0, 0
  while not(d) and not(a):
    if keydown(5): return 0
    d = keydown(1) - keydown(2)
    a = keydown(3) - keydown(0)
  if d: en_avant(d)
  if a: a_droite(a * 45)
  return 1

#=====================
# script librement modifiable a partir d'ici

# exemple de script de participation
# la forme est totalement libre, tant que les regles ci-apres sont respectees

# ne doit appeler que les seules fonctions de alryslib.py suivantes :
# avance(distance) # distance==1 pour 1 cote de case
# a_droite(angle) # en degres


# fonction d'actions utilisee pour le jeu
## sera appelee regulierement
## a chaque appel doit effectuer 1 des appels decrits ci-dessus
## puis retourner 1 pour poursuivre ou 0 pour abandonner
def mon_itineraire():
  if len(liste_deplacements):
    (en_avant, a_droite)[liste_deplacements[0]](liste_deplacements[1])
    liste_deplacements.pop(0)
    liste_deplacements.pop(0)
    return 1
  # donne la main au clavier si la liste a ete epuisee sans victoire
  ## [Haut] avance de 1
  ## [Bas] recule de 1
  ## [Gauche] tourne a gauche de 45 degres
  ## [Droite] tourne a droite de 45 degres
  ## [Esc] quitte
  return action_clavier()

# modifie+complete la liste de deplacements
# afin de realiser le meilleur score
# 0 = avance
# 1 = tourne a droite
liste_deplacements = [
  # va piller le donjon en face
  0, 2,   # avance de 2 unites
  # rapporte le tresor au village le plus proche
  # pour y reprendre des forces
  0, -6,  # recule de 6 unites
  1, 135, # tourne a droite de 135 degres
  0, 8,   # avance de 8 unites
  # pret a affronter le prochain donjon  
]
print(aller_selon(mon_itineraire))

#envoie ton script alrys.py complete a info@tiplanet.org

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our <a href="https://www.numworks.com/legal/cookies-policy/">cookies policy</a>.