h5+css3 實現五子棋

/*

*title:五子棋

*disc: 運用 h5新標籤實現五子棋的棋盤和棋子的繪製

*編輯器:sublime Text3

*/

運用到的canvas屬性:

fillStyle :設置或返回用於填充繪畫的顏色、漸變或模式

運用到的canvas方法:

createLinearGradient()  創建線性漸變(用在畫布內容上)

addColorStop()  規定漸變對象中的顏色和停止位置

rect() 創建矩形

arc()  繪製弧形/圓形

drawImage() //向畫布上繪製圖像/畫布或視頻

fillRect()  繪製”被填充“的矩形

beginPath()   起始一條路徑,或重置當前路徑

closePath()  創建從當前點回到起始點的路徑


html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>五子棋</title>
<link rel="stylesheet" type="text/css" href="css/five.css">
</head>
<body>
<canvas id="chess" width="450px" height="450px">Your browser does not support the canvas element.</canvas>
<script type="text/javascript" src="js/five.js"></script>
</body>
</html>


css:


*{margin:0;padding:0;}
canvas {
display:block;
margin: 50px auto;
box-shadow:-2px -2px 2px #EFEFEF, 5px 5px 5px #B9B9B9;
}

js:

var chess = document.getElementById('chess');
var context = chess.getContext('2d');
context.strokeStyle = '#BFBFBF';
//繪製背景圖
var logo = new Image();
logo.src="./logo.png";
logo.onload = function(){ 
context.drawImage(logo,0,0,450,450);
drawChessBoard();
}
var me = true; //切換黑棋或白棋
var chessArray = []; //存儲鼠標點擊的位置
for(var i=0; i<15; i++){
chessArray[i]=[];
for(var j=0; j<15; j++){
chessArray[i][j] =0;
}


}
//繪製棋盤
var drawChessBoard = function(){
for(var i=0; i<15; i++){
context.moveTo(15 + i*30,15);
context.lineTo(15 + i*30,435);
context.stroke();
context.moveTo(15,15 + i*30);
context.lineTo(435,15 + i*30);
context.stroke();
}
}
//落子的位置
var oneStep = function(i,j,me){
context.beginPath();
context.arc(15 + i*30,15 + j*30,13,0,2 * Math.PI);
context.closePath();
var gradient = context.createRadialGradient(15 + i*30+2,15 + j*30-2,13,15 + i*30+2,15 + j*30-2,0);
if(me){
gradient.addColorStop(0,"#0A0A0A");
gradient.addColorStop(1,"#636766");
}else{
gradient.addColorStop(0,"#D1D1D1");
gradient.addColorStop(1,"#F9F9F9");
}
context.fillStyle=gradient;
context.fill();
}
//鼠標點擊落子
chess.onclick = function(e){
var x = e.offsetX;
var y = e.offsetY;
var i = Math.floor(x/30);
var j = Math.floor(y/30);
if(chessArray[i][j] == 0){
oneStep(i,j,me);
if(me){
chessArray[i][j] == 1;
}else{
chessArray[i][j] == 2;
}
me = !me;
}
}

繪製“被填充”的矩形
起始一條路徑,或重置當前路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章