mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-09-10 22:41:06 +00:00
81 lines
1.9 KiB
Python
81 lines
1.9 KiB
Python
"""Interactive horse ASCII art animation demo."""
|
||
|
||
import os
|
||
import time
|
||
|
||
from reme.core.utils.horse import _mirror_frame
|
||
|
||
|
||
def clear_screen():
|
||
"""Clear the terminal screen."""
|
||
os.system("cls" if os.name == "nt" else "clear")
|
||
|
||
|
||
def running_horse():
|
||
"""Run a galloping horse animation across the terminal."""
|
||
# 定义两帧动画,模拟腿部动作
|
||
frame_1 = r"""
|
||
>>\.
|
||
/_ )`.
|
||
/ _)`^)`. _.---.
|
||
(_,' \ `^---- `.
|
||
| |
|
||
\ /
|
||
/ \ /___ / \
|
||
/ / | \ \ |
|
||
"""
|
||
|
||
frame_2 = r"""
|
||
>>\.
|
||
/_ )`.
|
||
/ _)`^)`. _.---.
|
||
(_,' \ `^---- `.
|
||
| |
|
||
\ /
|
||
// / ___ / |
|
||
/ / / | \ \ |
|
||
"""
|
||
|
||
frame_1 = _mirror_frame(frame_1)
|
||
frame_2 = _mirror_frame(frame_2)
|
||
|
||
frames = [frame_1, frame_2]
|
||
distance = 0
|
||
|
||
try:
|
||
while True:
|
||
# 1. 清理屏幕
|
||
clear_screen()
|
||
|
||
# 2. 获取当前帧(通过取余数在两帧之间切换)
|
||
current_frame = frames[distance % 2]
|
||
|
||
# 3. 增加左侧空格,产生向右移动的效果
|
||
indent = " " * distance
|
||
|
||
# 4. 打印带缩进的每一行
|
||
print("\n" * 5) # 顶部留白
|
||
for line in current_frame.split("\n"):
|
||
# 只有非空行才打印,避免格式错乱
|
||
if line.strip() != "":
|
||
print(indent + line)
|
||
else:
|
||
print()
|
||
|
||
# 5. 打印地面
|
||
print("-" * (distance + 40))
|
||
|
||
# 6. 更新距离并暂停
|
||
distance += 1
|
||
time.sleep(0.2) # 控制速度,0.2秒一帧
|
||
|
||
# 跑到屏幕边缘重置(可选)
|
||
if distance > 60:
|
||
distance = 0
|
||
|
||
except KeyboardInterrupt:
|
||
print("\n马儿休息了。(程序已停止)")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
running_horse()
|