<!DOCTYPE html>
<html>
<head lang=
"en"
>
<meta charset=
"UTF-8"
>
<title></title>
<style>
* {
padding: 0;
margin: 0;
}
canvas {
margin: 10px;
border: 2px solid #000;
}
#box {
display: inline-block;
position: absolute;
margin-top: 200px;
margin-left: 100px;
}
span {
font: 24px
"微软雅黑"
;
display: inline-block;
height: 50px;
}
input {
margin-top: 30px;
display: block;
width: 100px;
height: 50px;
font: 16px
"微软雅黑"
;
color: #fff;
background-color: #0099cc;
}
</style>
</head>
<body>
<canvas width=
"640"
height=
"640"
id=
"cas"
>
您的浏览器不支持canvas,请升级到最新的浏览器
</canvas>
<p id=
"box"
>
<span id=
"txt"
></span>
<input type=
"button"
id=
"btn"
value=
"重新开始"
/>
</p>
<script>
var
flag = true;
var
isWin = false;
var
step = 40;
var
txt = document.getElementById(
"txt"
);
var
btn = document.getElementById(
"btn"
);
var
cas = document.getElementById(
"cas"
);
var
ctx = cas.getContext(
"2d"
);
var
img_b =
new
Image();
img_b.src =
"imgs/b.png"
;
var
img_w =
new
Image();
img_w.src =
"imgs/w.png"
;
var
arr =
new
Array(15);
for
(
var
i = 0; i < 15; i++) {
arr[i] =
new
Array(15);
for
(
var
j = 0; j < 15; j++) {
arr[i][j] = 0;
}
}
function
drawLine() {
for
(
var
i = 0; i < cas.width / step; i++) {
ctx.moveTo((i + 1) * step, 0);
ctx.lineTo((i + 1) * step, cas.height);
ctx.moveTo(0, (i + 1) * step);
ctx.lineTo(cas.width, (i + 1) * step);
ctx.stroke();
}
}
cas.onclick =
function
(e) {
if
(isWin) {
alert(
"游戏已经结束,请刷新重新开始!"
);
return
0;
}
var
x = (e.clientX - 10 - 20) / 40;
var
y = (e.clientY - 10 - 20) / 40;
x = parseInt(x);
y = parseInt(y);
if
(x < 0 || x >= 15 || y < 0 || y >= 15) {
return
;
}
if
(arr[x][y] != 0) {
alert(
"你不能在这个位置下棋"
);
return
;
}
if
(flag) {
flag = false;
drawChess(1, x, y);
}
else
{
flag = true;
drawChess(2, x, y);
}
}
function
drawChess(num, x, y) {
var
x0 = x * step + 25;
var
y0 = y * step + 25;
if
(num == 1) {
ctx.drawImage(img_w, x0, y0);
arr[x][y] = 1;
}
else
if
(num == 2) {
ctx.drawImage(img_b, x0, y0);
arr[x][y] = 2;
}
judge(num, x, y);
}
function
judge(num, x, y) {
var
n1 = 0,
n2 = 0,
n3 = 0,
n4 = 0;
for
(
var
i = x; i >= 0; i--) {
if
(arr[i][y] != num) {
break
;
}
n1++;
}
for
(
var
i = x + 1; i < 15; i++) {
if
(arr[i][y] != num) {
break
;
}
n1++;
}
for
(
var
i = y; i >= 0; i--) {
if
(arr[x][i] != num) {
break
;
}
n2++;
}
for
(
var
i = y + 1; i < 15; i++) {
if
(arr[x][i] != num) {
break
;
}
n2++;
}
for
(
var
i = x, j = y; i >=0, j >= 0; i--, j--) {
if
(i < 0 || j < 0 || arr[i][j] != num) {
break
;
}
n3++;
}
for
(
var
i = x+1, j = y+1; i < 15, j < 15; i++, j++) {
if
(i >= 15 || j >= 15 || arr[i][j] != num) {
break
;
}
n3++;
}
for
(
var
i = x, j = y; i >= 0, j < 15; i--, j++) {
if
(i < 0 || j >= 15 || arr[i][j] != num) {
break
;
}
n4++;
}
for
(
var
i = x+1, j = y-1; i < 15, j >= 0; i++, j--) {
if
(i >= 15 || j < 0 || arr[i][j] != num) {
break
;
}
n4++;
}
var
str;
if
(n1 >= 5 || n2 >= 5 || n3 >= 5 || n4 >= 5) {
if
(num == 1) {
str =
"白棋赢了,游戏结束!"
}
else
if
(num == 2) {
str =
"黑棋赢了,游戏结束!"
}
txt.innerHTML = str;
isWin = true;
}
}
btn.onclick =
function
() {
flag = true;
isWin = false;
for
(
var
i = 0; i < 15; i++) {
for
(
var
j = 0; j < 15; j++) {
arr[i][j] = 0;
}
}
ctx.clearRect(0, 0, 640, 640);
txt.innerHTML =
""
;
drawLine();
}
drawLine();
</script>
</body>
</html>