morse.py

Created by schraf

Created on July 18, 2019

1.27 KB

Explications en vidéo
Ce script permet de coder et de décoder des messages écrits en morse. Pratique pour envoyer un message à une personne à travers une pièce quand on n’a pas de téléphone sous la main ! L’idéal est que les 2 personnes aient une calculatrice Numworks pour pouvoir se répondre.

Envoyer un message

Il suffit de taper code("Votre texte ici") et d’orienter la calculatrice vers la personne. Le message tournera en boucle, attentez que la personne vous dise qu’elle l’a compris.

Décoder un message

Tapez dec(). Il y a plusieurs indications sur ce que vous voyez sur l’écran de l’autre personne :

  • 2 barres bleues consécutives à droite, c'est le début d'un message pour vous, tenez vous prêt !
  • 1 barre rouge au milieu durant 1 seconde = trait long en morse. Tapez "0" au clavier.
  • 1 barre jaune au milieu et brève = 1 point en morse. Tapez "." au clavier
  • 1 barre violette à droite = fin d'une lettre. Tapez sur EXE. Si la machine comprend, elle déchiffre la lettre.
  • Recommencez avec les autres lettres jusqu'à revoir les 2 barres bleues.
  • Appuyez sur la touche Maison (en jaune) pour sortir du programme


from time import *
from kandinsky import *

# Les constantes
MORSE = { 'A':'.-', 'B':'-...', 'C':'-.-.', 'D':'-..', 'E':'.', 
'F':'..-.', 'G':'--.', 'H':'....', 
'I':'..', 'J':'.---', 'K':'-.-', 
'L':'.-..', 'M':'--', 'N':'-.', 
'O':'---', 'P':'.--.', 'Q':'--.-', 
'R':'.-.', 'S':'...', 'T':'-', 
'U':'..-', 'V':'...-', 'W':'.--', 
'X':'-..-', 'Y':'-.--', 'Z':'--..', 
'1':'.----', '2':'..---', '3':'...--', 
'4':'....-', '5':'.....', '6':'-....', 
'7':'--...', '8':'---..', '9':'----.', 
'0':'-----','?':'..--..'} 
COUL = [[255,255,100], [255,0,0], [0,0,255], [220,100,255]]
TPS = [0.5,1,1,0.5]
POS = [0, 0, 280, 280]

def eff(): # Ecran noir
  fill_rect(0,0,320,240,[0]*3)
    
def flash(t):
  sleep(.5)
  rec(COUL[t], t)
  sleep(TPS[t])
  rec([0]*3, t)
    
def rec(c, pos):
  m = POS[pos]
  fill_rect(m,0,320,220,c)
    
def code(txt="BONJOUR"):
  eff()
  while True:
    flash(2)
    flash(2)
    for c in txt.upper():
     if c in MORSE:
       for p in MORSE[c]:
         flash(0 if p=='.' else 1)
       flash(3)
     
def dec():
  alpha = list(MORSE.keys())
  codes = list(MORSE.values())
  clair = ""
  while True:
    t=input()
    code = ""
    for c in t:
      code += '.' if c=='.' else "-"
    try: clair+=alpha[codes.index(code)]
    except: clair+="#"
    print(clair)