Sha256: 38f726edb0afd049bedb438d8eacada7d9c6341f5ccf9a5c53b3602e6693b8a0
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
/* * chess - a fast library to play chess in Ruby * * Copyright (c) 2011-2012, Enrico Pilotto <enrico@megiston.it> * This code is under LICENSE LGPLv3 */ #include "common.h" char square_to_file (int square) { return (square % 8) + 97; } char square_to_rank (int square) { return (square / 8) + 49; } int coord_to_square (const char *coord) { return 8 * (coord[1] - 49) + (coord[0] - 97); } char* square_to_coord (int square) { char *s = (char *) malloc (3); s[0] = square_to_file (square); s[1] = square_to_rank (square); s[2] = '\0'; return s; } char* ft_to_coord_move (int from, int to, char promote_in) { char *s = (char *) malloc (7); s[0] = square_to_file (from); s[1] = square_to_rank (from); s[2] = square_to_file (to); s[3] = square_to_rank (to); s[4] = '\0'; if (promote_in) { s[4] = '='; s[5] = promote_in; s[6] = '\0'; } return s; } char* result_to_s (unsigned short int r) { char *s = (char *) malloc (8); switch (r) { case WHITE_WON: strcpy (s, "1-0"); break; case BLACK_WON: strcpy (s, "0-1"); break; case DRAW: strcpy (s, "1/2-1/2"); break; default: strcpy (s, "*"); break; } return s; } char* castling_to_s (short int castling) { char *s = (char *) malloc (5); int cur = 0; if (0x1000 & castling) { s[cur] = 'K'; cur++; } if (0x0100 & castling) { s[cur] = 'Q'; cur++; } if (0x0010 & castling) { s[cur] = 'k'; cur++; } if (0x0001 & castling) { s[cur] = 'q'; cur++; } if (cur == 0) { s[cur] = '-'; cur++; } s[cur] = '\0'; return s; } char* en_passant_to_s (short int en_passant) { char *s = (char *) malloc (3); if (en_passant == -1) strcpy (s, "-"); else strcpy (s, square_to_coord (en_passant)); return s; } int compare (const void *a, const void *b) { return strcmp (*(const char **) a, *(const char **) b); }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chess-0.1.1 | ext/common.c |
chess-0.1.0 | ext/common.c |