telecran.py

Created by schraf

Created on November 02, 2018

695 Bytes

Une version simple du célèbre télécran.

Utilisation

Tapez >> tel(), un point apparaît alors au milieu de l’écran.
Tapez sur les touches 2, 4, 6 ou 8 pour vous déplacer vers le bas, à gauche, en haut ou à droite. De même avec 1, 3, 7 et 9 pour partir en diagonal. Validez ensuite par EXE (tout cela sans voir ce que vous tapez…)
Vous pouvez bien entendu taper des séries comme 2486 pour obtenir un carré ou 12369874 pour un pseudo cercle.
Pour effacer appuyez sur la touche 0 suivi d’un chemin (par exemple 0999) et la touche . pour abaisser à nouveau le crayon.
Exemple de 2 triangles côte à côte : 4493066.9344

2 traits vers la gauche (44), haut-droit (9), bas-droit (3), on lève le crayon (0), 2 pas vers la droite (66), on repose le crayon (.) et on dessine l’autre triangle (9344).
Dès le lancement du programme vous pouvez déjà taper un chemin, par exemple >> tel("7931")
Si vous êtes en manque d’inspiration, tapez >> tel(alea)

Réalisations un peu plus complexes



Améliorations possibles

  • Les traits ont une longueur de 5 pixels ce qui peut être embêtant pour faire des dessins plus précis
  • Dans cette version, si on passe 2 fois au même endroit la couleur reste noire, on peut imaginer faire des traits en gris (couleur = 31727 (moitié de 65535)) et lorsque l’on repasse sur du gris le pixel devient alors noir (couleur = 0)


from kandinsky import *
from random import *

alea="".join(map(lambda x:choice("0.12346789"),range(1000)))

tou = {"8":[0,-1],"2":[0,1],"4":[-1,0],"6":[1,0], \
"7":[-1,-1],"9":[1,-1],"1":[-1,1],"3":[1,1]}

def trait(x,y,u,v,c):
  for i in range(5):
    set_pixel(x+i*u,y+i*v,c)
  set_pixel(x+5*u,y+5*v,0)

def tel(d=""):
  x,y=160,120
  set_pixel(x,y,0)
  coul=0
  while True:
    if d=="":
      c=input()
    else:
      c=d
      d=""
    if c=="": return True
    for v in c:
      a,b=0,0
      if v=="0": coul=65535
      elif v==".": coul=0
      elif v in tou.keys(): a,b = tou[v]
      trait(x,y,a,b,coul)
      x=min(320,max(0,x+5*a))
      y=min(240,max(0,y+5*b))