上面三關改好,接下來改第四關(第五關目前沒想法,讓他跟第一關長一樣就好)
一樣先貼第一關、改關卡內容相關function、搜尋1把需要的改成4
給大家看第四關任務部份
// 第四關任務設置
const levelConfig4 = {
missions: [
{
point: { x: 100, y: 200 },
type: 'provide-password',
password: '秘密密碼',
message: '你獲得了通關密語!',
imageUrl: '/images/DSC_8737.JPG' // 圖片背景
},
{
point: { x: 200, y: 300 },
type: 'input-password',
prompt: '請輸入通關密語:',
correctPassword: '秘密密碼',
imageUrl: '/images/DSC_0286.JPG' // 圖片背景
},
{
point: { x: 300, y: 400 },
type: 'default',
message: '這是無效的任務點。',
imageUrl: '/images/DSC_0288.JPG' // 圖片背景
}
],
type: 'custom-mission'
};
// 碰撞檢測
function checkCollisionWithMissions(x, y) {
const levelData = levelConfig4;
if (levelData) {
levelData.missions.forEach((mission) => {
const { point, type } = mission;
const distance = Math.sqrt((x - point.x) ** 2 + (y - point.y) ** 2);
if (distance < 40) {
switch (type) {
case 'provide-password':
handleProvidePasswordMission(mission);
break;
case 'input-password':
handleInputPasswordMission(mission);
break;
case 'default':
default:
showDialogue(mission.message || '你碰到了任務點!', mission.imageUrl);
break;
}
}
});
}
}
// 處理提供通關密語的任務
function handleProvidePasswordMission(mission) {
playerPassword = mission.password;
showDialogue(mission.message || '你獲得了一條密語!', mission.imageUrl);
}
// 處理輸入通關密語的任務
function handleInputPasswordMission(mission) {
const input = prompt(mission.prompt);
if (input === mission.correctPassword && playerPassword !== '') {
showDialogue('密語正確,通關!', mission.imageUrl);
} else {
showDialogue('密語錯誤或你尚未獲得密語,請再試一次!', mission.imageUrl);
}
}
超長ㄉ
先測試
功能一次到位!
接下來加入圖片url、許願alert改對話框,上chatGPT統整全檔
這次code比較長,學乖了要先檢查
東西一長chatGPT就容易弄丟東西
然後讀到不懂就問
好像不該問他是什麼,因為其實我知道
這樣會不會浪費額度(?
目前成品
狀態:笨呱(暫時放棄,修好了會通知大家?
來去修主頁
目前主頁狀態:不管到第幾關,出來都跳回第一關
丟的code太長就會自動跳回英文
修改主頁JS檔,順便把主頁用不到的東西刪光
測試一下,所有關卡運作正常,而且出來不會跳回第一關了!
附一下他生給我的code
// Save current level before entering a level
enterLevelBtn.addEventListener('click', () => {
localStorage.setItem('currentLevel', currentLevel); // Save current level to localStorage
window.location.href = `level${currentLevel+1}.html`;
isLevelActive = 1;
});
// Load saved level progress when the page loads
window.addEventListener('load', () => {
const savedLevel = localStorage.getItem('currentLevel');
if (savedLevel !== null) {
currentLevel = parseInt(savedLevel, 10); // Retrieve and set the current level
}
updateCharacterPosition(); // Move the character to the saved position
});
// Character movement between levels
function moveCharacterToNextCheckpoint() {
const startLength = currentLength;
const endLength = pathLength / (totalLevels - 1) * currentLevel;
const duration = 1000;
const step = 10;
let progress = 0;
const interval = setInterval(() => {
progress += step;
const t = progress / duration;
const currentPosLength = startLength + (endLength - startLength) * t;
const point = path.getPointAtLength(currentPosLength);
character.setAttribute('x', point.x - 20);
character.setAttribute('y', point.y - 20);
if (progress >= duration) {
clearInterval(interval);
currentLength = endLength;
updateCharacterPosition();
}
}, step);
}
接下來是關卡通關和主頁下一關按鈕顯示的對接
上一版有做,碰到任務點回主頁後「下一關」才會出現
現在是無條件通行,但之後要試著把邏輯加回來
主頁JS檔和各關應該不太互通,所以跟第四關一起留著之後慢慢弄...
先來做個系列完結ㄌ!
先說,廢文我剛剛都標示起來了,可以直接略過!
廢文就是沒實際進度的部分
首先
感謝鐵人賽給我每天回來debug的動力!!
我覺得當初參賽一部份也是為了這個
為了一直寫文有進度,幾乎每天都會想回來碰一下
超重要ㄉ
而且 chatGPT是真的很強欸
雖然標題真的是在唬爛,我做這將近4週,資工系同學應該不用幾天
而且只要長一點的問題,chatGPT 很容易被生成方式限制住,亂回一通
所以工程師還是沒那麼快被取代,不用擔心(?
然後很慶幸我的專題看起來真的交的出來啦
雖然本人沒有美感,chatGPT也沒有,導致現在的主頁依然超醜
不過偷偷說聲,裡面用的照片都我自己拍的!貓貓鴨鴨們有沒有超可愛!
之後如果整個版本做完,還記得的話會上來更新...吧
最後祝大家期中順利!!(灑花~~