UNPKG

aillk

Version:

小动物连连看 AI 高清重制无敌版 Animal Link-Link AI HD Remastered Invincible Edition

329 lines (327 loc) 23.4 kB
const lang = { UTF8SC: { html:{ 'title':'小动物连连看', 'welcome_title':'小动物连连看', 'start_button':'开始游戏', 'game_title':'小动物连连看', 'help_label':'游戏帮助 (H)', 'help_content':'1)点击两个相同小动物图标,则可以将其消除(连线不能超过3条直线,或最多2个转弯,不可穿过其他小动物图标)。\n(2)成功连接消除一对图标得10分,10秒内再次成功连接则计连击额外奖励5分。\n(3)消除所有小动物图标即可过关,你也可以在上方直接选择关卡。\n(4)如果找不不到匹配的动物图标时可以用鼠标点击提示按钮💡(按键盘“空格键”)获取提示或者刷新🌀牌面(按键盘“R键”)。\n(5)用鼠标点击重新开始按钮🌟(按键盘“回车键”可以重新开始当前关卡。\n(6)用鼠标点击音乐按钮🔊(按键盘“M键”)、音效按钮🔔(按键盘“S键”)可以控制背景音乐和音效的播放。\n(7)本游戏由柒瑞设计制作,公益开源、免费分享给大家,祝大家摸鱼快乐!! \n(8)柒瑞更多应用请访问:<a href="https://addon.dismall.com/developer-7.html" target="_blank">🔗https://addon.dismall.com/developer-7.html</a>\n(9)感谢以下AI团队提供技术支援(排名不分先后):Claude-3.7-sonnet;Gemini-2.5-pro;GPT-4o;DeepSeek-v3;Cursor;Trae;通义灵码。', 'help_ok':'谢谢,我知道了。', 'score_label':'分数:', 'combo_label':'连击:', 'time_label':'时长:', 'fill_mode_options':{ 'none':'01.原地不动', 'left':'02.向左移动', 'right':'03.向右移动', 'down':'04.向下移动', 'up':'05.向上移动', 'split_horizontal':'06.左右分离', 'split_vertical':'07.上下分离', 'center_horizontal':'08.左右集中', 'center_vertical':'09.上下集中', 'top_left_bottom_right':'10.上左下右', 'top_right_bottom_left':'11.上右下左', 'left_up_right_down':'12.左上右下', 'left_down_right_up':'13.左下右上', 'outward':'14.向外扩散', 'center':'15.向内集中' }, 'hint_tooltip':'快捷提示 (Space)', 'refresh_tooltip':'刷新牌面 (R)', 'restart_tooltip':'重新开始 (Enter)', 'music_tooltip':'音乐开关 (M)', 'sound_tooltip':'音效开关 (S)', 'result_title':'恭喜你赢了!', 'result_content':'你成功完成了所有配对!', 'stat_score':'得分', 'stat_combo':'连击', 'stat_time':'用时', 'stat_total_time':'总时长', 'close_button':'再来一局' }, js:{ 'shortcutKey': { 'prevent_space_scroll': '防止空格键滚动页面', 'welcome_screen_visible': '欢迎界面可见时,点击开始按钮', 'start_game': '开始游戏', 'result_modal_visible': '结果弹窗可见时,先关闭弹窗再重新开始游戏', 'next_level': '开启下一关', 'restart_game': '重新开始游戏', 'prevent_default': '防止默认行为' }, 'confetti': { 'title': '礼花动画和成绩单效果的JavaScript实现', 'create_confetti': '创建礼花元素', 'clear_container': '清空容器', 'create_multiple': '创建多个礼花元素', 'confetti_count': '礼花数量', 'random_props': '随机设置礼花的属性', 'from_top': '从屏幕上方开始', 'set_style': '设置礼花样式', 'random_shape': '随机形状', 'show_result': '显示结果模态窗口', 'set_content': '设置模态窗口内容', 'win_title': '恭喜你赢了!', 'win_content': '你成功完成了所有配对!', 'create_effect': '创建礼花效果', 'game_over': '游戏结束', 'no_pairs': '没有可消除的牌对了!', 'no_confetti': '不显示礼花', 'set_stats': '设置分数、时间和连击数', 'show_modal': '显示模态窗口', 'close_modal': '关闭结果模态窗口', 'clear_confetti': '清空礼花容器', 'restart': '重新开始游戏', 'init_events': '初始化事件监听', 'close_button_event': '关闭按钮点击事件' }, 'script': { 'fillmode_not_found_text': 'fillMode select element not found.', 'required_elements_not_found_text': 'Required elements for starting the game (startButton, welcomeScreen, game-container) not found.', 'start_playing_text': '开始播放背景音乐:', 'next_track_text': '切换到下一首背景音乐:', 'board_error_text': '无法生成游戏板,请检查配置。', 'import_config': '引入游戏配置', 'from_data': '从data.js获取配置', 'use_window': '使用window.gameConfig而不是重新声明config变量', 'audio_elements': '音频元素和状态管理', 'audio_load_state': '音频加载状态', 'game_state': '游戏状态', 'total_time': '从第一关开始的总时长', 'connection_path': '存储连接路径信息', 'fill_mode': '填补模式:none/left/right/down/up/split-horizontal/split-vertical/center-horizontal/center-vertical/top-left-bottom-right/top-right-bottom-left/left-up-right-down/left-down-right-up/outward/center', 'last_match_time': '记录上次消除时间', 'combo_count': '当前连击计数', 'total_combo_count': '总连击计数', 'dom_elements': 'DOM元素', 'connection_line': '将在需要时创建', 'add_fillmode_listener': '为fillMode添加change事件监听器', 'next_game_button': '为\'再来一局\'按钮添加点击事件,循环切换fillMode', 'start_button_listener': '开始按钮事件监听器', 'init_game': '初始化游戏', 'init_bg_music': '初始化并播放背景音乐', 'bg_music_management': '背景音乐管理', 'avoid_reinit': '避免重复初始化', 'preload_track': '预加载当前曲目', 'start_playing': '开始播放背景音乐:', 'music_ended': '音乐结束时平滑切换到下一首', 'next_track': '切换到下一首背景音乐:', 'save_cumulative': '保存需要累计的数据', 'keep_score': '保留总分数', 'keep_time': '保留总时间', 'keep_combo': '保留总连击数', 'reset_modal': '重置成绩弹窗状态,确保每次新局都隐藏', 'clear_hint': '清除提示高亮', 'board_error': '无法生成游戏板,请检查配置。', 'generate_board': '生成游戏板 (Modified to reuse emojis for large boards)', 'create_tile': '创建单个方块', 'handle_click': '处理方块点击', 'play_sound': '播放点击音效', 'sound_management': '音效播放管理', 'reset_audio': '重置音频状态', 'set_source': '设置音频源并播放', 'press_animation': '添加下压动画效果', 'remove_pressed': '动画结束后移除pressed类', 'deselect': '如果点击的是已经选中的牌,则取消选择', 'remove_selected': '移除选中样式', 'clear_selection': '清除选中状态', 'match_sound': '播放匹配成功音效', 'show_path': '显示连接路径', 'delay_clear': '使用延时,先显示路径,然后再消除方块 - 减少延时以加快游戏节奏', 'clear_content': '清空内部内容', 'remove_path': '移除连接路径', 'calc_combo': '计算连击', 'combo_bonus': '连击额外加分', 'update_combo': '更新连击数显示', 'show_combo': '显示累积总连击数', 'test_logic': 'test测试逻辑:快速显示成绩单', 'test_mode': '测试模式:完成3次消除后显示成绩单', 'fill_empty': '填补空位 (This internally calls renderBoardAfterFill if needed)', 'no_pairs_refresh': '没有可消除的牌对,自动刷新棋盘', 'fail_sound': '播放匹配失败音效', 'check_connect': '检查是否可以连接 (核心逻辑) - 仍然保留原函数用于兼容性', 'find_path': '查找连接路径 - 返回路径信息或null', 'store_paths': '存储所有可能的路径', 'check_paths': '检查所有可能的路径类型', 'rule1': 'Rule 1: 0 Turns (Straight Line) - 最短路径', 'rule2': 'Rule 2: 1 Turn (L-Shape) - 次短路径', 'rule3': 'Rule 3: 2 Turns (Z-Shape or U-Shape) - 最长路径', 'multiple_paths': '如果有多条可能的路径,返回最短的一条', 'sort_by_length': '按照长度排序(升序)', 'only_empty': '确保只有已经匹配或空的方块可以成为路径的一部分', 'compatibility': '保留原函数用于兼容性 (Points to new implementation)', 'check_straight': '检查直线连接并返回路径', 'return_path': '返回路径点:起点和终点', 'horizontal_distance': '水平距离作为路径长度', 'vertical_distance': '垂直距离作为路径长度', 'check_l_shape': '检查一次转弯(L形)并返回路径', 'store_l_paths': '存储所有可能的L形路径', 'horizontal_vertical': '横走再竖走', 'vertical_horizontal': '竖走再横走', 'check_corners': '检查每个可能的拐角', 'corner_clear': '拐角必须是通畅的', 'check_segments': '检查两段直线路径是否都通畅', 'calc_length': '计算此路径的长度(曼哈顿距离)', 'found_valid': '如果找到了有效路径,返回最短的', 'sort_length': '按路径长度升序排序', 'no_l_path': '没有找到有效的L形路径', 'check_z_shape': '检查两次转弯(Z形或回折)并返回路径', 'store_z_paths': '存储所有可能的有效两拐点路径', 'manhattan_distance': '计算曼哈顿距离以确定搜索范围', 'horizontal_priority': '横向优先搜索 - 水平、垂直、水平', 'search_range': '在棋盘可能的范围内寻找中间列,包括外围虚拟格点', 'check_intersections': '检查中间列的两个交点是否畅通', 'check_three_segments': '检查三条路径段是否都畅通', 'calc_path_length': '计算路径长度(曼哈顿距离)', 'vertical_priority': '纵向优先搜索 - 垂直、水平、垂直', 'found_z_path': '如果找到了有效路径,返回最短的', 'sort_z_paths': '按路径长度升序排序', 'no_z_path': '没有找到有效的两拐点路径', 'format_time': '格式化时间显示', 'start_timer': '开始计时器', 'check_board': '检查棋盘上是否还有可消除的牌对', 'find_pair': '查找一对可消除的牌,返回牌的位置信息或null', 'end_game': '结束游戏', 'disable_hint': '禁用提示按钮', 'pause_music': '暂停背景音乐', 'win_sound': '播放胜利音效', 'center_modal': '确保模态框居中', 'set_title': '设置标题和内容', 'win_title': '恭喜你过关了', 'next_level_name': '获取下一关名称', 'complete_title': '恭喜你成功通关', 'play_again': '再来一局', 'reset_totals': '总分、总时长、总连击全部清零', 'next_level_content': '接下来:${nextLevelName}', 'next_level_button': '下一关', 'result_content': '你成功完成了所有配对!', 'fail_content': '很遗憾,未能完成全部配对。', 'show_confetti': '显示 confetti 动画(如有)', 'call_confetti': '调用礼花函数', 'create_effect': '调用 confetti.js 中的函数', 'enable_overlay': '添加 active 类以启用 pointer-events', 'no_hint_text': '无提示!', 'no_pairs_text': '刷新后仍然没有可消除的牌,请按空格键手动刷新!', 'congrats_pass': '恭喜你过关了', 'congrats_complete': '恭喜你成功通关', 'game_over': '游戏结束', 'next_level': '接下来:', 'play_again': '再来一局', 'next_level_button': '下一关', 'close_button': '关闭按钮绑定', 'remove_active': '移除 active 类', 'restart_logic': '调用重新开始游戏逻辑', 'shuffle_algorithm': '辅助函数:洗牌算法 (Fisher-Yates Shuffle)', 'hint_feature': '提示功能:高亮显示一对可消除的牌', 'clear_previous': '先清除之前的提示高亮', 'hint_sound': '播放提示音效', 'find_removable': '查找一对可消除的牌', 'get_dom': '获取对应的DOM元素 (Safely)', 'add_highlight': '添加提示高亮样式 if elements exist', 'auto_clear': '5秒后自动清除提示高亮', 'no_pairs_found': '如果没有找到可消除的牌对,给用户一个提示', 'no_hint': '无提示!', 'clear_highlights': '清除提示高亮', 'remove_highlights': '移除所有牌的提示高亮样式', 'refresh_sound': '播放刷新音效', 'clear_state': '刷新时清除提示和选中状态', 'refresh_alert': '刷新后仍然没有可消除的牌!请再次刷新或重新开始。' }, 'option': { 'path_error': '无法绘制路径:棋盘不存在或路径无效。', 'board_invalid': '棋盘尺寸无效,无法绘制路径。', 'position_error': '获取DOM位置时出错,回退到计算位置:', 'draw_error': '!!! 绘制错误:视觉点计算仍生成斜线段!', 'no_valid_points': '没有生成足够有效的 SVG 路径点。', 'draw_path': '绘制连接路径 - 再次重写,优先遵守线段数量原则 (最多3条)', 'remove_previous': '移除之前的路径(如果有)', 'path_error': '无法绘制路径:棋盘不存在或路径无效。', 'basic_settings': '--- 基本设置 ---', 'padding_visible': '确保超出画布的路径可见', 'ensure_corners': '确保直角连接', 'board_invalid': '棋盘尺寸无效,无法绘制路径。', 'helper_functions': '--- 辅助函数 ---', 'principle5': '原则 5 (部分)', 'position_error': '获取DOM位置时出错,回退到计算位置:', 'path_calculation': '--- 路径计算 ---', 'one_segment': '1 条线段', 'zero_turns': '0 逻辑拐点 => 1 视觉拐点 (2 条线段)', 'horizontal_path': '逻辑路径水平', 'vertical_priority': '视觉优先垂直转', 'vertical_path': '逻辑路径垂直', 'horizontal_priority': '视觉优先水平转', 'one_turn': '1 逻辑拐点 => 1 视觉拐点 (2 条线段) - L Shape', 'first_horizontal': '第一段水平, 第二段垂直', 'align_end_x': '拐点的X与终点对齐 (因为第二段垂直)', 'align_start_y': '拐点的Y与起点对齐 (因为第一段水平)', 'first_vertical': '第一段垂直, 第二段水平', 'align_start_x': '拐点的X与起点对齐 (因为第一段垂直)', 'align_end_y': '拐点的Y与终点对齐 (因为第二段水平)', 'two_turns': '2 逻辑拐点 => 2 视觉拐点 (3 条线段) - Z/U Shape', 'need_corner2': '需要 gridCorner2 来判断中间段方向', 'calc_corner1': '计算 visualCorner1 (基于第一段路径和第一个逻辑拐点)', 'first_h_segment': '第一段水平', 'align_corner_x': '对齐第一个拐点的中心X', 'align_start_y': '对齐起点的Y', 'first_v_segment': '第一段垂直', 'align_start_x': '对齐起点的X', 'align_corner_y': '对齐第一个拐点的中心Y', 'calc_corner2': '计算 visualCorner2 (保证 C1->C2 和 C2->End 是直角)', 'c2_coords': 'C2 的坐标由 C1 和 End 共同决定,并考虑中间段方向', 'middle_h': '中间段水平', 'c2_x_align': 'C2 的 X 必须与 End 对齐 (因为最后一段是垂直的)', 'c2_y_align': 'C2 的 Y 必须与 C1 对齐 (保证中间段水平)', 'middle_v': '中间段垂直', 'c2_x_align_c1': 'C2 的 X 必须与 C1 对齐 (保证中间段垂直)', 'c2_y_align_end': 'C2 的 Y 必须与 End 对齐 (因为最后一段是水平的)', 'build_svg': '--- 构建 SVG 路径 ---', 'check_expected': '检查计算结果是否符合预期 (纯水平或垂直)', 'theory_error': '理论上不应发生,如果发生说明 visualCorner 计算仍有问题', 'draw_error': '!!! 绘制错误:视觉点计算仍生成斜线段!', 'draw_anyway': '直接绘制,即使检测到错误', 'add_to_dom': '--- 添加到 DOM ---', 'no_valid_points': '没有生成足够有效的 SVG 路径点。', 'remove_path': '移除连接路径', 'fill_logic': '填补空位逻辑 (Revised outward and center for shifting only)', 'by_mode': '根据填补模式处理空位', 'iterate_rows': '遍历每一行', 'init_row': '初始化新的行状态', 'collect_tiles': '收集非空方块并分类', 'place_left': '放置左半边方块(靠近中间)', 'place_right': '放置右半边方块(靠近中间)', 'update_row': '更新整行状态', 'iterate_cols': '遍历每一列,对每个非空方块根据其位置决定移动方向', 'collect_col': '收集当前列所有非空方块', 'move_by_pos': '根据方块位置分别移动', 'top_half_down': '上半边向下移动', 'find_bottom': '找到最下边的空位', 'bottom_half_up': '下半边向上移动', 'find_top': '找到最上边的空位', 'center_algorithm': '模拟"吸向中心"的迭代移动算法', 'calc_center': '计算中心点(允许小数,便于距离比较)', 'four_directions': '定义四方向(可扩展为八方向)', 'up_dir': '', 'down_dir': '', 'left_dir': '', 'right_dir': '', 'eight_dir': '若需八方向可加对角线', 'mark_movable': '标记本轮所有可移动的牌及目标', 'record_targets': '记录本轮已被占用的目标,防止冲突', 'collect_movable': '先遍历所有牌,收集可移动的', 'lock_target': '本轮锁定目标', 'clear_original': '立即清空原位置', 'execute_moves': '执行本轮所有移动', 'render_board': '重新渲染填补后的棋盘 (Corrected version)' } } } } // 导出配置 if (typeof module !== 'undefined' && module.exports) { module.exports = { lang }; } else { // 浏览器环境下,将lang暴露到全局 window.lang = lang; }