Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enum Piece {
- RED,
- BLACK,
- }
- enum SearchDirection {
- LEFT,
- RIGHT,
- UP,
- DOWN,
- LEFT_UP
- LEFT_DOWN,
- RIGHT_UP,
- RIGHT_DOWN;
- }
- /* Some constants */
- int BOARD_HEIGHT = 10;
- int BOARD_WIDTH = 10;
- Pieces[][] board = new Pieces[BOARD_HEIGHT][BOARD_WIDTH];
- int WIN_COUNT = 5;
- private boolean connected_five(Pieces[][] board, int i, int j) {
- Piece match = board[i][j];
- return WIN_COUNT <= -1 + count(board, match, RIGHT, i, j) + count(board, match, LEFT, i, j)
- || WIN_COUNT <= -1 + count(board, match, DOWN, i, j) + count(board, match, UP, i, j)
- || WIN_COUNT <= -1 + count(board, match, LEFT_UP, i, j) + count(board, match, RIGHT_DOWN, i, j)
- || WIN_COUNT <= -1 + count(board, match, RIGHT_UP, i, j) + count(board, match, LEFT_DOWN, i, j);
- }
- private int count(Pieces[][] board, Piece match, SearchDirection direction, int i, int j) {
- if (i < 0)
- || (j < 0)
- || (i >= BOARD_HEIGHT)
- || (j >= BOARD_WIDTH)
- || (board[i][j] != match)
- return 0;
- switch(direction) {
- case LEFT:
- return 1 + count(board, match, LEFT, i+1, j);
- case RIGHT:
- return 1 + count(board, match, RIGHT, i-1, j);
- case UP:
- return 1 + count(board, match, UP, i, j+1);
- case DOWN:
- return 1 + count(board, match, DOWN, i, j-1);
- case LEFT_UP:
- return 1 + count(board, match, LEFT_UP, i+1, j+1);
- case LEFT_DOWN:
- return 1 + count(board, match, LEFT_DOWN, i+1, j-1);
- case RIGHT_UP:
- return 1 + count(board, match, RIGHT_UP, i+1, j+1);
- case RIGHT_DOWN:
- return 1 + count(board, match, RIGHT_DOWN, i-1, j-1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment