|
| 1 | +Andrei, 26 februarie 2020 |
| 2 | +-> am creat repository-ul |
| 3 | + |
| 4 | +Ionuț, 29 februarie 2020 |
| 5 | +-> am creat un Makefile simplu cu cele trei reguli de bază |
| 6 | +-> am creat fișierul xboard.c care conține câteva structuri |
| 7 | + pentru piesele de șah și tabla de șah + 3 funcții de creat |
| 8 | + piese, tabla și afișarea tablei de joc |
| 9 | +-> rămâne de discutat dacă se păstrează aceste structuri de date |
| 10 | + și scheletele aferente acestora pentru rezolvarea etapei 1 |
| 11 | + |
| 12 | +Andrei, 1 martie 2020 |
| 13 | +-> ne-am hotărât să utilizăm bitboard-uri pentru memorarea stării joculul, |
| 14 | + astfel că am modificat codul în consecință |
| 15 | +-> am conceput un mic schelet pe baza căruia vom dezvolta engine-ul de șah |
| 16 | +-> am actualizat Makefile-ul |
| 17 | +-> momentan engine-ul afișează o tablă de șah la început de joc |
| 18 | + |
| 19 | +Andrei, 2 martie 2020 |
| 20 | +-> mici modificari de notații prin cod |
| 21 | + |
| 22 | +Andrei, 5 martie 2020 |
| 23 | +-> am adaugat noi tabele cu bitboard-uri utile ce vor folosi mai târziu |
| 24 | + pentru generarea de mișcări pentru fiecare piesă în parte |
| 25 | +-> am rescris codul de inițializare a tablei de joc pentru a fi mai intuitiv |
| 26 | + |
| 27 | +Ionuț, 7 martie 2020 |
| 28 | +-> am făcut un schelet de cod pentru xboard.c în care va trebui să completez |
| 29 | + comenzile neimplementate |
| 30 | +-> pentru continuarea implementării aveam nevoie de partea de cod pentru |
| 31 | + atacuri a lui Andrei, dar nu a mers gitlab-ul |
| 32 | +-> voi continua după ce își revine gitlab |
| 33 | + |
| 34 | +Andrei, 10 martie 2020 |
| 35 | +-> am implementat generarea tuturor seturilor de atacuri pentru fiecare piesă |
| 36 | +-> pentru piesele „sliding” (tură, nebun, regina=tură+nebun) se folosesc |
| 37 | + bitboard-uri „magice”, adică se generează toate seturile de atacuri pentru |
| 38 | + fiecare pătrat, pentru fiecare posibilitate de ocupare a tablei de joc |
| 39 | + (ce piese ocupa tabla de joc) și se pun într-un lookup table; partea |
| 40 | + „magică” constă în faptul că indexarea LUT-ului se face printr-un hash creat |
| 41 | + prin înmulțirea unui număr „magic” care să nu creeze coliziuni cu biții |
| 42 | + semnificativi de ocupare a tablei de joc (biți semnificativi înseamna pentru |
| 43 | + tura „ce mă blocheaza pe verticala mea și pe orizontala mea?”, iar pentru |
| 44 | + nebun „ce mă blochează pe cele 2 diagonale ale mele?”) |
| 45 | +-> pentru piesele non-„sliding” (cal, rege, pion) se generează de asemenea |
| 46 | + lookup table-uri pentru seturile de atac pentru fiecare pătrat în parte, dar |
| 47 | + se poate indexa direct după pătrat |
| 48 | + |
| 49 | +Ionuț, 15 martie 2020 |
| 50 | +-> am realizat o implementare minimală a mișcării cailor pentru prima etapă |
| 51 | +-> realizez, după ce a fost dată o comandă de către jucător, o listă a tuturor |
| 52 | + mișcărilor posibile pentru engine pentru un anumit tip de piesă (momentan |
| 53 | + doar pentru cal), iar apoi, ținând cont de faptul că e doar prima etapă, |
| 54 | + aleg aleatoriu o mișcare din setul de mișcări posibile după care golesc |
| 55 | + lista de mișcări |
| 56 | +-> pentru a asigura faptul că jocul se încheie cu succes, dupa ce engine-ul |
| 57 | + primește o mișcare de la jucător, verifică - momentan hardcodat, va fi |
| 58 | + automat după ce vor fi implementate restul de mișcări - dacă acea mișcare |
| 59 | + a însemnat pierderea unui cal, iar dacă da, va șterge calul din |
| 60 | + bitboard-urile tablei de joc |
| 61 | +-> tot aici, dacă a pierdut toți caii, înseamnă că lista de mutări posibile |
| 62 | + este goală, deci numărul total de mutări pe care poate să le faca engine-ul |
| 63 | + este 0, în acest moment dând resign |
| 64 | + |
| 65 | +Andrei, 16 martie 2020 |
| 66 | +-> am îmbunătățit considerabil API-ul de comunicare cu xboard (vezi fișierele |
| 67 | + sursă care încep cu „xboard”) |
| 68 | +-> am făcut posibil ca engine-ul să joace atât cu alb, cât și cu negru, |
| 69 | + astfel că acum se poate juca și engine vs. engine |
| 70 | + |
| 71 | +Andrei, 17 martie 2020 |
| 72 | +-> am terminat prima etapă => am creat arhiva `Etapa1.zip` |
| 73 | + |
| 74 | +Andrei, 17 aprilie 2020 |
| 75 | +-> am adăugat un script (debug-xboard.sh) pentru facilitarea depanării; |
| 76 | + pentru rulare se poate folosi `make xboard` |
| 77 | +-> am restructurat o parte din cod |
| 78 | +-> am implementat parsarea șirurilor FEN pentru comanda `setboard` |
| 79 | + |
| 80 | +Ionuț, 18 aprilie 2020 |
| 81 | +-> am implementat majoritatea mișcărilor |
| 82 | +-> acum lista de mișcări va cuprinde destule mișcări pentru un joc demo |
| 83 | +-> voi restructura codul și implementa restul de mișcări mai târziu |
| 84 | + |
| 85 | +Andrei, 19 aprilie 2020 |
| 86 | +-> am implementat modul force utilizat de XBoard |
| 87 | + |
| 88 | +Ionuț, 19 aprilie 2020 |
| 89 | +-> am restructurat codul pentru generarea mișcărilor |
| 90 | +-> am implementat toate mișcările posibile |
| 91 | + |
| 92 | +Ionuț, 20 aprilie 2020 |
| 93 | +-> am adăugat implementare pentru piece-square-table necesar pentru funcția |
| 94 | + de evaluare |
| 95 | +-> am implementat funcția de evaluare care va oferi, pentru |
| 96 | + culoarea dată ca argument, avantajul jucătorului cu acea |
| 97 | + culoare în centipawns |
| 98 | + |
| 99 | +Andrei, 20 aprilie 2020 |
| 100 | +-> am finalizat menținerea corectă a tablei de șah interne |
| 101 | + |
| 102 | +Andrei, 21 aprilie 2020 |
| 103 | +-> am implementat o variantă simplă de negamax |
| 104 | +-> am terminat a doua etapă => am creat arhiva `Etapa2.zip` |
| 105 | + |
| 106 | +Andrei, 19 mai 2020 |
| 107 | +-> am implementat suport pentru opening books |
| 108 | + |
| 109 | +Ionuț, 19 mai 2020 |
| 110 | +-> am terminat de implementat alpha-beta pruning & euristici elevate |
| 111 | +-> am terminat a treia etapă => am creat arhiva `Etapa3.zip` |
0 commit comments