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)

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 cookies policy.