-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdoc.html
91 lines (91 loc) · 4.4 KB
/
doc.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>JavaScript Gomoku 五子棋 v1.1</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
<link rel="stylesheet" href="css/five.css"/>
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a href="#" class="brand">JavaScript Gomoku 五子棋</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li class=""><a href="index.html">Home</a></li>
<li class="active"><a href="doc.html">代码PK文档</a></li>
<li><a href="http://code.google.com/p/javascript-gomoku/">About</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid">
<h1>示例代码</h1>
<p>下面是一段示例AI代码,功能是随机走棋:</p>
<pre><code>
var matrix = chessboard.getMatrix();
var getRandomCoordinate = function () {
var i = Math.floor(Math.random() * 15);
var j = Math.floor(Math.random() * 15);
return [i, j];
};
var coordinate = getRandomCoordinate();
while (true) {
if (matrix.getValueByCoordinate(coordinate) == 0) {
break;
} else {
coordinate = getRandomCoordinate();
}
}
chessboard.go(coordinate, this.color);
</code></pre>
<p>挑战者的AI代码执行环境,会得到一个<code>chessboard</code>变量,<code>chessboard</code>变量是<code>Chessboard</code>类型,它有两个最基础的方法<code>getMatrix();</code>和<code>go(coordinate, color);</code></p>
<p><code>getMatrix();</code>用来获得当前棋盘上棋子数据,它的返回值是<code>Matrix</code>类型,是对二维数组的封装</p>
<p><code>go(coordinate, color);</code>用来往棋盘上摆放一个棋子,使用方法:<code>go([0, 0], 'black');</code>,这样调用意思是在棋盘的(0,0)点(左上角),摆放一枚黑子,实际调用时,可以用环境初始化好的<code>this.color</code>替代<code>'black'</code></p>
<p>重要说明:在系统中黑棋用数字3存储,白棋用数字1存储,空白用数字0存储。挑战者的代码在计算完毕一定要调用<code>chessboard.go(coordinate, color);</code>,如果不愿意使用<code>Matrix</code>类提供的方法,可以调用<code>matrix.toArray();</code>将矩阵转换成纯数据之后利用自己的方法取值和计算。</p>
<div>
<h1>API文档</h1>
<div>
<h3>Class Chessboard</h3>
<p>棋盘类,对棋盘的基础操作和获得棋盘状态</p>
<h4>公有方法</h4>
<p>
<code>go(Array coordinate, String color) : void</code> 向棋盘上摆放棋子
</p>
<p>
<code>getMatrix() : Matrix</code> 获得棋盘当前状态数据
</p>
<p>
<code>getStep() : Number</code> 获取当前是第n步
</p>
</div>
<div>
<h3>Class Matrix</h3>
<p>矩阵类,对二维数组的封装,用来存储棋盘状态</p>
<h4>公有方法</h4>
<p>
<code>getCoordinatesByValue(Number needle) : Array</code> 获得此矩阵内所有值为needle的坐标,返回值是二维数组,例如[[0, 0], [2, 3]]
</p>
<p>
<code>getValueByCoordinate(Array coordinate) : Number</code> 获得给定坐标的值,例如getValueByCoordinate([1, 2]);
</p>
<p>
<code>copy(interchange) : Matrix</code> 复制一份当前的矩阵,如果将参数interchange设置为true,可将复制出的矩阵中1转成3,3转成1,0保持不变
</p>
<p>
<code>toArray() : Number</code> 将矩阵传换成数组
</p>
</div>
</div>
</div>
</div>
</body>
</html>