aillk
Version:
小动物连连看 AI 高清重制无敌版 Animal Link-Link AI HD Remastered Invincible Edition
329 lines (327 loc) • 23.4 kB
JavaScript
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;
}