|
|
@@ -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;
|