ソースを参照

处理通关路线提示音、撞墙提示音

liyanbo 4 ヶ月 前
コミット
fd9db1a8d0

BIN
src/assets/music/blockly/pass_route.MP3


+ 18 - 7
src/components/blockly/MapGame.vue

@@ -149,6 +149,7 @@ import playerImage from '@/assets/images/blockly/user.png';
 // 导入音频文件
 import passMp3 from '@/assets/music/blockly/pass.MP3';
 import failureMp3 from '@/assets/music/blockly/failure.MP3';
+import passRouteMp3 from '@/assets/music/blockly/pass_route.MP3';
 import errorMp3 from '@/assets/music/blockly/error.MP3'
 
 // 游戏接口数据
@@ -301,7 +302,7 @@ const CONFIG = {
     NO_ENTRY: '当前位置无通路,无法移动',
     UNFINISHED: '任务未完成!',
     EFFORT: '再接再厉!',
-    PASS_ROUTE: '恭喜你通过了当前路线,进入下一条路线!',
+    PASS_ROUTE: '恭喜你通过了当前路线,自动进入下一条路线!',
     FINISH: '恭喜你到达终点!',
     PICKUP_ITEM: '拾取物品成功!',
     NULL_PICKUP_ITEM: '当前位置没有可拾取的物品',
@@ -496,7 +497,7 @@ watch(() => [props.gameId, props.mapBackground, props.mapStartPoint, props.mapEn
   // 初始化可行走点集合
   initWalkablePointsSet();
   // 重置玩家位置
-  resetPlayer();
+  await resetPlayer();
   await nextTick();
   // 更新容器尺寸
   updateMapContainerDimensions();
@@ -525,7 +526,7 @@ onMounted(async () => {
   // 初始化Blockly工作区
   workspace = initBlockly();
   // 重置玩家位置
-  resetPlayer();
+  await resetPlayer();
 
   await nextTick();
   // 添加对窗口大小变化的监听
@@ -952,6 +953,9 @@ async function handleWallCollision(endMsg = CONFIG.TIPS.NO_ENTRY) {
   // 显示错误消息
   showGameMessage(endMsg, 'error');
 
+  await playMp3(errorMp3);
+  await new Promise(resolve => setTimeout(resolve, CONFIG.DELAY.PALY_MP3_TIMES));
+
   // 立即中止整个代码执行
   if (executionAbortController) {
     executionAbortController.abort();
@@ -1361,9 +1365,9 @@ window.isFinish = async function() {
   if (gameState.player.position.x === endPoint.value.x && gameState.player.position.y === endPoint.value.y) {
 
     // 如果通过了当前路线,标记为已通过并自动切换到下一个路线(true:切换下一关,false:全部通关)
-    if (markCurrentRouteAsPassed()){
-      //通关路线提示
-      showGameMessage(CONFIG.TIPS.PASS_ROUTE, 'success');
+    if (await markCurrentRouteAsPassed()){
+      //继续执行代码
+      await runCode();
       return;
     }
 
@@ -1906,7 +1910,7 @@ async function showPass(passStar) {
 }
 
 // 标记当前路线为已通过
-const markCurrentRouteAsPassed = () => {
+const markCurrentRouteAsPassed = async () => {
   routePassedStatus.value[currentRouteIndex.value] = true;
 
   // 自动切换到下一个可用路线
@@ -1916,6 +1920,13 @@ const markCurrentRouteAsPassed = () => {
     // 自动切换到下一个路线
     switchRoute(currentRouteIndex.value + 1);
 
+    //通关路线提示
+    showGameMessage(CONFIG.TIPS.PASS_ROUTE, 'success');
+
+    //播放通过路线声音
+    await playMp3(passRouteMp3);
+    await new Promise(resolve => setTimeout(resolve, CONFIG.DELAY.PALY_MP3_TIMES));
+
     return true;
   }
   return false;