Modules and Makefile
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
*.dSYM
|
*.dSYM
|
||||||
main
|
main
|
||||||
|
build
|
||||||
|
|||||||
22
Makefile
Normal file
22
Makefile
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
CC = gcc
|
||||||
|
CFLAGS = -Wall -g
|
||||||
|
SRCDIR = src
|
||||||
|
BUILDDIR = build
|
||||||
|
TARGET = main
|
||||||
|
|
||||||
|
SOURCES = $(wildcard $(SRCDIR)/*.c)
|
||||||
|
OBJECTS = $(patsubst $(SRCDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES))
|
||||||
|
|
||||||
|
all: $(BUILDDIR)/$(TARGET)
|
||||||
|
|
||||||
|
$(BUILDDIR)/$(TARGET): $(OBJECTS)
|
||||||
|
$(CC) $(CFLAGS) -o $@ $^
|
||||||
|
|
||||||
|
$(BUILDDIR)/%.o: $(SRCDIR)/%.c
|
||||||
|
@mkdir -p $(BUILDDIR)
|
||||||
|
$(CC) $(CFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
6
src/board.c
Normal file
6
src/board.c
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#include "board.h"
|
||||||
|
|
||||||
|
PieceColors piece_getColor(const Piece piece) { return Black & piece; }
|
||||||
|
Piece piece_getColorlessPiece(const Piece piece) {
|
||||||
|
return piece_getColor(piece) ^ piece;
|
||||||
|
}
|
||||||
18
src/board.h
Normal file
18
src/board.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __BOARD_HEADER
|
||||||
|
#include "common.h"
|
||||||
|
typedef int Piece;
|
||||||
|
typedef enum { Pawn = 0, Knight, Bishop, Rook, Queen, King } Pieces;
|
||||||
|
typedef enum { White = 0, Black = 8 } PieceColors;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Piece piece;
|
||||||
|
uint row;
|
||||||
|
uint column;
|
||||||
|
} Square;
|
||||||
|
|
||||||
|
typedef Square Board[64];
|
||||||
|
|
||||||
|
PieceColors piece_getColor(const Piece piece);
|
||||||
|
Piece piece_getColorlessPiece(const Piece piece);
|
||||||
|
|
||||||
|
#endif // !__BOARD_HEADER
|
||||||
13
src/common.c
Normal file
13
src/common.c
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
char chrToLower(char chr) {
|
||||||
|
if (chr >= 'A' && chr <= 'Z')
|
||||||
|
return chr + 32;
|
||||||
|
return chr;
|
||||||
|
}
|
||||||
|
|
||||||
|
char chrToUpper(char chr) {
|
||||||
|
if (chr >= 'a' && chr <= 'z')
|
||||||
|
return chr - 32;
|
||||||
|
return chr;
|
||||||
|
}
|
||||||
9
src/common.h
Normal file
9
src/common.h
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __COMMON_HEADER
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
typedef unsigned int uint;
|
||||||
|
|
||||||
|
char chrToLower(char chr);
|
||||||
|
char chrToUpper(char chr);
|
||||||
|
|
||||||
|
#endif // !__COMMON_HEADER
|
||||||
@@ -1,37 +1,4 @@
|
|||||||
#include <stdbool.h>
|
#include "fen.h"
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
typedef unsigned int uint;
|
|
||||||
typedef int Piece;
|
|
||||||
typedef char FEN[75];
|
|
||||||
typedef enum { Pawn = 0, Knight, Bishop, Rook, Queen, King } Pieces;
|
|
||||||
typedef enum { White = 0, Black = 8 } PieceColors;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
Piece piece;
|
|
||||||
uint row;
|
|
||||||
uint column;
|
|
||||||
} Square;
|
|
||||||
|
|
||||||
typedef Square Board[64];
|
|
||||||
|
|
||||||
char chrToLower(char chr) {
|
|
||||||
if (chr >= 'A' && chr <= 'Z')
|
|
||||||
return chr + 32;
|
|
||||||
return chr;
|
|
||||||
}
|
|
||||||
|
|
||||||
char chrToUpper(char chr) {
|
|
||||||
if (chr >= 'a' && chr <= 'z')
|
|
||||||
return chr - 32;
|
|
||||||
return chr;
|
|
||||||
}
|
|
||||||
|
|
||||||
PieceColors piece_getColor(const Piece piece) { return Black & piece; }
|
|
||||||
Piece piece_getColorlessPiece(const Piece piece) {
|
|
||||||
return piece_getColor(piece) ^ piece;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Starter fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
|
// Starter fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
|
||||||
void fen_toBoard(const FEN fen, Board board) {
|
void fen_toBoard(const FEN fen, Board board) {
|
||||||
uint i = 0;
|
uint i = 0;
|
||||||
@@ -48,7 +15,7 @@ void fen_toBoard(const FEN fen, Board board) {
|
|||||||
// Upper case or lower case
|
// Upper case or lower case
|
||||||
bool is_upper_case;
|
bool is_upper_case;
|
||||||
if ((is_upper_case = fen_char > 'A' && fen_char < 'Z') ||
|
if ((is_upper_case = fen_char > 'A' && fen_char < 'Z') ||
|
||||||
fen_char > 'a' && fen_char < 'z') {
|
(fen_char > 'a' && fen_char < 'z')) {
|
||||||
char lowered_char = chrToLower(fen_char);
|
char lowered_char = chrToLower(fen_char);
|
||||||
Pieces p;
|
Pieces p;
|
||||||
switch (lowered_char) {
|
switch (lowered_char) {
|
||||||
@@ -149,12 +116,3 @@ void fen_fromBoard(const Board board, FEN fen) {
|
|||||||
fen[fen_i++] = fen_char;
|
fen[fen_i++] = fen_char;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
|
||||||
Board board;
|
|
||||||
FEN fen = "rnbqkbnr/ppppp1pp/5p2/8/8/8/PPPPPPPP/RNBQKBNR";
|
|
||||||
fen_toBoard(fen, board);
|
|
||||||
fen_fromBoard(board, fen);
|
|
||||||
printf("%s", fen);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
9
src/fen.h
Normal file
9
src/fen.h
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __FEN_HEADER
|
||||||
|
#include "board.h"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
typedef char FEN[75];
|
||||||
|
void fen_fromBoard(const Board board, FEN fen);
|
||||||
|
void fen_toBoard(const FEN fen, Board board);
|
||||||
|
|
||||||
|
#endif // !__FEN_HEADER
|
||||||
10
src/main.c
Normal file
10
src/main.c
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#include "fen.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Board board;
|
||||||
|
FEN fen = "rnbqkbnr/ppppp1pp/5p2/8/8/8/PPPPPPPP/RNBQKBNR";
|
||||||
|
fen_toBoard(fen, board);
|
||||||
|
fen_fromBoard(board, fen);
|
||||||
|
printf("%s", fen);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user