AlexeyAB
2018-04-12 1c39aeca008ced62dae8245f8d6f9963f4c97b47
src/go.c
@@ -10,7 +10,8 @@
int inverted = 1;
int noi = 1;
static const int nind = 5;
//static const int nind = 5;
#define nind 5
typedef struct {
    char **data;
@@ -116,7 +117,6 @@
void train_go(char *cfgfile, char *weightfile)
{
    data_seed = time(0);
    srand(time(0));
    float avg_loss = -1;
    char *base = basecfg(cfgfile);
@@ -132,7 +132,7 @@
    char buff[256];
    float *board = calloc(19*19*net.batch, sizeof(float));
    float *move = calloc(19*19*net.batch, sizeof(float));
    moves m = load_go_moves("/home/pjreddie/go.train");
    moves m = load_go_moves("/home/pjreddie/backup/go.train");
    //moves m = load_go_moves("games.txt");
    int N = m.n;
@@ -217,7 +217,7 @@
    }
    fprintf(stream, "\n");
    for(j = 0; j < 19; ++j){
        fprintf(stream, "%2d ", (inverted) ? 19-j : j+1);
        fprintf(stream, "%2d", (inverted) ? 19-j : j+1);
        for(i = 0; i < 19; ++i){
            int index = j*19 + i;
            if(indexes){
@@ -225,17 +225,26 @@
                for(n = 0; n < nind; ++n){
                    if(index == indexes[n]){
                        found = 1;
                        /*
                        if(n == 0) fprintf(stream, "\uff11");
                        else if(n == 1) fprintf(stream, "\uff12");
                        else if(n == 2) fprintf(stream, "\uff13");
                        else if(n == 3) fprintf(stream, "\uff14");
                        else if(n == 4) fprintf(stream, "\uff15");
                        */
                        if(n == 0) fprintf(stream, " 1");
                        else if(n == 1) fprintf(stream, " 2");
                        else if(n == 2) fprintf(stream, " 3");
                        else if(n == 3) fprintf(stream, " 4");
                        else if(n == 4) fprintf(stream, " 5");
                    }
                }
                if(found) continue;
            }
            if(board[index]*-swap > 0) fprintf(stream, "\u25C9 ");
            else if(board[index]*-swap < 0) fprintf(stream, "\u25EF ");
            //if(board[index]*-swap > 0) fprintf(stream, "\u25C9 ");
            //else if(board[index]*-swap < 0) fprintf(stream, "\u25EF ");
            if(board[index]*-swap > 0) fprintf(stream, " O");
            else if(board[index]*-swap < 0) fprintf(stream, " X");
            else fprintf(stream, "  ");
        }
        fprintf(stream, "\n");
@@ -392,7 +401,6 @@
void valid_go(char *cfgfile, char *weightfile, int multi)
{
    data_seed = time(0);
    srand(time(0));
    char *base = basecfg(cfgfile);
    printf("%s\n", base);
@@ -568,8 +576,12 @@
                    }
                }
                fprintf(f, "final_status_list dead\n");
                fclose(f);
                FILE *p = popen("./gnugo --mode gtp < game.txt", "r");
                fclose(f);
#ifdef _WIN32
            FILE *p = _popen("./gnugo --mode gtp < game.txt", "r");
#else
            FILE *p = popen("./gnugo --mode gtp < game.txt", "r");
#endif
                for(i = 0; i < count; ++i){
                    free(fgetl(p));
                    free(fgetl(p));
@@ -640,8 +652,10 @@
            col = index % 19;
            printf("%d: %c %d, %.2f%%\n", i+1, col + 'A' + 1*(col > 7 && noi), (inverted)?19 - row : row+1, move[index]*100);
        }
        if(color == 1) printf("\u25EF Enter move: ");
        else printf("\u25C9 Enter move: ");
        //if(color == 1) printf("\u25EF Enter move: ");
        //else printf("\u25C9 Enter move: ");
        if(color == 1) printf("X Enter move: ");
        else printf("O Enter move: ");
        char c;
        char *line = fgetl(stdin);
@@ -703,8 +717,12 @@
        }
    }
    fprintf(f, "final_score\n");
    fclose(f);
    FILE *p = popen("./gnugo --mode gtp < game.txt", "r");
    fclose(f);
#ifdef _WIN32
   FILE *p = _popen("./gnugo --mode gtp < game.txt", "r");
#else
   FILE *p = popen("./gnugo --mode gtp < game.txt", "r");
#endif
    for(i = 0; i < count; ++i){
        free(fgetl(p));
        free(fgetl(p));
@@ -719,7 +737,11 @@
        if (n == 2) break;
    }
    if(player == 'W') score = -score;
    pclose(p);
#ifdef _WIN32
   _pclose(p);
#else
   pclose(p);
#endif
    return score;
}