Compare commits

..

No commits in common. "a8e0d374ac2812294ccc90784aceae11b3474dd5" and "0fb38d9fd75d36f7fd58804f1f19a6dbd38cd75f" have entirely different histories.

1 changed files with 29 additions and 45 deletions

74
asci.py
View File

@ -1,6 +1,4 @@
# Asci (1.9.0)
from math import floor, ceil
# Asci (1.8.2)
class Asci:
def __init__(self, maps, entities, events_mapping, keys_mapping, behaviors=None, screen_width=21, screen_height=7):
@ -184,7 +182,7 @@ class Asci:
data_copy = self.data[:]
for entity in self.current_map.entities.values():
self._behaviors[entity.behavior](entity, data_copy, self.stat, self.screen, walkable)
if entity.map_id == self.data[1] and (0 <= entity.pos_x - self.data[2] + self.screen.pos_player[0] < self.screen.screen_width) and (0 <= entity.pos_y - self.data[3] + self.screen.pos_player[1] < self.screen.screen_height):
if entity.map_id == self.data[1] and (0 <= entity.pos_x - self.data[2] + 10 < self.screen.screen_width) and (0 <= entity.pos_y - self.data[3] + 3 < self.screen.screen_height):
self.screen.set_cell(entity.pos_x, entity.pos_y, entity.symbol)
self.screen.set_cell(self.data[2], self.data[3], player)
@ -223,7 +221,6 @@ class Screen:
# Screen configuration
self.screen_width = screen_width
self.screen_height = screen_height
self.pos_player = (screen_width // 2, screen_height // 2)
self._on_screen = [[" " for _ in range(screen_width)] for _ in range(screen_height)]
self._asci_data = []
@ -239,7 +236,7 @@ class Screen:
self.map_height = len(self._world)
def set_screen(self):
x = self._asci_data[2] - self.pos_player[0] ; y = self._asci_data[3] - self.pos_player[1]
x = self._asci_data[2] - 10 ; y = self._asci_data[3] - 3
for x_map in range(x, x + self.screen_width):
for y_map in range(y, y + self.screen_height):
self._on_screen[y_map - y][x_map - x] = " "
@ -262,7 +259,7 @@ class Screen:
print("\n" * self.screen_height)
def display_text(self, string):
paragraphs = [i for i in text_formater(string, self.screen_width, self.screen_height) if i]
paragraphs = [i for i in text_formater(string) if i]
nb_par = len(paragraphs)
for index in range(nb_par):
self.clear()
@ -271,19 +268,18 @@ class Screen:
else: input()
def set_cell(self, x, y, value):
x = x - (self._asci_data[2] - self.pos_player[0])
y = y - (self._asci_data[3] - self.pos_player[1])
x = x - (self._asci_data[2] - 10)
y = y - (self._asci_data[3] - 3)
if 0 <= x < self.screen_width and 0 <= y < self.screen_height:
self._on_screen[y][x] = value
def get_cell(self, x, y):
x = x - (self._asci_data[2] - self.pos_player[0])
y = y - (self._asci_data[3] - self.pos_player[1])
x = x - (self._asci_data[2] - 10)
y = y - (self._asci_data[3] - 3)
if 0 <= x < self.screen_width and 0 <= y < self.screen_height:
return self._on_screen[y][x]
else: return " "
class Event:
def __init__(self, xp, text, answer=0, *stat):
self.xp = xp
@ -388,11 +384,29 @@ def get_multi_move(key):
return [(convert(k), 1) for k in key]
# Motions functions
# Extra functions
def print_text(text, min_value=0, max_value=0, default_value=0):
paragraphs = [i for i in text_formater(text) if i]
nb = len(paragraphs)
for index in range(nb):
print("\n" * 7)
print(paragraphs[index])
if index + 1 == nb and (min_value or max_value or default_value) and min_value <= max_value:
result = input(">")
try: result = int(result)
except: result = default_value
if not (min_value <= result <= max_value): result = default_value
return result
else: input()
def stand_by(entity, data, stat, screen, walkable):
pass
def permanent(entity, data, stat, screen, walkable):
pass
@ -450,34 +464,4 @@ def _walk_engine(entity, frame):
new_y = entity.pos_y
if delta_x: new_x += abs(delta_x) // delta_x
if delta_y: new_y += abs(delta_y) // delta_y
return new_x, new_y
# Extra functions
def print_text(text, min_value=0, max_value=0, default_value=0, screen_width=21, screen_height=7):
paragraphs = [i for i in text_formater(text, screen_width, screen_height) if i]
nb = len(paragraphs)
for index in range(nb):
print("\n" * 7)
print(paragraphs[index])
if index + 1 == nb and (min_value or max_value or default_value) and min_value <= max_value:
result = input(">")
try: result = int(result)
except: result = default_value
if not (min_value <= result <= max_value): result = default_value
return result
else: input()
def center(string, total_length, symbol):
left = floor((total_length - len(string)) / 2)
right = ceil((total_length - len(string)) / 2)
return left * symbol + string + right * symbol
def enumerate(data):
return [(i, data[i]) for i in range(len(data))]
return new_x, new_y