Bonjour,
dans le cadre d'un projet de première année de prépa intégrée je dois créer un jeu en ligne de commande linux sans bibliothèque graphique ou autre.
mon projet avance plutôt bien mais j'ai été confronté un "bug" assez curieux qui concerne les chaines unicodes:

la fonction qui me pose problème est la suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
def affiche(grid, x=175, y=22):# affiche  le fond à partir d'une liste
    global scroll
    st = ''
    for a in range(y):
        for i in range(x):
            try:# si les coordonnées x,y existent
                if grid[a][i + scroll] == ' ':
                    st += '\033[0;107m '
                elif grid[a][i+scroll] == 'x':
                    st += '\033[31m☠'   
                elif grid[a][i+scroll] == '$':
                    st += "\033[33m💰"
                elif grid[a][i+scroll] == 'a':
                    st += "\033[30m🔫"
                elif grid[a][i+scroll] == '#':
                    st += "\033[30m#"
            except IndexError:# bout de liste: coordonnées inexistantes
                pass
        st += '\n'
    sys.stdout.write('\033[0m')
    sys.stdout.write(st)
    sys.stdout.flush()
( &#9760 est ☠mais la balise code interprète directement mon caractère au lieu de l'afficher ce qui illustre bien le problème)


le problème que j'ai eu est que n'étant pas sûr que copier coller des caractères directement dans on programme est une bonne idée (portabilité, voir plus haut...) j'ai donc essayé de remplacer

st += '\033[31m☠'
par
st += u'\033[31m\u2620'

mais a partir du moment ou je déclare une chaine comme Unicode (u"___") la fonction devient lente et mon programme clignote a vue d’œil
comme je l'ai dit la fonction marche telle qu'elle est mais je serais curieux de savoir pourquoi le programme est autant ralenti.
merci d'avance de vos réponses!