[TEMA]X si 0 cu mai multe "table de joc"
Last Updated: Jun 19 2015 15:35, Started by
GlontzZz
, Jun 03 2015 20:43
·
0
#109
Posted 18 June 2015 - 10:01
dani.user, on 17 iunie 2015 - 20:56, said:
Pui un breakpoint pe ultima acolada din main si-ti ramane consola deschisa cand pornesti din VS. OriginalCopy, on 17 iunie 2015 - 20:49, said:
Nu uita ca faci TDD, deci scrie mai intai testul. Orice linie de cod de productie trebuie sa se nasca ca reactie la un test care nu poate fi rulat cu succes. Inainte de a face o mutare, trebuie sa verific daca mutarea e valida (prin asta ma refer ca tile-ul in care vreau sa efectuez mutarea sa fie neocupat)... Va trebui sa testez intai aceasta functie, care imi va oferi permisiunea de a muta in cazul in care s-ar efectua o mutare valida, nu? Dar cum pot efectua testul, cat timp aceasta metoda va necesita niste parametrii (numarul randului si al coloanei)? Voi da niste valori aleatorii in interiorul testului? |
#110
Posted 18 June 2015 - 10:57
#111
Posted 18 June 2015 - 13:19
OriginalCopy, on 18 iunie 2015 - 10:57, said:
Ia folosește-ți imaginația. Incerc, dar nu prea imi iese... Cam la ce concluzii am ajuns pana acum, in legatura cu asta: -Ca sa pot testa, trebuie sa am ce. Ultimul test l-am trecut punand pe tabla un element, functia care face acest lucru implementand-o in exteriorul TDD, neavand niciun test pentru ea. -Ca sa o pot implementa prin TDD, va trebuie sa am ce sa testez, deci valorile pe care functia sa le primeasca (aici ma refer la pozitia in interiorul tablei de joc). Daca le-as introduce direct din cod, ma gandesc ca nu as rezolva mare lucru, pentru ca pun direct o casuta goala, testul trece din prima, am rezolvat tot, dar mai tarziu ma indoiesc ca toata treaba va sta la fel. Nu-mi dau seama cum pot face asta fara a cere inputul utilizatorului, lucru ce ar determina si inceperea clasei GameConsoleLoop. Sau, m-am mai gandit la urmatoarea metoda, doar ca nu imi vin in cap inca detaliile despre modul de implementare: Sa mai creez inca o metoda in clasa Board, care sa imi verifice daca o anumita celula (pozitia acesteia fiind data prin parametrii metodei) este libera, daca da, returnandu-mi valoarea true. De aici, m-am gandit ca aceasta metoda nou creata (ce va purta numele de isMoveValid) sa fie implementata in metoda changeBoardValue, valoarea unui tile schimbadu-se doar in cazul unei mutari valide. |
#112
Posted 18 June 2015 - 17:55
GlontzZz, on 18 iunie 2015 - 13:19, said: Incerc, dar nu prea imi iese... Cam la ce concluzii am ajuns pana acum, in legatura cu asta: -Ca sa pot testa, trebuie sa am ce. Ultimul test l-am trecut punand pe tabla un element, functia care face acest lucru implementand-o in exteriorul TDD, neavand niciun test pentru ea. GlontzZz, on 18 iunie 2015 - 13:19, said: Incerc, dar nu prea imi iese... Cam la ce concluzii am ajuns pana acum, in legatura cu asta: -Ca sa o pot implementa prin TDD, va trebuie sa am ce sa testez, deci valorile pe care functia sa le primeasca (aici ma refer la pozitia in interiorul tablei de joc). Daca le-as introduce direct din cod, ma gandesc ca nu as rezolva mare lucru, pentru ca pun direct o casuta goala, testul trece din prima, am rezolvat tot, dar mai tarziu ma indoiesc ca toata treaba va sta la fel. și dacă faci o metodă care-ți spune ce lungime și lățime are board, și testezi fiecare celulă? glontzzz, on 18 iunie 2015 - 13:19, said:
Sau, m-am mai gandit la urmatoarea metoda, doar ca nu imi vin in cap inca detaliile despre modul de implementare: Sa mai creez inca o metoda in clasa Board, care sa imi verifice daca o anumita celula (pozitia acesteia fiind data prin parametrii metodei) este libera, daca da, returnandu-mi valoarea true. De aici, m-am gandit ca aceasta metoda nou creata (ce va purta numele de isMoveValid) sa fie implementata in metoda changeBoardValue, valoarea unui tile schimbadu-se doar in cazul unei mutari valide. Pentru isMoveValid e prea devreme, vezi dacă-ți vin idei pornind de la ce ți-am scris mai sus. |
#113
Posted 18 June 2015 - 19:11
Am apucat sa fac testul care pune o piesa pe tabla si testeaza daca piesa a fost pusa pe tabla. Am dat un push in repository... L-am compilat pe ultima suta de metri in CodeBlocks si vad ca zice pass. In Visual Studio incep sa primesc iar eroare la ddl-uri si ca nu poate modifica fisierul .exe
OriginalCopy, on 18 iunie 2015 - 17:55, said:
și dacă faci o metodă care-ți spune ce lungime și lățime are board, și testezi fiecare celulă? |
#114
Posted 19 June 2015 - 14:09
Am mai incercat si vad ca trece si daca modific testul cu urmatoarea functie:
bool putPieceOnTableAndCheckIt(char value, int row, int column){ gameBoard[row][column] = value; if (gameBoard[row][column] == value) return true; return false; } |
#115
Posted 19 June 2015 - 14:33
Tu in functia aia testezi daca operatorul = functioneaza cum trebuie. Ar trebui sa verifici alte lucruri:
Edited by EnachescuAlin, 19 June 2015 - 14:36. |
#116
Posted 19 June 2015 - 14:42
Te referi la ceva de genul?
bool putPieceOnTableAndCheckIt(char value, int row, int column){ if (value == 'X' || value == 'O') if (row >= 0 && row < 3) if (column >= 0 && column < 3) if (gameBoard[row][column] != 'X' && gameBoard[row][column] != 'O'){ gameBoard[row][column] = value; return true; } return false; } |
#117
Posted 19 June 2015 - 14:55
cam asa ceva, doar ca atunci cand testezi daca celula e libera ar trebui sa verifici daca in celula respectiva exista o anumita valoare pe care o adaugi tu la initializarea matricei. Ca tu daca nu initializezi matricea exista sansa sa existe 'x' sau '0' in matrice.
|
#118
Posted 19 June 2015 - 15:34
EnachescuAlin, on 19 iunie 2015 - 14:33, said:
Tu in functia aia testezi daca operatorul = functioneaza cum trebuie. Corectă observație. EnachescuAlin, on 19 iunie 2015 - 14:33, said:
PS: sper sa nu se supere OriginalCopy ca m-am bagat peste munca lui Cine vrea să invețe TDD in C++ are asta la dispoziție: http://bit.ly/1FqYjg0 Probabil vor mai apare commituri ("lecții") in care e ilustrată dezvoltarea unui astfel de proiect. Cine știe să citească, să urmeze README-ul de acolo. Edited by OriginalCopy, 19 June 2015 - 16:03. |
|
#119
Posted 19 June 2015 - 15:35
Ok, deci trebuie sa initializez matricea cu ceva diferit fata de X si O... Sa fie char-ul 'T'. Deci, pentru asta, voi avea nevoie de un nou test si de o noua metoda... Incerc sa o implementez si revin.
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users