#!/usr/bin/env python3 """测试存档界面显示10条存档的能力""" import pygame import sys import os # 添加项目根目录到路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from config import * from save_ui import SaveLoadUI from maze import Maze def test_10_saves_display(): """测试显示10条存档""" print("=== 测试存档界面10条存档显示能力 ===") # 初始化pygame pygame.init() screen = pygame.display.set_mode((UI_WIDTH, UI_HEIGHT)) pygame.display.set_caption("测试10条存档显示") font = pygame.font.Font(FONT_FILE, FONT_SIZE) # 创建对象 maze = Maze(wall_size=20, maze_size=200, file_name="test") save_ui = SaveLoadUI(font) # 检查max_visible_saves设置 print(f"max_visible_saves设置: {save_ui.max_visible_saves}") # 模拟10条存档数据 mock_saves = [] for i in range(10): mock_saves.append({ 'name': f'test_save_{i+1:02d}.json', 'path': f'saves/test_save_{i+1:02d}.json', 'save_time': f'2024-01-{i+1:02d} 10:00:00', 'size': '5x5' }) # 直接设置存档列表 save_ui.save_list = mock_saves save_ui.show_save_list = True print(f"模拟存档数量: {len(mock_saves)}") # 计算显示参数 button_positions = get_button_positions() list_area = button_positions['save_list_area'] print(f"存档列表区域: x={list_area[0]}, y={list_area[1]}, w={list_area[2]}, h={list_area[3]}") # 计算可显示的存档数量 # 标题区域: 30像素 # 操作提示区域: 25像素 # 剩余区域高度: 330 - 30 - 25 = 275像素 # 每个存档项: 25像素 available_height = list_area[3] - 55 # 55 = 30(标题) + 25(提示) max_displayable = available_height // 25 print(f"可用显示高度: {available_height}像素") print(f"理论最大显示数量: {max_displayable}条") print(f"实际设置显示数量: {save_ui.max_visible_saves}条") # 测试显示 clock = pygame.time.Clock() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False elif event.key == pygame.K_UP: if save_ui.selected_save > 0: save_ui.selected_save -= 1 print(f"选中存档: {save_ui.selected_save + 1}") elif event.key == pygame.K_DOWN: if save_ui.selected_save < len(save_ui.save_list) - 1: save_ui.selected_save += 1 print(f"选中存档: {save_ui.selected_save + 1}") # 绘制 screen.fill(COLOR_WHITE) save_ui.draw(screen) # 绘制测试信息 info_text = [ f"存档数量: {len(save_ui.save_list)}", f"显示设置: {save_ui.max_visible_saves}条", f"当前选中: {save_ui.selected_save + 1}", "按↑↓键选择存档,ESC退出" ] for i, text in enumerate(info_text): text_surface = font.render(text, True, COLOR_BLACK) screen.blit(text_surface, (10, 10 + i * 30)) pygame.display.flip() clock.tick(60) pygame.quit() print("测试完成") if __name__ == "__main__": test_10_saves_display()