Modules and Makefile
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
*.dSYM
|
||||
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 <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;
|
||||
}
|
||||
|
||||
#include "fen.h"
|
||||
// Starter fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
|
||||
void fen_toBoard(const FEN fen, Board board) {
|
||||
uint i = 0;
|
||||
@@ -48,7 +15,7 @@ void fen_toBoard(const FEN fen, Board board) {
|
||||
// Upper case or lower case
|
||||
bool is_upper_case;
|
||||
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);
|
||||
Pieces p;
|
||||
switch (lowered_char) {
|
||||
@@ -149,12 +116,3 @@ void fen_fromBoard(const Board board, FEN fen) {
|
||||
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