{"id":197257,"student_id":12205,"content":"","created_at":"2020-10-23T19:22:28.729+08:00","updated_at":"2020-10-23T19:22:42.080+08:00","name":"迷宮產生器 ","language":"javascript","screenshot":{"url":"/uploads/project/screenshot/197257/11cc013757434b77f4404503fce5f612.jpg"},"parent_id":31656,"plugin":"var maze = [];\nvar width = 20;\nvar row = 640/width;\nvar col = 480/width;\n\nfor (var x = 0; x \u003c row; x++) {\n maze[x] = [];\n for (var y = 0; y \u003c col; y++) {\n maze[x][y] = {\n color: 'white',\n top: false,\n right: false,\n bottom: false,\n left: false\n };\n }\n}\n\nforever(function() {\n for (var cx = 0; cx \u003c row; cx++) {\n for (var cy = 0; cy \u003c col; cy++) {\n \n var cell = maze[cx][cy];\n pen.size = 0.001;\n pen.fillColor = cell.color;\n pen.drawRect(cx*width, cy*width, width, width);\n \n pen.size = 1;\n var x = cx*width;\n var y = cy*width;\n if (!cell.top) pen.drawLine(x, y, x + width, y);\n if (!cell.right) pen.drawLine(x + width, y, x + width, y + width);\n if (!cell.bottom) pen.drawLine(x, y + width, x + width, y + width);\n if (!cell.left) pen.drawLine(x, y + width, x, y);\n }\n }\n});\n\n// 挖洞機的 x, y 位置\nvar x = 0;\nvar y = 0;\n\n// 預設起始點被挖掘過\nmaze[0][0].color = 'lightblue';\n\nforever(function(){\n pen.fillColor = 'red';\n pen.drawRect(x*width + 1, y*width + 1, width - 2, width - 2);\n\n var next = getNeighbors(x, y);\n \n if (next.length \u003e 0) {\n \n // 隨機挑選一個方向前進\n var rand = Math.floor(Math.random()*next.length);\n \n if (next[rand] == 'top') {\n maze[x][y].top = true;\n y -= 1;\n maze[x][y].bottom = true;\n }\n if (next[rand] == 'right') {\n maze[x][y].right = true;\n x += 1;\n maze[x][y].left = true;\n }\n if (next[rand] == 'bottom') {\n maze[x][y].bottom = true;\n y += 1;\n maze[x][y].top = true;\n }\n if (next[rand] == 'left') {\n maze[x][y].left = true;\n x -= 1;\n maze[x][y].right = true;\n }\n maze[x][y].color = 'lightblue';\n } else {\n maze[x][y].color = 'yellow'\n if (maze[x][y].top \u0026\u0026 maze[x][y - 1].color == 'lightblue') {\n y -= 1;\n }\n else if (maze[x][y].right \u0026\u0026 maze[x + 1][y].color == 'lightblue') {\n x += 1;\n }\n else if (maze[x][y].bottom \u0026\u0026 maze[x][y + 1].color == 'lightblue') {\n y += 1;\n }\n else if (maze[x][y].left \u0026\u0026 maze[x - 1][y].color == 'lightblue') {\n x -= 1;\n }\n }\n});\n\n// 取得四個方向中可以挖掘的方向\nfunction getNeighbors (x, y) {\n var arr = [];\n if (x \u003c 31 \u0026\u0026 maze[x + 1][y].color == 'white') {\n arr.push('right');\n }\n if (x \u003e 0 \u0026\u0026 maze[x - 1][y].color == 'white') {\n arr.push('left');\n }\n if (y \u003c 23 \u0026\u0026 maze[x][y + 1].color == 'white') {\n arr.push('bottom');\n }\n if (y \u003e 0 \u0026\u0026 maze[x][y - 1].color == 'white') {\n arr.push('top');\n }\n return arr;\n}\n","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":204,"hashid":"gk4skgjj8","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[]
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