repl.it
Python

No description

fork
loading
Files
  • main.py
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# On importe la fonction "wrap" du module textwrap pour faire des sauts de ligne
# automatiques
from textwrap import wrap


# Afficher une bulle.
# Le ': str' après le paramètre 'message' donne la valeur attendue (ici, une
# string). C'est pas obligé du tout, mais ça aide à faire moins d'erreurs
#
# message:  Le message à afficher
# wrapping: Nb de caractères max au bout desquels sauter une ligne
#           Si wrapping == 0, pas de sauts de ligne
def show_bubble(message: str, wrapping = 0):
  ### Initialisation
  width = 0  # Largeur maximale du texte dans la bulle
  lines = [] # Lignes de texte

  # Si {wrapping} == 0, pas de saut de ligne (tout sur une seule ligne)
  if wrapping == 0:
    lines = [ message ]
    width = len(message)
  # Sauts de ligne tous les {wrapping} caractères
  else:
    lines = wrap(message, wrapping)
    width = wrapping
  
  # Largeur des bordures supérieures et inferieures, sans les slashs
  # Le 2 correspond aux espaces sur les côtés du texte
  borderWidth = width + 2
  # Si la largeur est >= 5, on ajoutera une "queue" à la bulle
  bubbleTail = borderWidth >= 5


  ### Affichage
  # Première ligne (bordure du haut)
  print('/' + (borderWidth * '‾') + '\\')

  # Lignes de texte
  for line in lines:
    # La méthode 'center' va rajouter des espaces à gauche et à droite pour centrer
    # la ligne et faire en sorte qu'elle fasse {width} caractères de long
    # Ex: 'Hello'.center(9) == '  Hello  '
    print('| ' + line.center(width) + ' |')
  
  # Dernière ligne
  print('\\' + (borderWidth * '_') + '/')

  # Queue si elle est activée
  if bubbleTail:
    print('   U')
    print('  O')
    print(' o')
    print('°')


### On exécute la fonction (n'hésitez pas à jouer avec les paramètres)

show_bubble("Hello World ! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 30)
Fetching token
?