diff --git a/asci.py b/asci.py index 8caea0b..14cd5bc 100644 --- a/asci.py +++ b/asci.py @@ -38,16 +38,16 @@ class Asci: def _cell_test(self, direction): if direction == 1: if self.data[2] - 1 < 0: return -1 - else: cell = self.screen.get_cell(self.data[2] - 10, self.data[3] - 3, self.data[2] - 1, self.data[3]) + else: cell = self.screen.get_cell(self.data[2: 4], self.data[2] - 1, self.data[3]) if direction == 3: if self.data[2] + 1 >= self.map_width: return -1 - else: cell = self.screen.get_cell(self.data[2] - 10, self.data[3] - 3, self.data[2] + 1, self.data[3]) + else: cell = self.screen.get_cell(self.data[2: 4], self.data[2] + 1, self.data[3]) if direction == 5: if self.data[3] - 1 < 0: return -1 - else: cell = self.screen.get_cell(self.data[2] - 10, self.data[3] - 3, self.data[2], self.data[3] - 1) + else: cell = self.screen.get_cell(self.data[2: 4], self.data[2], self.data[3] - 1) if direction == 2: if self.data[3] + 1 >= self.map_height: return -1 - else: cell = self.screen.get_cell(self.data[2] - 10, self.data[3] - 3, self.data[2], self.data[3] + 1) + else: cell = self.screen.get_cell(self.data[2: 4], self.data[2], self.data[3] + 1) print(f"'{cell}'") cell_patterns = self._legend @@ -113,7 +113,7 @@ class Asci: data_copy = [self.data[0], self.data[1], x, y, self.data[4]] # Get the event - event = self._game_events_mapping[cell_content](data_copy, self.stat, self.visible_entities, self._get_entity_id(x, y)) + event = self._game_events_mapping[cell_content](data_copy, self.stat, self.current_map.entities, self._get_entity_id(x, y)) if type(event) == tuple: quest, event = event else: @@ -259,9 +259,11 @@ class Screen: def set_cell(self, x_offset, y_offset, x, y, value): self._on_screen[y - y_offset][x - x_offset] = value - def get_cell(self, x_offset, y_offset, x, y): - if 0 <= x - x_offset < self.screen_width and 0 <= y - y_offset <= self.screen_height: - return self._on_screen[y - y_offset][x - x_offset] + def get_cell(self, offsets, x, y): + x = x - (offsets[0] - 10) + y = y - (offsets[1] - 3) + if 0 <= x < self.screen_width and 0 <= y <= self.screen_height: + return self._on_screen[y][x] else: return " " class Event: @@ -365,15 +367,15 @@ def stand_by(entity, data, stat, screen, walkable): pass def follow(entity, data, stat, screen, walkable): - if data[4] == 1 and screen.get_cell(data[2] - 10, data[3] - 3, data[2] + 1, data[3]) in walkable: entity.pos_x, entity.pos_y = data[2] + 1, data[3] - elif data[4] == 2 and screen.get_cell(data[2] - 10, data[3] - 3, data[2], data[3] - 1) in walkable: entity.pos_x, entity.pos_y = data[2], data[3] - 1 - elif data[4] == 3 and screen.get_cell(data[2] - 10, data[3] - 3, data[2] - 1, data[3]) in walkable: entity.pos_x, entity.pos_y = data[2] - 1, data[3] - elif data[4] == 5 and screen.get_cell(data[2] - 10, data[3] - 3, data[2], data[3] + 1) in walkable: entity.pos_x, entity.pos_y = data[2], data[3] + 1 + if data[4] == 1 and screen.get_cell(data[2: 4], data[2] + 1, data[3]) in walkable: entity.pos_x, entity.pos_y = data[2] + 1, data[3] + elif data[4] == 2 and screen.get_cell(data[2: 4], data[2], data[3] - 1) in walkable: entity.pos_x, entity.pos_y = data[2], data[3] - 1 + elif data[4] == 3 and screen.get_cell(data[2: 4], data[2] - 1, data[3]) in walkable: entity.pos_x, entity.pos_y = data[2] - 1, data[3] + elif data[4] == 5 and screen.get_cell(data[2: 4], data[2], data[3] + 1) in walkable: entity.pos_x, entity.pos_y = data[2], data[3] + 1 def walk(entity, data, stat, screen, walkable): frame = (entity.args[0] + 1) % len(entity.args[1]) new_x, new_y = entity.args[1][frame] print(new_x, new_y) - if screen.get_cell(data[2] - 10, data[3] - 3, new_x, new_y) in walkable: + if screen.get_cell(data[2: 4], new_x, new_y) in walkable: entity.pos_x, entity.pos_y = new_x, new_y entity.args[0] = frame diff --git a/samples/sample_1.py b/samples/sample_1.py index d7d2655..30beed7 100644 --- a/samples/sample_1.py +++ b/samples/sample_1.py @@ -1,10 +1,10 @@ -from asci_v2 import * +from asci import * -monde = (r""" +maison = (r""" _ ### /o\__ ##### -|_ <>\ ### -|^|__| /_\ +| <>\ ### +|____| /_\ @@ -13,24 +13,10 @@ monde = (r""" # Entités [ ("sdf", "*", 2, 5, "stand by") -], -# Portes -(1, 3, 1, 5, 7)) +]) -maison = (r""" -+--+--+--------+--+--+ -| | | | | | -| + + + + | -| | -| + + + + | -+--/ \--------/ \--+ -| | -+---|^|--------------+""", -[], -(5, 7, 0, 1, 3)) - -carte_monde = (monde, maison) +carte_monde = (maison,) @@ -71,4 +57,4 @@ touche = {6: affichage_stat} def mon_jeu(): rpg_python = Asci(carte_monde, evenements, touche) - rpg_python.mainloop(7, stat=[100, 5], data=[{"main": 0}, 0, 10, 3]) \ No newline at end of file + rpg_python.mainloop(7, stat=[100, 5], data=[{"main": 0}, 0, 10, 3]) diff --git a/samples/sample_2.py b/samples/sample_2.py index 71ff75e..d016af0 100644 --- a/samples/sample_2.py +++ b/samples/sample_2.py @@ -84,4 +84,4 @@ touche = {8: affichage_statistique} def mon_jeu(): rpg_python = Asci(cartes, evenements, touche) - rpg_python.mainloop(13, [100]) \ No newline at end of file + rpg_python.mainloop(11, [100], [{"main": 0}, 0, 10, 3]) \ No newline at end of file diff --git a/samples/sample_3.py b/samples/sample_3.py index e171dd5..84f4a5e 100644 --- a/samples/sample_3.py +++ b/samples/sample_3.py @@ -67,16 +67,6 @@ def pnj(data, stat, entites, identifiant): 4: [1, "Merci, tu as rendu un grand service a mon ami !"] } - elif identifiant == "bandit": - # Si le bandit vient d'être tué - if xp == 3: return [1, "Vous avez reussi la quete !"] - - # Si le bandit est encore vivant - elif xp < 3: return [0, "Qu'est-ce que tu regardes toi ? Casses-toi !"] - - # Si le bandit est déjà mort - else: return [0, "Vous regardez le cadavre froid du bandit."] - return [0, "Hmm ?"]