807 lines
15 KiB
Python
807 lines
15 KiB
Python
|
|
|
|
class ChineseCheckersBoard:
|
|
|
|
def __init__(self):
|
|
self.squareList = []
|
|
for x in xrange(121):
|
|
self.squareList.append(CheckersSquare(x))
|
|
|
|
self.squareList[0].setAdjacent([None,
|
|
1,
|
|
2,
|
|
None,
|
|
None,
|
|
None])
|
|
self.squareList[1].setAdjacent([None,
|
|
3,
|
|
4,
|
|
2,
|
|
0,
|
|
None])
|
|
self.squareList[2].setAdjacent([1,
|
|
4,
|
|
5,
|
|
None,
|
|
None,
|
|
0])
|
|
self.squareList[3].setAdjacent([None,
|
|
6,
|
|
7,
|
|
4,
|
|
1,
|
|
None])
|
|
self.squareList[4].setAdjacent([3,
|
|
7,
|
|
8,
|
|
5,
|
|
2,
|
|
1])
|
|
self.squareList[5].setAdjacent([4,
|
|
8,
|
|
9,
|
|
None,
|
|
None,
|
|
2])
|
|
self.squareList[6].setAdjacent([None,
|
|
14,
|
|
15,
|
|
7,
|
|
3,
|
|
None])
|
|
self.squareList[7].setAdjacent([6,
|
|
15,
|
|
16,
|
|
8,
|
|
4,
|
|
3])
|
|
self.squareList[8].setAdjacent([7,
|
|
16,
|
|
17,
|
|
9,
|
|
5,
|
|
4])
|
|
self.squareList[9].setAdjacent([8,
|
|
17,
|
|
18,
|
|
None,
|
|
None,
|
|
5])
|
|
self.squareList[10].setAdjacent([None,
|
|
None,
|
|
23,
|
|
11,
|
|
None,
|
|
None])
|
|
self.squareList[11].setAdjacent([10,
|
|
23,
|
|
24,
|
|
12,
|
|
None,
|
|
None])
|
|
self.squareList[12].setAdjacent([11,
|
|
24,
|
|
25,
|
|
13,
|
|
None,
|
|
None])
|
|
self.squareList[13].setAdjacent([12,
|
|
25,
|
|
26,
|
|
14,
|
|
None,
|
|
None])
|
|
self.squareList[14].setAdjacent([13,
|
|
26,
|
|
27,
|
|
15,
|
|
6,
|
|
None])
|
|
self.squareList[15].setAdjacent([14,
|
|
27,
|
|
28,
|
|
16,
|
|
7,
|
|
6])
|
|
self.squareList[16].setAdjacent([15,
|
|
28,
|
|
29,
|
|
17,
|
|
8,
|
|
7])
|
|
self.squareList[17].setAdjacent([16,
|
|
29,
|
|
30,
|
|
18,
|
|
9,
|
|
8])
|
|
self.squareList[18].setAdjacent([17,
|
|
30,
|
|
31,
|
|
19,
|
|
None,
|
|
9])
|
|
(self.squareList[19].setAdjacent([18,
|
|
31,
|
|
32,
|
|
20,
|
|
None,
|
|
None]),)
|
|
self.squareList[20].setAdjacent([19,
|
|
32,
|
|
33,
|
|
21,
|
|
None,
|
|
None])
|
|
self.squareList[21].setAdjacent([20,
|
|
33,
|
|
34,
|
|
22,
|
|
None,
|
|
None])
|
|
self.squareList[22].setAdjacent([21,
|
|
34,
|
|
None,
|
|
None,
|
|
None,
|
|
None])
|
|
self.squareList[23].setAdjacent([None,
|
|
None,
|
|
35,
|
|
24,
|
|
11,
|
|
10])
|
|
self.squareList[24].setAdjacent([23,
|
|
35,
|
|
36,
|
|
25,
|
|
12,
|
|
11])
|
|
self.squareList[25].setAdjacent([24,
|
|
36,
|
|
37,
|
|
26,
|
|
13,
|
|
12])
|
|
self.squareList[26].setAdjacent([25,
|
|
37,
|
|
38,
|
|
27,
|
|
14,
|
|
13])
|
|
self.squareList[27].setAdjacent([26,
|
|
38,
|
|
39,
|
|
28,
|
|
15,
|
|
14])
|
|
self.squareList[28].setAdjacent([27,
|
|
39,
|
|
40,
|
|
29,
|
|
16,
|
|
15])
|
|
self.squareList[29].setAdjacent([28,
|
|
40,
|
|
41,
|
|
30,
|
|
17,
|
|
16])
|
|
self.squareList[30].setAdjacent([29,
|
|
41,
|
|
42,
|
|
31,
|
|
18,
|
|
17])
|
|
self.squareList[31].setAdjacent([30,
|
|
42,
|
|
43,
|
|
32,
|
|
19,
|
|
18])
|
|
self.squareList[32].setAdjacent([31,
|
|
43,
|
|
44,
|
|
33,
|
|
20,
|
|
19])
|
|
self.squareList[33].setAdjacent([32,
|
|
44,
|
|
45,
|
|
34,
|
|
21,
|
|
20])
|
|
self.squareList[34].setAdjacent([33,
|
|
45,
|
|
None,
|
|
None,
|
|
22,
|
|
21])
|
|
self.squareList[35].setAdjacent([None,
|
|
None,
|
|
46,
|
|
36,
|
|
24,
|
|
23])
|
|
self.squareList[36].setAdjacent([35,
|
|
46,
|
|
47,
|
|
37,
|
|
25,
|
|
24])
|
|
self.squareList[37].setAdjacent([36,
|
|
47,
|
|
48,
|
|
38,
|
|
26,
|
|
25])
|
|
self.squareList[38].setAdjacent([37,
|
|
48,
|
|
49,
|
|
39,
|
|
27,
|
|
26])
|
|
self.squareList[39].setAdjacent([38,
|
|
49,
|
|
50,
|
|
40,
|
|
28,
|
|
27])
|
|
self.squareList[40].setAdjacent([39,
|
|
50,
|
|
51,
|
|
41,
|
|
29,
|
|
28])
|
|
self.squareList[41].setAdjacent([40,
|
|
51,
|
|
52,
|
|
42,
|
|
30,
|
|
29])
|
|
self.squareList[42].setAdjacent([41,
|
|
52,
|
|
53,
|
|
43,
|
|
31,
|
|
30])
|
|
self.squareList[43].setAdjacent([42,
|
|
53,
|
|
54,
|
|
44,
|
|
32,
|
|
31])
|
|
self.squareList[44].setAdjacent([43,
|
|
54,
|
|
55,
|
|
45,
|
|
33,
|
|
32])
|
|
self.squareList[45].setAdjacent([44,
|
|
55,
|
|
None,
|
|
None,
|
|
34,
|
|
33])
|
|
self.squareList[46].setAdjacent([None,
|
|
None,
|
|
56,
|
|
47,
|
|
36,
|
|
35])
|
|
self.squareList[47].setAdjacent([46,
|
|
56,
|
|
57,
|
|
48,
|
|
37,
|
|
36])
|
|
self.squareList[48].setAdjacent([47,
|
|
57,
|
|
58,
|
|
49,
|
|
38,
|
|
37])
|
|
self.squareList[49].setAdjacent([48,
|
|
58,
|
|
59,
|
|
50,
|
|
39,
|
|
38])
|
|
self.squareList[50].setAdjacent([49,
|
|
59,
|
|
60,
|
|
51,
|
|
40,
|
|
39])
|
|
self.squareList[51].setAdjacent([50,
|
|
60,
|
|
61,
|
|
52,
|
|
41,
|
|
40])
|
|
self.squareList[52].setAdjacent([51,
|
|
61,
|
|
62,
|
|
53,
|
|
42,
|
|
41])
|
|
self.squareList[53].setAdjacent([52,
|
|
62,
|
|
63,
|
|
54,
|
|
43,
|
|
42])
|
|
self.squareList[54].setAdjacent([53,
|
|
63,
|
|
64,
|
|
55,
|
|
44,
|
|
43])
|
|
self.squareList[55].setAdjacent([54,
|
|
64,
|
|
None,
|
|
None,
|
|
45,
|
|
44])
|
|
self.squareList[56].setAdjacent([None,
|
|
65,
|
|
66,
|
|
57,
|
|
47,
|
|
46])
|
|
self.squareList[57].setAdjacent([56,
|
|
66,
|
|
67,
|
|
58,
|
|
48,
|
|
47])
|
|
self.squareList[58].setAdjacent([57,
|
|
67,
|
|
68,
|
|
59,
|
|
49,
|
|
48])
|
|
self.squareList[59].setAdjacent([58,
|
|
68,
|
|
69,
|
|
60,
|
|
50,
|
|
49])
|
|
self.squareList[60].setAdjacent([59,
|
|
69,
|
|
70,
|
|
61,
|
|
51,
|
|
50])
|
|
self.squareList[61].setAdjacent([60,
|
|
70,
|
|
71,
|
|
62,
|
|
52,
|
|
51])
|
|
self.squareList[62].setAdjacent([61,
|
|
71,
|
|
72,
|
|
63,
|
|
53,
|
|
52])
|
|
self.squareList[63].setAdjacent([62,
|
|
72,
|
|
73,
|
|
64,
|
|
54,
|
|
53])
|
|
self.squareList[64].setAdjacent([63,
|
|
73,
|
|
74,
|
|
None,
|
|
55,
|
|
54])
|
|
self.squareList[65].setAdjacent([None,
|
|
75,
|
|
76,
|
|
66,
|
|
56,
|
|
None])
|
|
self.squareList[66].setAdjacent([65,
|
|
76,
|
|
77,
|
|
67,
|
|
57,
|
|
56])
|
|
self.squareList[67].setAdjacent([66,
|
|
77,
|
|
78,
|
|
68,
|
|
58,
|
|
57])
|
|
self.squareList[68].setAdjacent([67,
|
|
78,
|
|
79,
|
|
69,
|
|
59,
|
|
58])
|
|
self.squareList[69].setAdjacent([68,
|
|
79,
|
|
80,
|
|
70,
|
|
60,
|
|
61])
|
|
self.squareList[70].setAdjacent([69,
|
|
80,
|
|
81,
|
|
71,
|
|
61,
|
|
60])
|
|
self.squareList[71].setAdjacent([70,
|
|
81,
|
|
82,
|
|
72,
|
|
62,
|
|
61])
|
|
self.squareList[72].setAdjacent([71,
|
|
82,
|
|
83,
|
|
73,
|
|
63,
|
|
62])
|
|
self.squareList[73].setAdjacent([72,
|
|
83,
|
|
84,
|
|
74,
|
|
64,
|
|
63])
|
|
self.squareList[74].setAdjacent([73,
|
|
84,
|
|
85,
|
|
None,
|
|
None,
|
|
64])
|
|
self.squareList[75].setAdjacent([None,
|
|
86,
|
|
87,
|
|
76,
|
|
65,
|
|
None])
|
|
self.squareList[76].setAdjacent([75,
|
|
87,
|
|
88,
|
|
77,
|
|
66,
|
|
65])
|
|
self.squareList[77].setAdjacent([76,
|
|
88,
|
|
89,
|
|
78,
|
|
67,
|
|
66])
|
|
self.squareList[78].setAdjacent([77,
|
|
89,
|
|
90,
|
|
79,
|
|
68,
|
|
67])
|
|
self.squareList[79].setAdjacent([78,
|
|
90,
|
|
91,
|
|
80,
|
|
69,
|
|
68])
|
|
self.squareList[80].setAdjacent([79,
|
|
91,
|
|
92,
|
|
81,
|
|
70,
|
|
69])
|
|
self.squareList[81].setAdjacent([80,
|
|
92,
|
|
93,
|
|
82,
|
|
71,
|
|
70])
|
|
self.squareList[82].setAdjacent([81,
|
|
93,
|
|
94,
|
|
83,
|
|
72,
|
|
71])
|
|
self.squareList[83].setAdjacent([82,
|
|
94,
|
|
95,
|
|
84,
|
|
73,
|
|
72])
|
|
self.squareList[84].setAdjacent([83,
|
|
95,
|
|
96,
|
|
85,
|
|
74,
|
|
73])
|
|
self.squareList[85].setAdjacent([84,
|
|
96,
|
|
97,
|
|
None,
|
|
None,
|
|
74])
|
|
self.squareList[86].setAdjacent([None,
|
|
98,
|
|
99,
|
|
87,
|
|
75,
|
|
None])
|
|
self.squareList[87].setAdjacent([86,
|
|
99,
|
|
100,
|
|
88,
|
|
76,
|
|
75])
|
|
self.squareList[88].setAdjacent([87,
|
|
100,
|
|
101,
|
|
89,
|
|
77,
|
|
76])
|
|
self.squareList[89].setAdjacent([88,
|
|
101,
|
|
102,
|
|
90,
|
|
78,
|
|
77])
|
|
self.squareList[90].setAdjacent([89,
|
|
102,
|
|
103,
|
|
91,
|
|
79,
|
|
78])
|
|
self.squareList[91].setAdjacent([90,
|
|
103,
|
|
104,
|
|
92,
|
|
80,
|
|
79])
|
|
self.squareList[92].setAdjacent([91,
|
|
104,
|
|
105,
|
|
93,
|
|
81,
|
|
80])
|
|
self.squareList[93].setAdjacent([92,
|
|
105,
|
|
106,
|
|
94,
|
|
82,
|
|
81])
|
|
self.squareList[94].setAdjacent([93,
|
|
106,
|
|
107,
|
|
95,
|
|
83,
|
|
82])
|
|
self.squareList[95].setAdjacent([94,
|
|
107,
|
|
108,
|
|
96,
|
|
84,
|
|
83])
|
|
self.squareList[96].setAdjacent([95,
|
|
108,
|
|
109,
|
|
97,
|
|
85,
|
|
84])
|
|
self.squareList[97].setAdjacent([96,
|
|
109,
|
|
110,
|
|
None,
|
|
None,
|
|
85])
|
|
self.squareList[98].setAdjacent([None,
|
|
None,
|
|
None,
|
|
99,
|
|
86,
|
|
None])
|
|
self.squareList[99].setAdjacent([98,
|
|
None,
|
|
None,
|
|
100,
|
|
87,
|
|
86])
|
|
self.squareList[100].setAdjacent([99,
|
|
None,
|
|
None,
|
|
101,
|
|
88,
|
|
87])
|
|
self.squareList[101].setAdjacent([100,
|
|
None,
|
|
None,
|
|
102,
|
|
89,
|
|
88])
|
|
self.squareList[102].setAdjacent([101,
|
|
None,
|
|
111,
|
|
103,
|
|
90,
|
|
89])
|
|
self.squareList[103].setAdjacent([102,
|
|
111,
|
|
112,
|
|
104,
|
|
91,
|
|
90])
|
|
self.squareList[104].setAdjacent([103,
|
|
112,
|
|
113,
|
|
105,
|
|
92,
|
|
91])
|
|
self.squareList[105].setAdjacent([104,
|
|
113,
|
|
114,
|
|
106,
|
|
93,
|
|
92])
|
|
self.squareList[106].setAdjacent([105,
|
|
114,
|
|
None,
|
|
107,
|
|
94,
|
|
93])
|
|
self.squareList[107].setAdjacent([106,
|
|
None,
|
|
None,
|
|
108,
|
|
95,
|
|
94])
|
|
self.squareList[108].setAdjacent([107,
|
|
None,
|
|
None,
|
|
109,
|
|
96,
|
|
95])
|
|
self.squareList[109].setAdjacent([108,
|
|
None,
|
|
None,
|
|
110,
|
|
97,
|
|
96])
|
|
self.squareList[110].setAdjacent([109,
|
|
None,
|
|
None,
|
|
None,
|
|
None,
|
|
97])
|
|
self.squareList[111].setAdjacent([None,
|
|
None,
|
|
115,
|
|
112,
|
|
103,
|
|
102])
|
|
self.squareList[112].setAdjacent([111,
|
|
115,
|
|
116,
|
|
113,
|
|
104,
|
|
103])
|
|
self.squareList[113].setAdjacent([112,
|
|
116,
|
|
117,
|
|
114,
|
|
105,
|
|
104])
|
|
self.squareList[114].setAdjacent([113,
|
|
117,
|
|
None,
|
|
None,
|
|
106,
|
|
105])
|
|
self.squareList[115].setAdjacent([None,
|
|
None,
|
|
118,
|
|
116,
|
|
112,
|
|
111])
|
|
self.squareList[116].setAdjacent([115,
|
|
118,
|
|
119,
|
|
117,
|
|
113,
|
|
112])
|
|
self.squareList[117].setAdjacent([116,
|
|
119,
|
|
None,
|
|
None,
|
|
114,
|
|
113])
|
|
self.squareList[118].setAdjacent([None,
|
|
None,
|
|
120,
|
|
119,
|
|
116,
|
|
115])
|
|
self.squareList[119].setAdjacent([118,
|
|
120,
|
|
None,
|
|
None,
|
|
117,
|
|
116])
|
|
self.squareList[120].setAdjacent([None,
|
|
None,
|
|
None,
|
|
None,
|
|
119,
|
|
118])
|
|
return
|
|
|
|
def delete(self):
|
|
for x in self.squareList:
|
|
x.delete()
|
|
|
|
del self.squareList
|
|
|
|
def getSquare(self, arrayLoc):
|
|
return self.squareList[arrayLoc]
|
|
|
|
def getSquareOffset(self, arrayLoc):
|
|
return self.squareList[arrayLoc - 1]
|
|
|
|
def getState(self, squareNum):
|
|
return self.squareList[squareNum].getState()
|
|
|
|
def getStateOffset(self, arrayLoc):
|
|
return self.squareList[squareNum - 1].getState()
|
|
|
|
def setState(self, squareNum, newState):
|
|
self.squareList[squareNum].setState(newState)
|
|
|
|
def setStateOffset(self, squareNum, newState):
|
|
self.squareList[squareNum - 1].setState(newState)
|
|
|
|
def getAdjacent(self, squareNum):
|
|
return self.squareList[squareNum].adjacent
|
|
|
|
def getAdjacentOffset(self, squareNum):
|
|
return self.squareList[squareNum - 1].adjacent
|
|
|
|
def getStates(self):
|
|
retList = []
|
|
for x in xrange(121):
|
|
retList.append(self.squareList[x].getState())
|
|
|
|
return retList
|
|
|
|
def setStates(self, squares):
|
|
y = 0
|
|
for x in xrange(121):
|
|
self.squareList[x].setState(squares[x])
|
|
|
|
|
|
class CheckersSquare:
|
|
|
|
def __init__(self, tileNu):
|
|
self.tileNum = tileNu
|
|
self.state = 0
|
|
self.adjacent = []
|
|
|
|
def delete(self):
|
|
del self.tileNum
|
|
del self.state
|
|
del self.adjacent
|
|
|
|
def setAdjacent(self, adjList):
|
|
for x in adjList:
|
|
self.adjacent.append(x)
|
|
|
|
def getAdjacent(self):
|
|
return self.adjacent
|
|
|
|
def setState(self, newState):
|
|
self.state = newState
|
|
|
|
def getState(self):
|
|
return self.state
|
|
|
|
def getNum(self):
|
|
return self.tileNum
|