影片341
JS程式碼
let canvas = document.getElementById("tetris");
let scoreboard = document.getElementById("score");
let ctx = canvas.getContext("2d");
ctx.scale(30,30);
const FOUR = [ //設定
[[0,1,0,0],[0,1,0,0],[0,1,0,0],[0,1,0,0]],//I紅
[[0,1,0], [0,1,0], [1,1,0]], //J橘
[[0,1,0], [0,1,0], [0,1,1]], //L黃
[[1,1,0], [0,1,1], [0,0,0]], //Z綠
[[0,1,1], [1,1,0], [0,0,0]], //S藍
[[1,1,1], [0,1,0], [0,0,0]], //T靛
[[1,1], [1,1],]]; //M紫,正方形,以上共7個
const COLORS = [
"lightgray","red","orange","yellow","darkgreen","blue","indigo","purple"];
const ROWS = 20; //列數ROWS
const COLS = 10; //欄數COLumnS
let grid = generateGrid(); //呼叫函數產生20x10格子
let fallingPieceObj = null;
let score = 0;
setInterval(newGameState,200); //設定間隔500
function newGameState(){ //函數
checkGrid();
if(!fallingPieceObj){ //如果空的,產生新方塊
fallingPieceObj = randomPieceObject();
renderPiece();}; //新方塊
moveDown();} //繼續往下
function checkGrid(){ //函數逐列檢查是否滿格rowFiller?
let count = 0;
for(let i=0;i3){score+=100} //刪4列100分
document.getElementById("score").innerHTML = "分數: " + score;}
function generateGrid(){ //函數一開始就設定格子
let grid = []; //宣告空白陣列[]
for(let i=0; i=0 && p=0 && q0){ return true;};}
else{ return true;}; }; };};
return false;}
function renderGame(){
for(let i=0; i
CSS程式碼
*{ margin: 0;
padding: 0;
box-sizing: border-box;}
body{
display: flex;
height: 90vh;
align-items: center;
justify-content: space-evenly;
flex-direction: column;
background-color: whitesmoke;}
#tetris{
background-color: white;
box-shadow: 0 0 10px 2px lightgrey;}
h2{background-color: black;
color:white;
border: solid 5px red;
}
HTML程式碼
<meta charset="UTF-8">
<title>劉任昌改寫mohd-aman俄羅斯方塊</title>
<link rel="stylesheet" href="./style.css">
<h1 id="score">分數: 0</h1>
<canvas id="tetris" width="430" height="600"></canvas>
<script src="./script.js"></script>
留言
張貼留言