站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)

介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)

免費(fèi)學(xué)習(xí)推薦:js視頻教程

需求分析以及代碼實(shí)現(xiàn)

第一節(jié) 畫(huà)布樣式布局

1. canvas進(jìn)行畫(huà)布的設(shè)計(jì)

  1. 新建CSS文件夾,新建style.css文件;

  2. 在style.css文件里進(jìn)行canvas編寫(xiě);

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

  4. 參數(shù)解釋

margin 50px auto// 是指畫(huà)布居中;

box-shadow: -2px -2px 2px #EFEFEF,5px 5px 5px #B9B9B9//
offset-x:(如這里的-2px)必需,取值正負(fù)都可。offset-x水平陰影的位置。
offset-y:(如這里的-2px)必需,取值正負(fù)都可。offset-y垂直陰影的位置。
blur:(如這里的2px)可選,只能取正值。blur-radius陰影模糊半徑,0即無(wú)模糊效果,值越大陰影邊緣越模糊。
color:可選,陰影的顏色。如果不設(shè)置,瀏覽器會(huì)取默認(rèn)顏色,通常是黑色,但各瀏覽器默認(rèn)顏色有差異,建議不要省略。
**

2. 效果圖

介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)

第二節(jié) 棋盤(pán)設(shè)計(jì)

1. 大小設(shè)計(jì)

分成14*14大小的矩形框,總長(zhǎng)450px,寬450px,其中兩邊留白共占15px,每個(gè)小的矩形框30px乘30px

2. js代碼編寫(xiě)(繪制)

var chess = document.getElementById('chess');var context = chess.getContext('2d');//畫(huà)一個(gè)二維畫(huà)布context.strokeStyle = "#BFBFBF";var drawChessBoard = function (){     for (var i=0; i<15; i++){         context.moveTo(15+i*30,15);         context.lineTo(15+i*30,435);         context.stroke();//畫(huà)豎線         context.moveTo(15,15+i*30);         context.lineTo(435,15+i*30);         context.stroke();//畫(huà)橫線     }}drawChessBoard();//調(diào)用畫(huà)棋盤(pán)的函數(shù)

3. 效果圖

介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)

第三節(jié) 棋子設(shè)計(jì)

1. 代碼編寫(xiě)

//初始化位置數(shù)組var chessBoard = [];for(var i = 0;i<15;i++){     chessBoard[i] = [];     for(var j=0;j<15;j++){         chessBoard[i][j] = 0;     }}
//畫(huà)棋子var onstep = function (i, j, flag){//i,j代表棋子的索引位置,flag標(biāo)記黑棋白棋     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(flag){//如果flag為真則黑棋         gradient.addColorStop(0, "#0A0A0A");         gradient.addColorStop(1,"#636766")     }else {//白棋         gradient.addColorStop(0, "#D1D1D1");         gradient.addColorStop(1,"#F9F9F9");     }     context.fillStyle=gradient;     context.fill();}
//點(diǎn)擊時(shí)觸發(fā),獲得所點(diǎn)擊的位置,然后判斷該位置有沒(méi)有棋子,若沒(méi)有也就是if判斷,調(diào)用onstep函數(shù)畫(huà)黑棋(or白棋)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(chessBoard[i][j]==0){         onstep(i,j,flag);        chessBoard[i][j] = 1;         flag = !flag;     }}

2. 效果圖

(自己在棋盤(pán)上隨機(jī)點(diǎn)擊會(huì)輪流出現(xiàn)黑棋和白棋)
介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)

第四節(jié) 背景添加

1. 代碼編寫(xiě)

var pic = new Image();pic.src = "images/background.jpg";pic.onload = function (){     context.drawImage(pic, 0, 0, 450, 450);     drawChessBoard();}//注:棋盤(pán)設(shè)計(jì)中js編寫(xiě)最后一句可以刪除了,因?yàn)樵谶@里調(diào)用了drawChessBoard();

2. 效果圖

介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)
這里是index.html里面的代碼

<!doctype html><html lang="en"><head>     <meta charset="UTF-8">     <title>五子棋</title>     <link rel="stylesheet" type="text/css" href="css/style.css"></head><body><canvas id="chess" width="450px" height="450px"></canvas><script type="text/javascript" src="js/script.js"></script></body></html>

項(xiàng)目架構(gòu)
介紹JS實(shí)現(xiàn)五子棋界面設(shè)計(jì)

這樣簡(jiǎn)易的五子棋UI界面就設(shè)計(jì)好了,趕緊動(dòng)手試一試哦!

相關(guān)免費(fèi)學(xué)習(xí)推薦:javascript(視頻)

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
麻豆精品成人免费国产片| 牛牛在线精品免费视频观看| 亚洲高清日韩精品第一区| 最新精品露脸国产在线| 国产精品白丝jkav网站| 中文字幕av日韩精品一区二区| 精品亚洲福利一区二区| 人人妻人人澡人人爽人人精品浪潮| 精品国产一区二区三区四区| 99精品国产三级在线观看| 国产亚洲精品一品区99热| 91视频精品全国免费观看| 国产精品户外野外| 亚洲精品视频免费| 日韩a级毛片免费视频| 久久精品国产亚洲av日韩| 免费国产精品视频| 国产精品午夜小视频观看| 日韩精品无码成人专区| 国产精品成人国产乱| 国产精品你懂的在线播放| 亚洲Av永久无码精品黑人| 亚洲中文字幕精品久久| 亚洲色精品VR一区区三区| 国产精品福利电影| 在线欧美精品一区二区三区| 99热在线精品免费全部my| 国产精品久久久久久久久久影院 | 国产精品自拍一区| 久久精品国产四虎| 国产精品爽黄69天堂a| 国产精品爽黄69天堂a| 久久亚洲精品国产精品婷婷| 国产精品久久新婚兰兰| 亚洲精品国产综合久久久久紧| 中文字幕日韩精品一区二区三区| 亚洲精品天堂无码中文字幕| 国产精品成人免费视频网站京东 | 亚洲精品精华液一区二区| 亚洲中文字幕精品久久| 精品综合久久久久久蜜月|