Ejemplo n.º 1
0
/*verifica che la valutazione del bianco e del nero sia simmetrica*/
void test_eval() {
	/* Materiale:equal
	 KS:equal OK
	 PS:black (White isolated and hang)*/
	char p[] = "2rq1rk1/pb2bppp/1pn1p3/2p5/3P4/P1PBPN2/1B2QPPP/3R1RK1 w - - 0 1";
	/*char fp[]="3r1rk1/1b2qppp/p1pbpn2/3p4/2P5/1PN1P3/PB2BPPP/2RQ1RK1 w - - 0 1";*/
	/*char p[] = "8/PPP4k/8/8/8/8/4Kppp/8 w - - ";*/

/*	 Materiale:black (bishop pair)
	 KS:equal
	 PS:black (white weak white squares)*/
	 /*char p[]="rnbqkb1r/pppp1ppp/8/4P3/3P4/3Q4/PP3PPP/RNB1K1NR b KQkq - 0 1";*/

	/* Materiale:black (bishop pair)
	 KS:equal
	 PS:black (white weak white squares isol back)*/
	/*char p[]="r2qkb1r/1p1b3p/p3ppp1/2p5/2P5/4P2Q/PB1P1PPP/RN3RK1 b k - 0 1";*/
	

	/* Materiale:equal
	 KS:equal
	 PS:equal*/
	/*char p[]="r2q1rk1/pb1nbppp/1p2pn2/8/1P6/P4NP1/1B1NPPBP/R2Q1RK1 w - - 0 0";*/

	/* Materiale:
	 KS:black
	 PS:black--->sbagliato*/
	/*char p[]="2br1rk1/pp2bppp/3p2n1/3P4/4P1n1/1B3NN1/PP1B2PP/R3R1K1 w - - 0 0";*/

	/* Materiale:
	 KS:white
	 PS:*/
	/*char p[]="R1n5/5rkp/3p2p1/2rNpq2/1NP4b/7P/4QPP1/5RK1 b - - 0 1";*/

	int score;
	  
	set_position(p);
	init_data();
	print_board();
	print_bitboard();
	/*Precalcoliamo*/
	Phase(WHITE) = eval_phase(WHITE);
	Phase(BLACK) = eval_phase(BLACK);
	score = eval(0);
	printf("eval %d\n", score);

	/*set_position(fp);
	init_data();
	print_board();
	print_bitboard();
	Phase(WHITE)=eval_phase(WHITE);
	Phase(BLACK)=eval_phase(BLACK);
	score=eval(0);
	printf("eval %d",score);*/
}
Ejemplo n.º 2
0
static void
check_hashkey_bit_not_set(Hash_Key key, s32bit index)
{
  if( (key.key[index/32] & NTH_BIT(index%32)) ){

    printf("%d", index);
    
    print_bitboard(HORIZONTAL);

    print_hashkey(key);

    fatal_error(1, "HashKey Incorrect.\n");
  }
}
Ejemplo n.º 3
0
void perft(char dep) {
	int start_time, end_time;
	char num[65];
	float time;
	/*char p0[]="r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1";
	char p0[]="8/PPP4k/8/8/8/8/4Kppp/8 w - - ";*/
	/*8/2p5/3p4/KP5r/1R3p1k/6P1/4P3/8 b - - 0 1*/
	/*char p0[]="8/2p5/3p4/KP5r/1R3p1k/6P1/4P3/8 b - - 0 1";*/
	/*8/5kpp/2K5/p5q1/6P1/5P2/8/2q5 w - - 0 53*/
	/*char p0[]="8/5kpp/2K5/p5q1/6P1/5P2/8/2q5 w - - 0 53";

	char p0[]="8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -";
	

		
	char p0[]="8/2p5/K2p4/1P5r/1R3p1k/8/4P1P1/8 b - - 0 1";//15
	char p0[]="8/2p5/3p4/1P5r/KR3p1k/8/4P1P1/8 b - - 0 1";//15----30


	char p0[]="8/2p5/3p4/KP5r/R4p1k/8/4P1P1/8 b - - 0 1";//15
	char p0[]="8/2p5/3p4/KP5r/5p1k/1R6/4P1P1/8 b - - 0 1";//15
	char p0[]="8/2p5/3p4/KP5r/5p1k/8/1R2P1P1/8 b - - 0 1";//16
	char p0[]="8/2p5/3p4/KP5r/5p1k/8/4P1P1/1R6 b - - 0 1";//16
	char p0[]="8/2p5/3p4/KP5r/2R2p1k/8/4P1P1/8 b - - 0 1";//15
	char p0[]="8/2p5/3p4/KP5r/3R1p1k/8/4P1P1/8 b - - 0 1";//15
	char p0[]="8/2p5/3p4/KP5r/4Rp1k/8/4P1P1/8 b - - 0 1";//15
	char p0[]="8/2p5/3p4/KP5r/5R1k/8/4P1P1/8 b - - 0 1";//2-----109

	char p0[]="8/2p5/3p4/KP5r/1R3p1k/4P3/6P1/8 b - - 0 1";//15 
	char p0[]="8/2p5/3p4/KP5r/1R2Pp1k/8/6P1/8 b - e3 0 1";//17----32 ERROR???

	char p0[]="8/2p5/3p4/KP5r/1R3p1k/6P1/4P3/8 b - - 0 1";//4
	char p0[]="8/2p5/3p4/KP5r/1R3pPk/8/4P3/8 b - g3 0 1";//18-----22
	*/
	init_board();
	/*set_position(p0);*/

	init_data();
	print_board();

	print_bitboard();
	start_time = time_elapsed();
	perf_t(dep);
	end_time = time_elapsed();
	_ui64toa(Nodes,num,10);
	time = ((end_time - start_time) / (float)1000);
	printf("\nmoves %s in %.3f sec.\n", num, time);
	}
Ejemplo n.º 4
0
int
main(void)
{
    struct ai_state ai_state;
    struct bitboard board;
    enum color cur_player;
    struct move move;

    enum result result;
    int gameover = 1;

    static char buf[4096];
    char *p;

    seed_ai(&ai_state);

    while (1) {
        if (gameover) {
            init_bitboard(&board);
            cur_player = WHITE;
            gameover = 0;
        }

        print_bitboard(&board, cur_player);

        printf("%s>%s ", cur_player == WHITE ? "\033[1;36m" : "\033[0;35m",
                "\033[0m");
        fflush(stdout);

        fread_until((unsigned char *)buf, '\n', sizeof(buf), stdin);
        if ((p = strchr(buf, '\n')) != NULL)
            *p = '\0';
        else
            continue;

        if (strcmp(buf, "quit") == 0)
            break;

        if (parse_san(&board, cur_player, buf, &move) != 0 ||
                (result = make_move(&board, &move)) == ERROR) {
            printf("INVALID MOVE!\n");
            continue;
        }

#ifdef PATCHED_1
        printf("\n%s\n%x\n", buf, calculate_csum(result));
#else
        printf("\n");
        printf(buf);
        printf("\n%x\n", calculate_csum(result));
#endif

        switch (result) {
        case CHECK:
            printf("CHECK!\n");
            break;
        case CHECKMATE:
            printf("CHECKMATE!\n");
            gameover = 1;
            break;
        case STALEMATE:
            printf("STALEMATE!\n");
            gameover = 1;
            break;
        case CONTINUE:
        default:
            break;
        }

        cur_player = (cur_player == WHITE ? BLACK : WHITE);
    }

    return 0;
}