BARRAUX Arthur
2 years ago
2 changed files with 151 additions and 12 deletions
@ -0,0 +1,75 @@ |
|||||
|
import os |
||||
|
|
||||
|
|
||||
|
class Colors: |
||||
|
def __init__(self): |
||||
|
""" ANSI color codes """ |
||||
|
self.BLACK = "\033[0;30m" |
||||
|
self.RED = "\033[0;31m" |
||||
|
self.GREEN = "\033[0;32m" |
||||
|
self.BROWN = "\033[0;33m" |
||||
|
self.BLUE = "\033[0;34m" |
||||
|
self.PURPLE = "\033[0;35m" |
||||
|
self.CYAN = "\033[0;36m" |
||||
|
self.LIGHT_GRAY = "\033[0;37m" |
||||
|
self.DARK_GRAY = "\033[1;30m" |
||||
|
self.LIGHT_RED = "\033[1;31m" |
||||
|
self.LIGHT_GREEN = "\033[1;32m" |
||||
|
self.YELLOW = "\033[1;33m" |
||||
|
self.LIGHT_BLUE = "\033[1;34m" |
||||
|
self.LIGHT_PURPLE = "\033[1;35m" |
||||
|
self.LIGHT_CYAN = "\033[1;36m" |
||||
|
self.LIGHT_WHITE = "\033[1;37m" |
||||
|
self.BOLD = "\033[1m" |
||||
|
self.FAINT = "\033[2m" |
||||
|
self.ITALIC = "\033[3m" |
||||
|
self.UNDERLINE = "\033[4m" |
||||
|
self.END = "\033[0m" |
||||
|
|
||||
|
class Cli(Colors): |
||||
|
"""Classe gérant l'interface graphique""" |
||||
|
def __init__(self, **kwargs): |
||||
|
super().__init__() |
||||
|
self.width = os.get_terminal_size().columns |
||||
|
self.height = os.get_terminal_size().lines -1 |
||||
|
for key, value in kwargs.items(): |
||||
|
if key == 'width': |
||||
|
self.width = value |
||||
|
elif key == 'height': |
||||
|
self.height = value-1 |
||||
|
self.__set_dimensions() |
||||
|
|
||||
|
self.screen = [[' ' for i in range(self.width)] for j in range(self.height)] |
||||
|
|
||||
|
def __set_dimensions(self): |
||||
|
""" Défini les dimensions du terminal """ |
||||
|
os.system('resize -s {} {}'.format(self.height + 1, self.width)) |
||||
|
os.system('clear') |
||||
|
|
||||
|
def display(self): |
||||
|
"""affiche le contenu de self.screen""" |
||||
|
os.system('clear') |
||||
|
for line in self.screen: |
||||
|
print(''.join(line)) |
||||
|
self.screen = [[' ' for i in range(self.width)] for j in range(self.height)] |
||||
|
|
||||
|
def draw(self, content, x, y): |
||||
|
"""dessine aux coordonées""" |
||||
|
for i in range(len(str(content))): |
||||
|
try: |
||||
|
if content[i] != ' ': |
||||
|
self.screen[y][x+i] = content[i] |
||||
|
except(IndexError): |
||||
|
break |
||||
|
|
||||
|
def draw_life(self, percent, x, y): |
||||
|
"""dessine la barre de vie""" |
||||
|
length = 40 |
||||
|
part_to_draw = length * percent // 100 |
||||
|
if percent > 25: |
||||
|
self.draw('|{}{}|'.format(''.join(['█' for i in range(part_to_draw)]), ''.join([' ' for i in range(length - part_to_draw)])), x, y) |
||||
|
else: |
||||
|
self.draw('{}|{}{}|{}'.format(self.RED, ''.join(['█' for i in range(part_to_draw)]), ''.join([' ' for i in range(length - part_to_draw)]), self.END), x, y) |
||||
|
|
||||
|
|
||||
|
|
@ -1,17 +1,81 @@ |
|||||
|
import random |
||||
|
import cli |
||||
|
import time |
||||
|
|
||||
class Personnage: |
class Personnage: |
||||
def __init__(self, nom, cat): |
def __init__(self, nom): |
||||
self.nom = nom |
self.nom = nom |
||||
self.categories = { |
# self.categories = { |
||||
"guerrier" : ["sword", "potion"], |
# "guerrier" : ["sword", "potion"], |
||||
"magicien" : ["stick", "potion"], |
# "magicien" : ["stick", "potion"], |
||||
"thief" : ["dagger", "potion"], |
# "voleur" : ["dagger", "potion"], |
||||
"elfe" : ["bow", "potion"] |
# "elfe" : ["bow", "potion"] |
||||
} |
# } |
||||
self.pdv = 20 |
self.pdv = 5 |
||||
|
self.max_pdv = 20 |
||||
self.xp = 1 |
self.xp = 1 |
||||
self.cat = cat |
self.inv = ['potion'] |
||||
self.inv = self.categories[self.cat] |
self.shape = '' |
||||
|
|
||||
def jet_attaque(self): |
def jet_attaque(self): |
||||
pass |
return random.randint(20) + self.xp * 2 |
||||
|
|
||||
|
def display(self, x, y): |
||||
|
cuted_shape = self.shape.split('\n') |
||||
|
for i in range(len(cuted_shape)): |
||||
|
gui.draw(cuted_shape[i], x, y + i) |
||||
|
|
||||
|
class Guerrier(Personnage): |
||||
|
|
||||
|
def __init__(self, nom): |
||||
|
super().__init__(nom) |
||||
|
|
||||
|
self.weapon = "épée" |
||||
|
self.inv.append(self.weapon) |
||||
|
self.shape = """⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡤⠤⢶⣒⠢⢤⣤⡀⠀⠀⠀⠀⠀⠀⠀⣴⠛⡆\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡟⠁⠀⠀⢰⠛⠛⢶⣤⠟⠀⠀⠀⠀⠀⠀⢸⡏⠀⢹\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⣀⣠⣞⣀⡔⠉⠀⠀⠀⠀⠀⠀⠀⠀⠸⣇⠀⡸\n⠀⠀⠀⠀⠀⢀⣀⣠⣤⣇⣴⢊⡵⠶⣵⣲⢧⣀⡀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣶\n⠀⠀⠀⠀⡠⠊⠉⠉⠑⢌⠻⡏⠀⡀⠈⠁⢀⡏⠙⢦⡀⠀⠀⠀⠀⠀⠈⣿⠉⡇\n⠀⠀⢠⡖⢅⠀⠀⠀⠀⡸⠀⡇⠀⠈⢹⢸⠁⣏⢢⣸⢷⠀⠀⠀⠀⠀⠀⣿⠀⡇\n⠀⠀⡾⠳⣤⣙⠲⢶⡴⠃⣾⠋⠲⢦⣼⣿⡴⠃⢧⣷⣧⢗⡶⠲⢦⣤⠶⠻⡶⡷\n⠀⢐⡶⢂⠀⠉⠙⢢⢄⡰⠁⠀⠀⠀⢸⣇⠀⠀⣜⣁⠁⡏⠀⠀⠀⠘⢴⣶⠤⢟\n⠀⡟⠐⣾⢄⡀⢀⢎⡀⡏⠓⠦⠒⣉⠡⠌⢉⠏⠁⠙⠦⣱⡀⢀⣠⠜⢼⣷⠭⡝\n⢀⣿⡿⠷⢦⣼⡏⢠⡿⣍⣛⣫⣭⣤⣤⣤⡾⡄⠀⠀⠀⠀⠈⠉⠀⠀⠀⣿⠉⡇\n⢇⠀⠀⠀⠀⢸⠃⢨⣏⣀⠀⢈⠑⢄⣠⣾⠳⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⠀⡇\n⠀⣷⠀⠀⠀⠣⡀⣨⠋⠀⠻⣮⢦⠀⢹⢯⠀⢱⡀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⡇\n⠀⡇⠀⢀⠈⣞⡿⣇⡴⠶⣄⡼⢻⣠⣟⢈⣳⠋⢹⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⡇\n⠀⠻⢿⣷⣑⣌⡿⡸⣀⢀⣿⡇⠀⣀⠼⣽⢇⣀⠎⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⡇\n⠀⠀⠀⠀⠀⠀⠀⢧⠈⠋⣼⠇⠀⣳⣸⠃⡼⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⡇\n⠀⠀⠀⠀⠀⠀⠀⢏⡤⠤⣽⠇⠀⡿⣿⣻⣷⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⣿⠀⡇\n⠀⠀⠀⠀⠀⠀⢰⡟⠛⣽⢿⡇⠀⢱⣾⣿⣷⣷⣿⣿⡄⠀⠀⠀⠀⠀⠀⣿⣀⡇\n⠀⠀⠀⠀⠀⠀⠘⠿⣿⣭⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀""" |
||||
|
|
||||
|
|
||||
|
class Voleur(Personnage): |
||||
|
|
||||
|
def __init__(self, nom): |
||||
|
super().__init__(nom) |
||||
|
|
||||
|
self.weapon = "dague" |
||||
|
self.inv.append(self.weapon) |
||||
|
self.shape = """⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⣀⣠⣤⠭⢶⡄⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠟⢉⣕⣒⣒⣪⢹⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢤⣣⠥⢔⡪⠤⣻⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⡈⢎⠒⠁⠈⢒⠎⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⢀⠔⠒⠉⠉⠀⠀⣈⢱⡣⢄⣠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠀⡜⢀⠏⠈⡆⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⡜⠊⢁⠗⠊⠁⢠⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠑⠢⣀⡠⡞⠤⠒⠁⠀⠀⢠⠣⡀⠱⡀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⡸⠑⠢⠤⣀⣀⣀⠎⠀⠑⢄⢈⠦⣀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠘⢄⠀⠀⠀⠹⣐⡤⢭⣢⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⡸⠉⠉⠢⡀⠀⠑⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⡎⠀⢰⠁⠀⠀⠀⠈⢢⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⢰⠁⠀⡜⠀⠀⠀⠀⠀⢸⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⢸⠀⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⡸⡄⣀⡇⠀⠀⠀⠀⠀⡸⠒⠲⠃⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠙⣎⢹⣁⠀⠀⠀⠀⠀⠙⣆⢸⣀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠈⠶⠿⠀⠀⠀⠀⠀⠀⠈⠶⠿⠀""" |
||||
|
|
||||
|
|
||||
|
class Magicien(Personnage): |
||||
|
|
||||
|
def __init__(self, nom): |
||||
|
super().__init__(nom) |
||||
|
|
||||
|
self.weapon = "bâton" |
||||
|
self.inv.append(self.weapon) |
||||
|
self.shape = """⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣤⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⣤⠀⢣⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡸⠀⠀⠉⡏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⢀⡸⠷⠶⠶⣀⠁⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⢀⠔⠶⠾⠷⠶⠶⠖⣁⠀⡅⠀⠀⠀⠀⠀⢀⡰⠶⢦⠲⣀\n⠀⠀⠀⠀⠀⠘⣤⠀⣤⡤⠀⣤⠀⠀⠒⣧⡄⠀⠀⠀⠀⡜⠃⠐⠂⠀⣿\n⠀⠀⠀⠀⠀⠀⠀⠛⡿⡆⠀⢸⠛⣤⡄⠀⢸⡇⠀⠀⠀⡇⢠⡜⠛⠛⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⢇⣀⣀⣀⣀⠤⡛⠛⠃⠀⣀⠤⣛⠜⠃⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⣀⢾⡏⠉⢉⠿⠀⠁⢆⣀⠰⣉⠶⠉⠀⠀⠀⠀⠀⠀\n⣶⠶⠶⡢⠶⠶⠦⠉⢸⡇⠀⠸⠀⠀⠀⡸⢏⡱⠉⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠂⡆⠀⠀⠀⠀⠀⢸⠇⠀⢸⣤⠒⠂⡔⢢⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⡇⠀⢠⠘⠛⣿⢠⡃⠀⢠⠛⣤⡄⠃⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠇⠠⠜⠀⠀⣿⠄⠠⠜⠢⣟⠀⠀⢘⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠈⠁⠀⠀⠀⣿⢎⣱⣎⣁⣿⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⢀⠶⣉⣎⣹⣏⣉⣿⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⢠⡔⣨⠒⠉⢹⠟⠋⠉⣿⠀⠀⠈⠑⢢⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠘⠛⠀⠛⠛⠋⠚⠛⠛⠛⠛⠛⠛⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀""" |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
class Elfe(Personnage): |
||||
|
|
||||
|
def __init__(self, nom): |
||||
|
super().__init__(nom) |
||||
|
|
||||
|
self.weapon = "arc" |
||||
|
self.inv.append(self.weapon) |
||||
|
self.shape = """⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠢⡀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⠀⠀⠙⣀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⢀⡀⢀⠀⠀⠀⠀⠀⠌⠀⠀⠀⠀⠐⡥⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⡠⢠⠁⢀⢀⢃⡀⠀⠀⠌⠀⠀⠀⠀⠀⠀⠐⡡⠀⠀⠀⠀\n⠀⡀⠄⠒⠈⠀⢠⠐⢫⠙⠼⠃⠀⡜⠀⠀⠀⠀⠀⠀⠀⠀⢁⢃⠀⠀⠀\n⡸⠮⡀⠄⣠⠀⠤⢐⡙⢵⢚⣵⣜⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠘⠀⠀⠀\n⠀⠀⠀⢈⡠⠐⢈⡡⢅⡤⠚⠸⣄⣍⣀⣐⣶⣶⣶⣶⡶⠤⡎⡕⣷⣀⠤\n⠀⠀⠀⠧⠀⠀⠨⠥⠌⠒⠮⠹⢸⠘⡀⠀⠀⠀⠀⠀⠀⠀⠈⡏⠃⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠉⠳⡇⠀⠀⠀⠀⠀⠀⠀⢀⢰⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣃⣰⣶⡊⢄⠀⠀⠀⠀⠀⠀⠘⠆⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠜⠀⢀⣤⣈⠄⠢⡀⠀⠀⠀⢀⡛⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡟⣹⡿⣿⡋⠀⠀⠐⢄⠀⠀⡜⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⣌⡺⠟⠀⡇⡄⠀⠀⠀⠈⠢⠜⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⠏⠀⠀⠇⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⠀⣰⡿⠃⠀⠀⢠⣰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⠀⠀⣰⡟⠁⠀⠀⠀⢸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⠀⠀⠀⢀⡾⠏⠀⠀⠀⠀⠠⣾⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n⠀⡀⠀⡐⠉⡼⠀⢀⠀⠀⠀⠰⣋⢒⡤⢰⡀⡀""" |
||||
|
|
||||
|
|
||||
|
gui = cli.Cli(width=120, height=36) |
||||
|
|
||||
|
guerrier = Guerrier('arthur') |
||||
|
|
||||
|
for i in range(60): |
||||
|
gui.draw(guerrier.nom, 53, 31) |
||||
|
gui.draw_life(round(guerrier.pdv / guerrier.max_pdv * 100), 30, 30) |
||||
|
Elfe('Legolas').display(110-i*2, 10) |
||||
|
|
||||
|
gui.display() |
||||
|
|
||||
|
time.sleep(0.1) |
Loading…
Reference in new issue