亚洲香蕉成人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
成人黄色片网站| 亚洲欧美日韩中文视频| 亚洲成人黄色在线观看| 欧美精品一本久久男人的天堂| 美日韩丰满少妇在线观看| 午夜免费在线观看精品视频| 91色精品视频在线| 欧美成人精品三级在线观看| 另类天堂视频在线观看| 欧美高清视频在线| 中文字幕亚洲自拍| 欧美一区二区三区艳史| 精品久久久在线观看| 96sao精品视频在线观看| 亚洲女同精品视频| 日本久久亚洲电影| 夜夜躁日日躁狠狠久久88av| 一个色综合导航| 在线电影欧美日韩一区二区私密| 欧美在线视频观看| 亚洲成人av片在线观看| 久久午夜a级毛片| 91精品视频免费| 97国产suv精品一区二区62| 91精品久久久久久久久久另类| 亚洲一区二区久久久久久久| 欧美亚洲激情在线| 91爱爱小视频k| 亚洲精品久久久久久久久| 精品久久久av| 久久久成人精品视频| 美女精品久久久| 国产精品自拍偷拍视频| 日韩欧美高清视频| 亚洲日韩欧美视频一区| 国产91九色视频| 5278欧美一区二区三区| 亚洲欧美激情四射在线日| 永久免费毛片在线播放不卡| 国产精品福利网站| 欧美精品18videosex性欧美| 6080yy精品一区二区三区| 久久精品在线播放| 亚洲一区二区三区sesese| 欧美小视频在线观看| 黄色一区二区在线| 国产一区二区动漫| 高清欧美性猛交xxxx| 国产在线视频91| 中文字幕欧美精品日韩中文字幕| 懂色aⅴ精品一区二区三区蜜月| 久久久免费观看视频| 成人h片在线播放免费网站| 久久九九亚洲综合| 中文字幕亚洲欧美日韩高清| 在线观看久久久久久| 国产欧美一区二区白浆黑人| 九九视频这里只有精品| 色偷偷88888欧美精品久久久| 国产精品观看在线亚洲人成网| 亚洲欧美在线播放| 亚洲第一网站免费视频| 亚洲自拍小视频免费观看| 日本亚洲欧洲色| 欧美乱大交xxxxx另类电影| 国产亚洲视频在线| 成人午夜小视频| 国产精品中文字幕在线观看| 66m—66摸成人免费视频| 久热99视频在线观看| 国产日韩综合一区二区性色av| 午夜精品一区二区三区视频免费看| 久久大大胆人体| 国产精品精品国产| 欧美激情视频一区| 91中文字幕在线| 黑人巨大精品欧美一区二区| 亚州国产精品久久久| 成人免费网站在线看| 日本国产高清不卡| 欧美一级在线播放| 亚洲毛片在线免费观看| 欧美xxxx综合视频| 欧美色另类天堂2015| 亚洲欧美精品伊人久久| 2019中文字幕全在线观看| 精品国产老师黑色丝袜高跟鞋| 亚洲无限乱码一二三四麻| 精品久久久999| 亚洲欧美日韩精品久久亚洲区| 亚洲欧美在线一区| 欧美日韩国产限制| 成人国产在线视频| 日韩成人中文字幕在线观看| 色综合导航网站| 91免费欧美精品| 日韩综合视频在线观看| 成人在线观看视频网站| 国产成+人+综合+亚洲欧洲| 欧美日韩亚洲网| 久久精品这里热有精品| 亚洲精品一二区| 日韩一区在线视频| 亚洲美腿欧美激情另类| 国产精品伦子伦免费视频| 国产精品高潮呻吟久久av无限| 国产亚洲欧美aaaa| 日韩av在线看| 日韩毛片在线看| 久久91超碰青草是什么| 欧美成人一二三| 精品亚洲va在线va天堂资源站| 九九热精品视频| 91成品人片a无限观看| 国产精品成av人在线视午夜片| 精品美女国产在线| 亚洲欧美制服中文字幕| 国产精品电影在线观看| 在线观看91久久久久久| 国产精品久久久久一区二区| 久久久99久久精品女同性| 日韩专区在线播放| 色偷偷偷综合中文字幕;dd| 亚洲视频在线观看| 久久成人18免费网站| 国产自产女人91一区在线观看| 欧美性xxxxx极品娇小| 日本乱人伦a精品| 国产成人一区二区三区小说| 国产一区av在线| 久久久亚洲福利精品午夜| 国产精品h在线观看| 久久久视频免费观看| 欧美精品videossex性护士| 国产精品视频大全| 亚洲无av在线中文字幕| 久久久久久伊人| 欧美中文在线观看国产| 欧美电影电视剧在线观看| 欧洲亚洲免费在线| 国产精品久久久久国产a级| 91精品国产高清久久久久久| 国模精品视频一区二区| 欧美影院成年免费版| 国产精品中文字幕在线观看| 欧美高清在线播放| 亚洲九九九在线观看| 亚洲激情自拍图| 国产不卡精品视男人的天堂| www.国产一区| 精品国产户外野外| 午夜免费在线观看精品视频| 91成人国产在线观看| 国产美女久久精品香蕉69| 欧美裸体xxxx极品少妇软件| 亚洲国产成人精品一区二区| 久久综合电影一区| 国内精品一区二区三区四区| 久久国产视频网站| 日韩精品久久久久久久玫瑰园| 亚洲一区二区三区四区视频| 欧美性高潮床叫视频| 亚洲一区国产精品| 国模私拍一区二区三区|