亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Javascript和HTML5利用canvas構建Web五子棋游戲實現算法

2019-11-20 22:30:52
字體:
來源:轉載
供稿:網友
這只是一個簡單的JAVAscript和HTML5小程序,沒有實現人機對戰。
五子棋棋盤落子點對應的二維數組。數組的元素對應落子點。比如數組元素值為0表示該元素對應的落子點沒有棋子,數組元素值為1表示該元素對應的落子點有白棋子,數組元素值為2表示該元素對應的落子點有黑棋子;
判斷五子棋贏棋的算法是通過對五子棋棋盤落子點對應的二維數組的操作來實現的。

判斷五子棋贏棋算法
下邊的函數可以實現判斷五子棋贏棋的算法,也可以按照教材中相應的算法實現。
其中函數的參數xx.yy為數組下標,chess數組實現五子棋棋盤落子點的數據結構映射。
算法的思想方法是:以當前落子點對應的下標為基點,向其周圍8個方向進行搜索,如果有同色子連五子,返回1,或2,否則返回0。返回1代表白棋方勝,返回2代表黑棋方勝。返回0代表沒有發生贏棋數據結構狀態。
 

 
復制代碼 代碼如下:

<!DOCTYPE html>
< html xmlns="http://www.w3.org/1999/xhtml">
< head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
body {
margin: 10px;
}
</style>
<script type="text/javascript">
var canvas;
var context;
var isWhite = true;//設置是否該輪到白棋
var isWell = false;//設置該局棋盤是否贏了,如果贏了就不能再走了
var img_b = new Image();
img_b.src = "images/b.png";//白棋圖片
var img_w = new Image();
img_w.src = "images/w.png";//黑棋圖片
var chessData = new Array(15);//這個為棋盤的二維數組用來保存棋盤信息,初始化0為沒有走過的,1為白棋走的,2為黑棋走的
for (var x = 0; x < 15; x++) {
chessData[x] = new Array(15);
for (var y = 0; y < 15; y++) {
chessData[x][y] = 0;
}
}
function drawRect() {//頁面加載完畢調用函數,初始化棋盤
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
for (var i = 0; i <= 640; i += 40) {//繪制棋盤的線
context.beginPath();
context.moveTo(0, i);
context.lineTo(640, i);
context.closePath();
context.stroke();
context.beginPath();
context.moveTo(i, 0);
context.lineTo(i, 640);
context.closePath();
context.stroke();
}
}
function play(e) {//鼠標點擊時發生
var x = parseInt((e.clientX - 20) / 40);//計算鼠標點擊的區域,如果點擊了(65,65),那么就是點擊了(1,1)的位置
var y = parseInt((e.clientY - 20) / 40);
if (chessData[x][y] != 0) {//判斷該位置是否被下過了
alert("你不能在這個位置下棋");
return;
}
if (isWhite) {
isWhite = false;
drawChess(1, x, y);
}
else {
isWhite = true;
drawChess(2, x, y);
}
}
function drawChess(chess, x, y) {//參數為,棋(1為白棋,2為黑棋),數組位置
if (isWell == true) {
alert("已經結束了,如果需要重新玩,請刷新");
return;
}
if (x >= 0 && x < 15 && y >= 0 && y < 15) {
if (chess == 1) {
context.drawImage(img_w, x * 40 + 20, y * 40 + 20);//繪制白棋
chessData[x][y] = 1;
}
else {
context.drawImage(img_b, x * 40 + 20, y * 40 + 20);
chessData[x][y] = 2;
}
judge(x, y, chess);
}
}
function judge(x, y, chess) {//判斷該局棋盤是否贏了
var count1 = 0;
var count2 = 0;
var count3 = 0;
var count4 = 0;
//左右判斷
for (var i = x; i >= 0; i--) {
if (chessData
[y] != chess) {
break;
}
count1++;
}
for (var i = x + 1; i < 15; i++) {
if (chessData
[y] != chess) {
break;
}
count1++;
}
//上下判斷
for (var i = y; i >= 0; i--) {
if (chessData[x]
!= chess) {
break;
}
count2++;
}
for (var i = y + 1; i < 15; i++) {
if (chessData[x]
!= chess) {
break;
}
count2++;
}
//左上右下判斷
for (var i = x, j = y; i >= 0, j >= 0; i--, j--) {
if (chessData
[j] != chess) {
break;
}
count3++;
}
for (var i = x + 1, j = y + 1; i < 15, j < 15; i++, j++) {
if (chessData
[j] != chess) {
break;
}
count3++;
}
//右上左下判斷
for (var i = x, j = y; i >= 0, j < 15; i--, j++) {
if (chessData
[j] != chess) {
break;
}
count4++;
}
for (var i = x + 1, j = y - 1; i < 15, j >= 0; i++, j--) {
if (chessData
[j] != chess) {
break;
}
count4++;
}
if (count1 >= 5 || count2 >= 5 || count3 >= 5 || count4 >= 5) {
if (chess == 1) {
alert("白棋贏了");
}
else {
alert("黑棋贏了");
}
isWell = true;//設置該局棋盤已經贏了,不可以再走了
}
}
</script>
< /head>
< body onload="drawRect()">
<div>
<canvas width="640" id="canvas" onmousedown="play(event)" height="640">你的瀏覽器不支持HTML5 canvas,請使用 google chrome 瀏覽器 打開.
</canvas>
</div>
< /body>
< /html>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄色成人av网| 成人性生交大片免费看视频直播| 亚洲国产成人精品久久| 国产精品69精品一区二区三区| 久久99国产精品久久久久久久久| 欧美日韩成人黄色| 午夜精品福利在线观看| 91在线视频免费| 日韩欧美福利视频| 日韩中文在线中文网在线观看| 国产精品丝袜白浆摸在线| 亚洲最大激情中文字幕| 日韩高清免费观看| 精品久久久久久中文字幕| 精品久久久久久久久久国产| 欧美在线国产精品| 日韩中文字幕在线精品| 亚洲欧美日韩中文视频| 高清视频欧美一级| 欧美又大又硬又粗bbbbb| 91欧美激情另类亚洲| 日韩成人在线视频观看| 日韩经典中文字幕在线观看| 国产精品国产三级国产专播精品人| 亚洲精品网址在线观看| 欧美精品999| 欧美激情一区二区三区高清视频| 国产日韩在线播放| 福利视频一区二区| 精品久久久久久国产91| 国产在线观看一区二区三区| 国产日韩中文在线| 亚洲欧美中文日韩v在线观看| 久久精品免费电影| 成人激情电影一区二区| 91精品视频大全| 91久久精品一区| 欧美性开放视频| 精品国产成人在线| 97成人精品视频在线观看| 欧美黄色片视频| 成年无码av片在线| 日韩中文视频免费在线观看| 亚洲无限av看| 久久久视频免费观看| 成人精品一区二区三区电影黑人| 国产欧美一区二区三区久久| 国产精品久久久久久久久久久新郎| 日韩av在线免费| 国产成人精品久久亚洲高清不卡| 久久精品亚洲国产| 欧美日韩精品二区| 国产精品18久久久久久麻辣| 日韩美女在线观看一区| 久久久黄色av| 亚洲成人国产精品| 亚洲影院污污.| 欧美一级视频在线观看| 国产精品高清免费在线观看| 亚洲最大在线视频| 亚洲精品福利免费在线观看| 久久久久久久999精品视频| 亚洲人成77777在线观看网| 97香蕉久久超级碰碰高清版| 欧美另类在线播放| 欧美另类老女人| 久久久久久久91| 久久精品视频导航| 欧美不卡视频一区发布| 精品久久久久久中文字幕| 欧美性在线视频| 日韩视频免费看| 亚洲一区av在线播放| 国产精品视频久久| 国产日韩欧美自拍| 久久躁狠狠躁夜夜爽| 国产性色av一区二区| 精品久久久在线观看| 日本中文字幕不卡免费| 亚洲福利视频网站| 国产一区二区三区视频| 狠狠色香婷婷久久亚洲精品| 久久伊人精品一区二区三区| 精品久久久在线观看| 亚洲欧美日韩成人| 亚洲欧美日韩爽爽影院| 欧美—级a级欧美特级ar全黄| 超碰日本道色综合久久综合| 久久久久国色av免费观看性色| 精品性高朝久久久久久久| 91精品久久久久久久久久久| 91av在线不卡| 欧美有码在线观看| 国产精品久久久久久久久免费看| 精品国产福利在线| 亚洲激情视频在线观看| 国内精品久久久久久久| www.国产精品一二区| 中文字幕亚洲欧美一区二区三区| 欧美亚洲在线播放| 97在线视频国产| 欧美大肥婆大肥bbbbb| 日韩欧美国产网站| 日韩在线视频一区| 91探花福利精品国产自产在线| 国产成人精品亚洲精品| 亚洲999一在线观看www| 久久久综合av| 精品国产一区二区三区久久| 欧美在线视频一区二区| 欧美日韩xxx| 高清在线视频日韩欧美| 久久久久久国产精品美女| 国产不卡av在线免费观看| 欧美大片在线看免费观看| 欧美激情综合色综合啪啪五月| 亚洲97在线观看| 日韩精品极品在线观看播放免费视频| 性夜试看影院91社区| 91精品视频一区| 在线成人激情黄色| 久青草国产97香蕉在线视频| 亚洲最大福利网| 亚洲一区二区三区香蕉| 高清亚洲成在人网站天堂| 大胆欧美人体视频| 国产一区香蕉久久| 亚洲乱码国产乱码精品精天堂| 青青久久aⅴ北条麻妃| 69av在线视频| 国产精品极品美女粉嫩高清在线| 91精品国产色综合久久不卡98| 亚洲欧美在线磁力| 久久夜精品香蕉| 日韩美女福利视频| 亚洲欧洲第一视频| 最新中文字幕亚洲| 国产91色在线播放| 欧美精品免费播放| 成人黄色片在线| 亚洲新中文字幕| 欧美中文字幕在线观看| 中文字幕日韩专区| 亚洲精品理论电影| 91精品视频在线播放| 日韩在线观看免费高清| 欧美视频一二三| 91精品国产色综合久久不卡98| 久久人人爽人人爽爽久久| 亚洲精品欧美一区二区三区| 亚洲第一精品夜夜躁人人爽| 日韩成人在线播放| 亚洲乱码国产乱码精品精| 国产亚洲在线播放| 亚洲精品久久久久| 国产美女直播视频一区| 久久好看免费视频| 日韩亚洲第一页| 日本成人激情视频| 久久综合免费视频| 国产精品欧美久久久| 国产一区红桃视频| 亚洲高清久久久久久| 中文字幕日韩精品在线观看|