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
( ☠ est ☠mais la balise code interprète directement mon caractère au lieu de l'afficher ce qui illustre bien le problème)
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()
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!
Partager