| | |
| | | free(l); |
| | | } |
| | | |
| | | void print_board(float *board) |
| | | void print_board(float *board, int swap) |
| | | { |
| | | int i,j; |
| | | printf("\n\n"); |
| | |
| | | printf("%2d ", 19-j); |
| | | for(i = 0; i < 19; ++i){ |
| | | int index = j*19 + i; |
| | | if(board[index] > 0) printf("\u25C9 "); |
| | | else if(board[index] < 0) printf("\u25EF "); |
| | | if(board[index]*-swap > 0) printf("\u25C9 "); |
| | | else if(board[index]*-swap < 0) printf("\u25EF "); |
| | | else printf(" "); |
| | | } |
| | | printf("\n"); |
| | |
| | | set_batch_network(&net, 1); |
| | | float *board = calloc(19*19, sizeof(float)); |
| | | float *move = calloc(19*19, sizeof(float)); |
| | | int color = 1; |
| | | while(1){ |
| | | float *output = network_predict(net, board); |
| | | copy_cpu(19*19, output, 1, move, 1); |
| | |
| | | int indexes[3]; |
| | | int row, col; |
| | | top_k(move, 19*19, 3, indexes); |
| | | print_board(board); |
| | | print_board(board, color); |
| | | for(i = 0; i < 3; ++i){ |
| | | int index = indexes[i]; |
| | | row = index / 19; |
| | |
| | | int rec_row = index / 19; |
| | | int rec_col = index % 19; |
| | | |
| | | printf("\u25C9 Enter move: "); |
| | | if(color == 1) printf("\u25EF Enter move: "); |
| | | else printf("\u25C9 Enter move: "); |
| | | |
| | | char c; |
| | | char *line = fgetl(stdin); |
| | | int num = sscanf(line, "%c %d", &c, &row); |
| | |
| | | }else if (c < 'A' || c > 'T'){ |
| | | if (c == 'p'){ |
| | | flip_board(board); |
| | | color = -color; |
| | | continue; |
| | | }else{ |
| | | char g; |
| | |
| | | } |
| | | update_board(board); |
| | | flip_board(board); |
| | | color = -color; |
| | | } |
| | | |
| | | } |