diff --git a/ArduChess.ino b/ArduChess.ino index c491a34..805f350 100644 --- a/ArduChess.ino +++ b/ArduChess.ino @@ -17,6 +17,9 @@ void setup() { value = Serial.read(); b.field[0x32] = char_to_piece(value); + + Move m = {0x14, 0x34, P_EMPTY}; + b.make(m); } void loop() { @@ -26,4 +29,6 @@ void loop() { Serial.println(b.get_zobrist()); b.print(); Serial.println(sizeof(b)); + Move m = {0x14, 0x34, P_EMPTY}; + b.make(m); } diff --git a/Board.h b/Board.h index 477ee58..9231ba3 100644 --- a/Board.h +++ b/Board.h @@ -2,27 +2,23 @@ #define __BOARD_H_INC #include "Types.h" +#include "Panic.h" +#include "Move.h" -struct Unmake { +struct Unmove { byte sq_from; byte sq_to; byte enpassant; }; - class Board { public: Board(); - void print() { - for(char i = 7; i >= 0; i--) { - for(byte j = 0; j < 16; j++) { - Serial.print(field[i*16 + j], HEX); - Serial.print(" "); - } - Serial.println(); - } - } + void make(Move m); + void unmove(); + + void print(); unsigned long get_zobrist() { long* addr = (long*) &field[PTR_ZOBRIST]; @@ -102,5 +98,20 @@ Board::Board() { field[PTR_ZOBRIST+1] = 1; } +void Board::print() { + for(char i = 7; i >= 0; i--) { + for(byte j = 0; j < 16; j++) { + Serial.print(field[i*16 + j], HEX); + Serial.print(" "); + } + Serial.println(); + } +} +void Board::make(Move m) { + Unmove u = Unmove {0xAA, 0xBB, 0xCC}; + store_unmove(u); + Unmove u2 = read_unmove(); + Serial.println(u2.sq_to, HEX); +} #endif