Pour lancer le jeu, faire go() tout seul ou go avec un paramètre pour augmenter ou diminuer la difficulté, par exemple go(2) pour avoir un jeu dont la solution est possible en 2 coups.
Le jeu d’origine pour la HP 41
from ion import * from random import choice from kandinsky import fill_rect,draw_string from time import sleep BTS = [42,43,44,36,37,38,30,31,32,5,48,45] GAGNE = list(range(16)) ROT='89DC9AEDABFE459856A967BA015412652376' COUL = [(250,20,0),(255,255,0),(20,140,225),(20,190,90)] POS='0011001122332233' def aff(j): for i in range(16): c = COUL[int(POS[j[i]])] x, y = 60 + 45 * (i % 4), 10 + 45 * (i // 4) fill_rect(x, y, 43, 43, c) draw_string(str(j[i]+1), x + 15, y + 15, (0,0,0), c) for i in range(9): x, y = 100 + 45 * (i % 3), 135 - 45 * (i // 3) draw_string(str(i+1), x , y, (0,0,0), (255,255,255)) for i in range(4): x, y = 270 + 10 * (i % 2), 90 + 10 * (i // 2) fill_rect(x, y, 8, 8, COUL[i]) def touche(): while True: for i in BTS: if keydown(i): sleep(.2) return BTS.index(i) def melange(j,d): l, s = list(j), "" for j in range(d): t = choice(range(9)) s = str(t+1) + s for k in range(3): l = joue(l,t) return [l,s] def joue(j,t): l = list(j) for i in range(4): a = int("0x"+ROT[4 * t + (i + 1) % 4]) d = int("0x"+ROT[4 * t + i]) l[a] = j[d] return l def fin(): draw_string("GAGNE",125,90,(255,255,255),(0,0,0)) def go(d=3): [jeu, sol] = melange(GAGNE,d) depart = list(jeu) while True: aff(jeu) if jeu == GAGNE: break t = touche() if t == 9: return if t == 10: jeu = depart elif t == 11: draw_string(sol, 10, 200) else: jeu = joue(jeu,t) fin() go()