{"id":237961,"student_id":10,"content":"var b1 = new Bar();\nvar b2 = new Bar();\nvar b3 = new Bar();\n\nsetInterval(function () {\n \n // 循環排程演算法\n // var task = b1.shift();\n // b1.push(task);\n // b1.serve(b1[0]);\n \n // 先進先出排程演算法\n b2.sort(function (a, b) {\n return a.order - b.order;\n });\n b2.serve(b2[0]);\n \n // 最小工作優先排程演算法\n b3.sort(function (a, b) {\n return a.value - b.value;\n });\n b3.serve(b3[0]);\n\n\n // 優先排程演算法\n b1.sort(function (a, b) {\n return (b.time - b.value) - (a.time - a.value)\n });\n b1.serve(b1[0]);\n \n}, 1000);","created_at":"2021-03-23T10:41:31.621+08:00","updated_at":"2021-10-29T14:56:11.532+08:00","name":"酒吧排程演算法(預設版) 副本","language":"javascript","screenshot":{"url":"/uploads/project/screenshot/237961/5a52b2e78ffb001a83928055f1f97956.jpg"},"parent_id":148160,"plugin":"Game.set({ width: 1200, height: 900 });\nsetBackdrop(\"bg.png\");\n\nconst COSTUMES = [['b0.png', 'b1.png'], ['r0.png', 'r1.png'], ['g0.png', 'g1.png'], ['y0.png', 'y1.png'], ['o0.png', 'o1.png']];\nvar bars = [];\nvar peopleSprite = {};\n\nfunction Bar (x, y) {\n \n if (bars.length \u003e 3) return alert('只能創造三個!');\n\n var table = createSprite(\"bar.png\");\n table.y = (2 - bars.length)*300 + 150;\n table.layer = 1;\n\n this.table = table;\n this.tasks = [];\n this.sprites = {};\n this.idx = 0;\n this.totalTime = 0;\n this.avgTime = 0;\n\n bars.push(this);\n\n forever(this.loop.bind(this));\n this.tasks.serve = this.serve.bind(this);\n\n return this.tasks;\n}\n\nBar.prototype = {\n \n loop: function () {\n \n var self = this;\n \n for (var i=0; i\u003cthis.tasks.length; i++) {\n var t = this.tasks[i];\n \n // 移除被放入不符合格式的物件\n if (!this.tasks[i]) {\n this.tasks.splice(i, 1);\n i--;\n continue;\n }\n \n // 印出每個叩叮的資訊\n var s = self.sprites[t.spriteId];\n print(t.value, s.x, s.y + 70, 'orange', 40); //啤酒需求個數\n print(t.time, s.x, s.y + 110, 'white', 40); //等待時間\n \n // 移除結束的任務\n if (t \u0026\u0026 t.value \u003c= 0) {\n this.tasks.splice(i, 1);\n this.sprites[t.spriteId].destroy();\n delete this.sprites[t.spriteId];\n }\n }\n\n var s = '平均等待 ' +this.avgTime.toFixed(3) + ' 秒'\n print(s, 10, this.table.y - 130, 'white', 30);\n },\n \n addTask: function (sprite, data) {\n this.tasks.push(data);\n for (var i = 0; i \u003c 10; i++) {\n if (this.sprites[this.idx] == undefined) {\n this.sprites[this.idx] = sprite;\n sprite.x = this.idx*120 + 60;\n sprite.y = this.table.y;\n data.spriteId = this.idx;\n break;\n }\n this.idx++;\n if (this.idx \u003e= 10) this.idx = 0;\n }\n },\n\n serve: function (data) {\n if (data == undefined) return;\n\n var s = this.sprites[data.spriteId]\n s.costumeId = 1;\n setTimeout(function() { \n data.value--;\n s.costumeId = 0;\n }, 700);\n }\n}\n\n\n// 每秒鐘更新一次task的等待時間\nsetInterval(function () {\n bars.forEach(function (bar) {\n bar.tasks.forEach(function (t) {\n if (t) t.time++;\n })\n bar.totalTime += bar.tasks.length;\n bar.avgTime = bar.totalTime/order;\n })\n}, 1000);\n\n\nvar order = 0;\n\nsetInterval(function () {\n\n if (bars.length == 0) return;\n \n // 如果有任合一間酒吧已經滿客,所有ㄐㄧ就不再新增\n if (bars.some(function (b) {return b.tasks.length \u003e= 10})) return;\n \n\n order++;\n\n var value = Math.floor(Math.random()*8) + 1;\n var costume = COSTUMES[Math.floor(Math.random()*COSTUMES.length)];\n\n bars.forEach(function (bar) {\n var s = createSprite(costume);\n var data = {\n value: value, time: 0, order: order\n }\n bar.addTask(s, data);\n s.on('click', () =\u003e data.value -= 1);\n });\n}, 2000);","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":361,"hashid":"882sqjk93","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":4341133,"file_name":"y1.png","project_id":237961,"asset_id":212457,"created_at":"2021-03-23T10:41:31.626+08:00","updated_at":"2021-03-23T10:41:31.626+08:00"},{"id":4341134,"file_name":"y0.png","project_id":237961,"asset_id":212458,"created_at":"2021-03-23T10:41:31.628+08:00","updated_at":"2021-03-23T10:41:31.628+08:00"},{"id":4341135,"file_name":"r0.png","project_id":237961,"asset_id":212459,"created_at":"2021-03-23T10:41:31.629+08:00","updated_at":"2021-03-23T10:41:31.629+08:00"},{"id":4341136,"file_name":"r1.png","project_id":237961,"asset_id":212460,"created_at":"2021-03-23T10:41:31.630+08:00","updated_at":"2021-03-23T10:41:31.630+08:00"},{"id":4341137,"file_name":"o1.png","project_id":237961,"asset_id":212461,"created_at":"2021-03-23T10:41:31.631+08:00","updated_at":"2021-03-23T10:41:31.631+08:00"},{"id":4341138,"file_name":"o0.png","project_id":237961,"asset_id":212462,"created_at":"2021-03-23T10:41:31.632+08:00","updated_at":"2021-03-23T10:41:31.632+08:00"},{"id":4341139,"file_name":"g0.png","project_id":237961,"asset_id":212463,"created_at":"2021-03-23T10:41:31.633+08:00","updated_at":"2021-03-23T10:41:31.633+08:00"},{"id":4341140,"file_name":"g1.png","project_id":237961,"asset_id":212464,"created_at":"2021-03-23T10:41:31.634+08:00","updated_at":"2021-03-23T10:41:31.634+08:00"},{"id":4341141,"file_name":"b0.png","project_id":237961,"asset_id":212465,"created_at":"2021-03-23T10:41:31.635+08:00","updated_at":"2021-03-23T10:41:31.635+08:00"},{"id":4341142,"file_name":"b1.png","project_id":237961,"asset_id":212466,"created_at":"2021-03-23T10:41:31.636+08:00","updated_at":"2021-03-23T10:41:31.636+08:00"},{"id":4341143,"file_name":"bg.png","project_id":237961,"asset_id":212467,"created_at":"2021-03-23T10:41:31.637+08:00","updated_at":"2021-03-23T10:41:31.637+08:00"},{"id":4341144,"file_name":"bar.png","project_id":237961,"asset_id":212468,"created_at":"2021-03-23T10:41:31.638+08:00","updated_at":"2021-03-23T10:41:31.638+08:00"}]
Orange Apple Learning Platform
My Projects
View Project Page
Export
Remix
Import
Delete
Download Android APP (APK)
Screenshot
繁中
简中
English
日本語
1:1:1
1:1
Full Width
Scan the QRCode below with your phone to install
Or you can
download APK
to this computer
Scan the QRCode below with your phone to install
Or you can
download APK
to this computer