{"id":29757,"student_id":2591,"content":"var W = 10;\nvar H = 20;\nvar c = 0;\nvar s = 0;\nvar grid = [];\nvar game = true;\nvar score = 0;\nvar colors = [\"red\", \"green\", \"orange\", \"blue\", \"purple\", \"#0abab5\", \"brown\"];\nvar shapes = [\n [\n [1, 1],\n [1, 1]\n ],\n [\n [0, 1, 0],\n [0, 1, 0],\n [0, 1, 1]\n ],\n [\n [0, 1, 0],\n [0, 1, 0],\n [1, 1, 0]\n ],\n [\n [1, 1, 0],\n [0, 1, 1],\n [0, 0, 0]\n ],\n [\n [0, 1, 1],\n [1, 1, 0],\n [0, 0, 0]\n ],\n [\n [1, 1, 1],\n [0, 1, 0],\n [0, 0, 0]\n ],\n [\n [0, 0, 0, 0],\n [1, 1, 1, 1],\n [0, 0, 0, 0],\n [0, 0, 0, 0]\n ]\n];\n\nvar falling = false;\nvar fallingShape = 0;\nvar fallingx = 0;\nvar fallingy = 0;\nwhen('keydown', 'down', moveDown);\nwhen('keydown', 'right', moveRight);\nwhen('keydown', 'left', moveLeft);\nwhen('keydown', 'up', turn);\nwhen('keydown', 'space', Down);\n\n\nfor (var x = 0; x \u003c W; x++) {\n grid[x] = [];\n for (var y = 0; y \u003c H; y++) {\n grid[x][y] = {\n color: \"white\",\n status: 0,\n };\n }\n}\n\nvar clock = 0;\nforever(function() {\n print(score);\n clock++;\n if (clock%(25 - score % 15) !== 0 || !game) return;\n\n if (falling) {\n moveDown();\n } else {\n create();\n }\n});\n\nforever(function() {\n var drop = 0;\n for (let y = H-1; y \u003e= 0; y--) {\n var brick = 0;\n for (let x = W-1; x \u003e= 0; x--) {\n if (grid[x][y].status == 2) {\n brick++;\n if (drop !== 0) {\n grid[x][y+drop] = grid[x][y];\n grid[x][y] = {\n color: \"white\",\n status: 0,\n };\n }\n }\n pen.fillColor = grid[x][y].color;\n pen.drawRect(200 + x*24, y*24, 24, 24);\n }\n if (brick == W) {\n for (let x = W-1; x \u003e= 0; x--) {\n grid[x][y] = {\n color: \"white\",\n status: 0,\n };\n }\n drop++;\n score++;\n score+=drop;\n }\n }\n});\n\nfunction create() {\n falling = true;\n fallingShape = Math.floor(Math.random()* 7);\n for (var i = 0; i \u003c shapes[fallingShape].length; i++) {\n for (var j = 0; j \u003c shapes[fallingShape].length; j++) {\n if (shapes[fallingShape][i][j]) {\n if (grid[i+4][j].status !== 0) {\n end();\n }\n grid[i+4][j] = {\n color: colors[fallingShape],\n status: 1\n };\n }\n }\n }\n\n fallingx = 4;\n fallingy = 0;\n}\n\nfunction moveUp () {\n for (let x = W - 2; x \u003e= 0; x--) {\n for (let y = 0; y \u003c H; y++) {\n if (grid[x][y].status == 1) {\n var temp = grid[x][y-1];\n grid[x][y-1] = grid[x][y];\n grid[x][y] = temp;\n\n }\n }\n }\n fallingy--;\n}\n\nfunction moveDown () {\n var stuck = false;\n for (let x = 0; x \u003c W; x++) {\n for (let y = H - 1; y \u003e= 0; y--) {\n if (grid[x][y].status == 1) {\n if (y \u003c H-1) {\n if (grid[x][y+1].status == 2) {\n stuck = true;\n }\n } else {\n stuck = true;\n }\n }\n }\n }\n for (var x = 0; x \u003c W; x++) {\n for (var y = H - 1; y \u003e= 0; y--) {\n if (grid[x][y].status == 1) {\n if (stuck) {\n grid[x][y].status = 2;\n falling = false;\n } else {\n var temp = grid[x][y + 1];\n grid[x][y + 1] = grid[x][y];\n grid[x][y] = temp;\n }\n }\n }\n }\n if (!stuck) {\n fallingy++;\n }\n}\n\nfunction moveRight () {\n var stuck = false;\n for (let x = W - 1; x \u003e= 0; x--) {\n for (let y = 0; y \u003c H; y++) {\n if (grid[x][y].status == 1) {\n if (x == W-1 || grid[x+1][y].status == 2) {\n stuck = true;\n }\n }\n }\n }\n for (let x = W - 2; x \u003e= 0; x--) {\n for (let y = 0; y \u003c H; y++) {\n if (grid[x][y].status == 1) {\n if (!stuck) {\n var temp = grid[x+1][y];\n grid[x+1][y] = grid[x][y];\n grid[x][y] = temp;\n }\n }\n }\n }\n if (!stuck) {\n fallingx++;\n }\n}\n\nfunction moveLeft () {\n var stuck = false;\n for (let x = 0; x \u003c W; x++) {\n for (let y = 0; y \u003c H; y++) {\n if (grid[x][y].status == 1) {\n if (x === 0 || grid[x-1][y].status == 2) {\n stuck = true;\n }\n }\n }\n }\n for (let x = 0; x \u003c W; x++) {\n for (let y = 0; y \u003c H; y++) {\n if (grid[x][y].status == 1) {\n if (!stuck) {\n var temp = grid[x-1][y];\n grid[x-1][y] = grid[x][y];\n grid[x][y] = temp;\n }\n }\n }\n }\n if (!stuck) {\n fallingx--;\n }\n}\n\nfunction turn () {\n if (falling \u0026\u0026 fallingShape !== 0) {\n if (fallingShape == 6) {\n if (fallingx \u003e W-4 || fallingx \u003c 2 || fallingy \u003c 3) {\n return;\n }\n } else {\n if (fallingx \u003e W-3 || fallingx \u003c 1 || fallingy \u003c 2) {\n return;\n }\n }\n var current = [];\n for (let i = 0; i \u003c shapes[fallingShape].length; i++) {\n current[i] = [];\n for (let j = 0; j \u003c shapes[fallingShape].length; j++) {\n if (grid[i+fallingx][j+fallingy].color == colors[fallingShape] \u0026\u0026 grid[i+fallingx][j+fallingy].status == 1) {\n current[i][j] = 1;\n }\n }\n }\n var turned = [];\n for (let i = 0; i \u003c shapes[fallingShape].length; i++) {\n turned[i] = [];\n for (let j = 0; j \u003c shapes[fallingShape].length; j++) {\n turned[i][j] = current[j][shapes[fallingShape].length - i - 1];\n if (turned[i][j] == 1 \u0026\u0026 grid[i+fallingx][j+fallingy].status == 2) {\n return;\n }\n }\n }\n for (var i = 0; i \u003c shapes[fallingShape].length; i++) {\n for (var j = 0; j \u003c shapes[fallingShape].length; j++) {\n if (turned[i][j]) {\n grid[i+fallingx][j+fallingy] = {\n color: colors[fallingShape],\n status: 1\n };\n } else if (grid[i+fallingx][j+fallingy].status != 2) {\n grid[i+fallingx][j+fallingy] = {\n color: \"white\",\n status: 0\n };\n }\n }\n }\n }\n}\nfunction end () {\n print(score);\n stop();\n}\nfunction Down () {\n if (falling) {\n while (falling)\n moveDown();\n }\n}","created_at":"2018-05-25T10:11:50.386+08:00","updated_at":"2019-10-14T06:30:48.080+08:00","name":"俄羅斯方塊","language":"javascript","screenshot":{"url":"https://cdn8.koding.school/uploads/project/screenshot/29757/2bc58609ad84bb37dcafb82cb1ebca82.jpg"},"parent_id":2,"plugin":"","description":null,"note":null,"status":"public","like_student_ids":[],"is_featured":false,"views":188,"hashid":"jzms9z4y","is_content_changed":false,"review_status":"unsubmitted","submitted_at":null,"reviewed_at":null,"advise":null,"is_deleted":false}
[{"id":550413,"file_name":"0.png","project_id":29757,"asset_id":6,"created_at":"2018-05-25T10:11:50.394+08:00","updated_at":"2018-05-25T10:11:50.394+08:00"},{"id":550414,"file_name":"1.svg","project_id":29757,"asset_id":7,"created_at":"2018-05-25T10:11:50.396+08:00","updated_at":"2018-05-25T10:11:50.396+08:00"},{"id":550415,"file_name":"2.png","project_id":29757,"asset_id":8,"created_at":"2018-05-25T10:11:50.398+08:00","updated_at":"2018-05-25T10:11:50.398+08:00"},{"id":550416,"file_name":"0.wav","project_id":29757,"asset_id":9,"created_at":"2018-05-25T10:11:50.399+08:00","updated_at":"2018-05-25T10:11:50.399+08:00"},{"id":550417,"file_name":"1.wav","project_id":29757,"asset_id":10,"created_at":"2018-05-25T10:11:50.401+08:00","updated_at":"2018-05-25T10:11:50.401+08:00"}]
橘蘋學習平台
我的作品
檢視專案頁
匯出
複製
匯入
刪除
下載 Android APP (APK)
截圖
繁中
简中
English
日本語
1:1:1
1:1
全寬
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦
用手機掃描下方 QRCode 進行安裝
或您也可以
下載 APK
到這台電腦