{"id":650979,"student_id":3760,"content":"// 建立各遊戲角色\nlet road = createSprite('road.png'); // 柏油路背景\nlet check1 = createSprite('check.png'); // 檢查點 1\nlet check2 = createSprite('check.png'); // 檢查點 2\nlet border = createSprite('border.png'); // 道路邊界\nlet car = createSprite('car.png'); // 車子\nlet dashboard = createSprite('dashboard.png'); // 儀表板\nlet resultBoard = createSprite('result.png'); // 成績顯示版\nlet miniRoad = createSprite('road.png'); // 迷你地圖\nlet miniCar = createSprite('car.png'); // 迷你車\n\n// 設定各角色初始位置\ncheck1.moveTo(600, 400); // 檢查點 1\ncheck2.moveTo(600, -1750); // 檢查點 2\nminiRoad.moveTo(1000, 700); // 迷你地圖\nminiCar.moveTo(1000, 700); // 迷你車\n\n// 設定角色造型的旋轉方式,讓特定角色不會隨角度改變旋轉\nroad.rotationStyle = 'fixed';\ncheck1.rotationStyle = 'fixed';\ncheck2.rotationStyle = 'fixed';\nborder.rotationStyle = 'fixed';\n\n// 調整特定角色尺寸\n// 【學習】縮小迷你車角色\nminiCar.scale = 1 / 2;\n// 【學習】縮小迷你地圖角色\nminiRoad.scale = 1 / 15;\n// 設定迷你地圖角色至半透明\nminiRoad.opacity = 0.6;\n\n// 預設隱藏成績顯示版\nresultBoard.hidden = true; \n\n// 初始化各控制用變數\nlet speed = 0; // 車速\nlet startTime = Date.now(); // 開始時間\nlet round = 1; // 圈數\nlet isChecked = false; // 用來檢查是否經過檢查點 2\nlet timer = 0; // 計時器\nlet t1; // 第 1 圈秒數\nlet t2; // 第 2 圈秒數\nlet t3; // 第 3 圈秒數\n\n// 建立背景音樂,並設定為播放\ncreateSound('bgm.mp3', true);\n// 建立引擎聲音效,並設定為播放\nlet engineSound = createSound('engine.mp3', true);\n\n\n// 更新計時器時間的函式\nfunction updateTime() {\n // 更新計時器時間\n timer = (Date.now() - startTime)/1000;\n}\n// 顯示目前各資訊的函式\nfunction showInfo() {\n // 顯示目前各資訊,如車速、圈數、以及計時器時間\n print(Math.floor(speed*10) + ' km/h', 80, 80, 'white', 40);\n print(round + '/3', 350, 80, 'black', 40);\n print(timer + 's', 1000, 80, 'white', 40);\n}\n// 根據車速調整引擎聲音量\nfunction modifyEngineSoundVolume() {\n // 根據車速調整引擎聲音量\n engineSound.setVolume(speed/10); \n}\n// 控制相對移動的函式\nfunction controlMapMovements() {\n // 相對移動控制程式\n border.direction = car.direction - 180;\n border.stepForward(speed);\n road.direction = car.direction - 180;\n road.stepForward(speed);\n check1.direction = car.direction - 180;\n check1.stepForward(speed);\n check2.direction = car.direction - 180;\n check2.stepForward(speed);\n}\n// 控制車子方向的函式\nfunction controlCarDirection() {\n // 如果按下鍵盤右鍵\n if (key.right) {\n // 車子往右轉\n car.direction += 2;\n // 降低車速\n speed -= 0.2;\n }\n // 如果按下鍵盤左鍵\n if (key.left) {\n // 車子往左轉\n car.direction -= 2;\n // 降低車速\n speed -= 0.2;\n }\n}\n// 控制車速的函式\nfunction controlSpeed() {\n // 如果車速小於 12\n if (speed \u003c 12) {\n // 加快車速\n speed += 0.15;\n }\n // 如果車速小於 0.6\n if (speed \u003c 0.6) {\n // 固定車速\n speed = 0.6;\n }\n}\n// 處理車子碰撞相關的函式\nfunction handleCarTouchEvents() {\n // 【學習】如果車子碰到道路邊界\n if (car.touched(border)) {\n // 【學習】車速需要降低 0.3\n speed -= 0.3;\n }\n // 如果車子碰到檢查點 1 而且已經經過檢查點 2\n if (car.touched(check1) \u0026\u0026 isChecked) {\n // 更新開始時間至目前時間\n startTime = Date.now();\n // 如果目前為第 1 圈\n if (round == 1) {\n // 設定第 1 圈秒數為目前計時器時間\n t1 = timer;\n }\n // 如果目前為第 2 圈\n if (round == 2) {\n // 設定第 2 圈秒數為目前計時器時間\n t2 = timer;\n }\n // 如果目前為第 3 圈\n if (round == 3) {\n // 設定第 3 圈秒數為目前計時器時間\n t3 = timer;\n }\n // 增加累積圈數\n round += 1;\n // 更新檢查紀錄為 false,即新的一圈開始,還沒有經過檢查點 2\n isChecked = false;\n }\n // 【學習】如果車子碰到檢查點 2\n if (car.touched(check2)) {\n // 【學習】更新檢查紀錄為 true,表示已經過檢查點 2\n isChecked = true;\n }\n}\n// 判斷圈數的函式\nfunction tellRounds() {\n // 如果目前為第 4 圈,表示已經完成 3 圈,遊戲要結束並顯示成績\n if (round == 4) {\n resultBoard.hidden = false;\n let avg = (t1 + t2 + t3) / 3;\n drawText(t1 + 's', 550, 340, 'white', 30);\n drawText(t2 + 's', 550, 410, 'white', 30);\n drawText(t3 + 's', 550, 495, 'white', 30);\n drawText(avg.toFixed(3) + 's', 550, 560, 'white', 30);\n stop();\n }\n}\n// 處理迷你車動作的函式\nfunction handleMiniCarEvents() {// 設定迷你車的方向為目前車子的方向\n miniCar.direction = car.direction;\n // 設定迷你車的速度為目前車速的 1/15 倍\n miniCar.stepForward(speed/15);\n}\n\n\n// 執行遊戲各動作的功能\nfunction loop () {\n updateTime();\n showInfo();\n modifyEngineSoundVolume();\n controlMapMovements();\n controlCarDirection();\n controlSpeed();\n handleCarTouchEvents();\n tellRounds();\n handleMiniCarEvents();\n}\n\n// 【學習】使用 forever() 重複不斷執行遊戲各動作的功能\nforever(loop); \n","created_at":"2023-11-29T18:44:32.673+08:00","updated_at":"2023-12-12T11:43:43.042+08:00","name":"JS 瘋狂賽車_函式示範用","language":"javascript","screenshot":{"url":"https://cdn5.koding.school/uploads/project/screenshot/650979/3e6718d9d2f25eac5c0365dacd89f650.jpg"},"parent_id":650976,"plugin":"Game.set({\n width: 1200, height: 900,\n})","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":18,"hashid":"npms45r4d","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":14608718,"file_name":"engine.mp3","project_id":650979,"asset_id":686010,"created_at":"2023-11-29T18:44:32.680+08:00","updated_at":"2023-11-29T18:44:32.680+08:00"},{"id":14608719,"file_name":"bgm.mp3","project_id":650979,"asset_id":686011,"created_at":"2023-11-29T18:44:32.681+08:00","updated_at":"2023-11-29T18:44:32.681+08:00"},{"id":14608720,"file_name":"border.png","project_id":650979,"asset_id":686012,"created_at":"2023-11-29T18:44:32.682+08:00","updated_at":"2023-11-29T18:44:32.682+08:00"},{"id":14608721,"file_name":"car.png","project_id":650979,"asset_id":686013,"created_at":"2023-11-29T18:44:32.683+08:00","updated_at":"2023-11-29T18:44:32.683+08:00"},{"id":14608722,"file_name":"check.png","project_id":650979,"asset_id":686014,"created_at":"2023-11-29T18:44:32.684+08:00","updated_at":"2023-11-29T18:44:32.684+08:00"},{"id":14608723,"file_name":"dashboard.png","project_id":650979,"asset_id":686015,"created_at":"2023-11-29T18:44:32.685+08:00","updated_at":"2023-11-29T18:44:32.685+08:00"},{"id":14608724,"file_name":"result.png","project_id":650979,"asset_id":686016,"created_at":"2023-11-29T18:44:32.686+08:00","updated_at":"2023-11-29T18:44:32.686+08:00"},{"id":14608725,"file_name":"road.png","project_id":650979,"asset_id":686017,"created_at":"2023-11-29T18:44:32.687+08:00","updated_at":"2023-11-29T18:44:32.687+08:00"}]
橘蘋學習平台
橘蘋學習平台
我的作品
檢視專案頁
匯出
複製
匯入
刪除
下載 Android APP (APK)
截圖
1:1:1
1:1
full
幫助
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦