maze_python/tests/test_dynamic_ui.py

100 lines
3.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
测试动态UI布局功能
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from maze import Maze
from config import get_button_positions, MAZE_SIZE
def test_dynamic_ui():
"""测试动态UI布局功能"""
print("=== 测试动态UI布局功能 ===\n")
# 测试不同大小的迷宫
test_cases = [
("小迷宫", 10), # 10x10
("中迷宫", 15), # 15x15
("大迷宫", 20), # 20x20
("超大迷宫", 25), # 25x25
]
for name, size in test_cases:
print(f"{name} ({size}x{size}):")
# 创建迷宫实例
maze = Maze(wall_size=40, maze_size=size*40, file_name="test.csv")
# 模拟网格数据(创建指定大小的迷宫)
maze.grid = [['1' for _ in range(size)] for _ in range(size)]
maze.size = size
# 更新显示尺寸
maze.update_display_size()
print(f" 实际墙壁尺寸: {maze.actual_wall_size}")
print(f" 实际显示尺寸: {maze.actual_display_size}")
# 测试按钮位置
button_positions = get_button_positions(maze.actual_display_size)
print(f" 开始按钮位置: {button_positions['start_button']}")
print(f" 保存按钮位置: {button_positions['save_button']}")
print(f" 加载按钮位置: {button_positions['load_button']}")
print()
# 测试加载不同存档文件的效果
print("=== 测试加载不同存档文件 ===\n")
saves_dir = "saves"
if os.path.exists(saves_dir):
save_files = [f for f in os.listdir(saves_dir) if f.endswith('.json')][:3]
for save_file in save_files:
print(f"加载存档: {save_file}")
maze = Maze(wall_size=40, maze_size=800, file_name="test.csv")
full_path = os.path.join(saves_dir, save_file)
if maze.load_game(full_path):
print(f" 迷宫大小: {maze.size}x{maze.size}")
print(f" 实际显示尺寸: {maze.actual_display_size}")
print(f" 墙壁尺寸: {maze.actual_wall_size}")
# 计算按钮位置
button_positions = get_button_positions(maze.actual_display_size)
print(f" 控制面板起始X: {button_positions['start_button'][0]}")
print()
else:
print(f" 加载失败")
print()
print("=== 按钮位置适应性测试完成 ===")
def test_button_positions():
"""测试按钮位置计算函数"""
print("\n=== 测试按钮位置计算函数 ===\n")
test_sizes = [400, 600, 800, 1000, 1200]
for size in test_sizes:
print(f"迷宫显示尺寸: {size}")
positions = get_button_positions(size)
print(f" 开始按钮: {positions['start_button']}")
print(f" 存档区域: {positions['save_list_area']}")
# 检查按钮是否在合理位置(不超出屏幕范围)
control_x = positions['start_button'][0]
if control_x < 1500: # UI_WIDTH
print(f" ✓ 按钮位置合理")
else:
print(f" ✗ 按钮位置可能超出屏幕")
print()
if __name__ == "__main__":
test_dynamic_ui()
test_button_positions()