还剩拖拽部分和输出部分就好了
This commit is contained in:
shenjack 2024-04-06 18:20:05 +08:00
parent b9275ae298
commit eb5b1fadd5
Signed by: shenjack
GPG Key ID: 7B1134A979775551

View File

@ -66,20 +66,24 @@ class NumWidget:
group=group,
)
@property
def value(self) -> int:
return int(self.label.text)
@property
def x(self) -> int:
return self._x
@x.setter
def x(self, value: int) -> None:
self._x = value
self.label.x = value + 17
self.background.x = value
@property
def y(self) -> int:
return self._y
@y.setter
def y(self, value: int) -> None:
self._y = value
@ -93,6 +97,16 @@ class NumWidget:
return self.x <= x <= self.x + width and self.y <= y <= self.y + height
def middle_widget(: NumWidget, : NumWidget, : NumWidget) -> int:
"""返回中间值"""
a, b, c = .value, .value, .value
if a < b < c or c < b < a:
return b
if b < a < c or c < a < b:
return a
return c
class MainWindow(Window):
def __init__(self, *args, **kwargs):
super().__init__(
@ -138,7 +152,7 @@ class MainWindow(Window):
# index 25~27 中值 + 36 = 抗性
# index 28~30 中值 + 36 = 智慧
self.display_dict: dict[NumStatus, list[NumWidget]] = {
NumStatus.hp: [self.num_dict[i] for i in range(3, 7)],
NumStatus.hp: [self.num_dict[i] for i in range(0, 10)],
NumStatus.attack: [self.num_dict[i] for i in range(10, 13)],
NumStatus.defense: [self.num_dict[i] for i in range(13, 16)],
NumStatus.speed: [self.num_dict[i] for i in range(16, 19)],
@ -146,15 +160,16 @@ class MainWindow(Window):
NumStatus.magic: [self.num_dict[i] for i in range(22, 25)],
NumStatus.resistance: [self.num_dict[i] for i in range(25, 28)],
NumStatus.wisdom: [self.num_dict[i] for i in range(28, 31)],
NumStatus.wait: [
*(self.num_dict[i] for i in range(0, 3)),
*(self.num_dict[i] for i in range(7, 10)),
*(self.num_dict[i] for i in range(31, 256)),
],
NumStatus.wait: [self.num_dict[i] for i in range(31, 256)],
}
self.update_num_display()
def update_num_display(self) -> None:
# sort hp
self.display_dict[NumStatus.hp].sort(key=lambda x: x.value)
# sort wait
self.display_dict[NumStatus.wait].sort(key=lambda x: x.value)
for status, widgets in self.display_dict.items():
num_count = 0
for widget in widgets:
@ -162,7 +177,21 @@ class MainWindow(Window):
widget.x = 40 + (65 * status.value)
widget.y = self.height - (170 + 30 * num_count)
num_count += 1
# 计算数据
hp = sum(widget.value for widget in self.display_dict[NumStatus.hp][3:6]) + 154
attack = middle_widget(*self.display_dict[NumStatus.attack]) + 36
defense = middle_widget(*self.display_dict[NumStatus.defense]) + 36
speed = middle_widget(*self.display_dict[NumStatus.speed]) + 36
agility = middle_widget(*self.display_dict[NumStatus.agility]) + 36
magic = middle_widget(*self.display_dict[NumStatus.magic]) + 36
resistance = middle_widget(*self.display_dict[NumStatus.resistance]) + 36
wisdom = middle_widget(*self.display_dict[NumStatus.wisdom]) + 36
gather = sum(
(int(hp / 3), attack, defense, speed, agility, magic, resistance, wisdom)
)
self.name_info_displays[
"label"
].text = f"HP|{hp} 攻|{attack} 防|{defense} 速|{speed} 敏|{agility} 魔|{magic} 抗|{resistance} 智|{wisdom} 八围:{gather}"
def init_name_dispaly(self) -> None:
"""
@ -230,6 +259,10 @@ class MainWindow(Window):
self.main_batch.draw()
self.num_batch.draw()
def on_resize(self, width, height):
super().on_resize(width, height)
self.update_num_display()
def start(self) -> None:
pyglet.app.run(interval=1 / 30)