3 enum Stone { none, black, white };
27 numStones[black] = 12;
28 numStones[white] = 12;
29 memset(stones, 0, sizeof(stones));
35 bool ProcessMove(int sx, int sy)
40 Stone opponent = (turn == white) ? black : white;
41 if(stones[sy][sx] == opponent)
43 numStones[opponent]++;
44 stones[sy][sx] = none;
50 else if(movesLeft && !stones[sy][sx])
53 int symbol = symbols[sy][sx];
54 if(numStones[turn] > 0)
57 for(y = 0; y < 4; y++)
60 for(x = 0; x < 4; x++)
61 if((y != sy || x != sx) && symbols[y][x] == symbol)
63 if(stones[y][x] == turn)
69 stones[sy][sx] = turn;
72 for(i = 0; i < 4; i++)
75 for(j = 0; j < 4; j++)
76 if(stones[i][j] != turn)
81 for(j = 0; j < 4; j++)
82 if(stones[j][i] != turn)
87 for(i = 0; i < 4; i++)
88 if(stones[i][i] != turn)
93 for(i = 0; i < 4; i++)
94 if(stones[3-i][i] != turn)
103 if(!takeOut && !--movesLeft && !winner)
105 turn = (turn == black) ? white : black;
113 BrainStonzGame game { };
122 if(game.numPlayers < 2)
124 color = game.numPlayers ? black : white;
135 bool Click(int x, int y)
137 if(game.turn == color)
138 return game.ProcessMove(x, y);