Modules and Makefile

This commit is contained in:
cdricms
2023-12-20 23:32:19 +01:00
parent 6cba000233
commit 11781e37ff
9 changed files with 90 additions and 44 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
*.dSYM *.dSYM
main main
build

22
Makefile Normal file
View 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
View 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
View 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
View 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
View 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

View File

@@ -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
View 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
View 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;
}