Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Raymond Loewy

ATS din contactor modular

Parere apartament ~150k

Limitare la 100mb/s
 Altercație

Cartonașe și stickere t...

Ciobanesc german - zgarda electro...

Ce este instalatia asta? (Valea B...
 BD-R Verbatim 25gb salvare Fisier

Lupte WW2

Achizitie SUV, buget 17k euro

Gps traker pentru animale
 Aplicatii terte pentru IPTV, OTT,...

Drept trecere cu “carulR...

Sunt noile generatii care se nasc...

Butuc pedalier
 

[TEMA]X si 0 cu mai multe "table de joc"

- - - - -
  • Please log in to reply
118 replies to this topic

#109
GlontzZz

GlontzZz

    Active Member

  • Grup: Members
  • Posts: 1,288
  • Înscris: 08.02.2014

View Postdani.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.
Mersi mult :)

View PostOriginalCopy, 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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostGlontzZz, on 18 iunie 2015 - 10:01, said:

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?
Ia folosește-ți imaginația.

#111
GlontzZz

GlontzZz

    Active Member

  • Grup: Members
  • Posts: 1,288
  • Înscris: 08.02.2014

View PostOriginalCopy, 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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostGlontzZz, 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.
Păi ia crează un test pentru ea. Testul trebuie să pună o piesă pe board și apoi să testeze dacă piesa pusă e acolo.

View PostGlontzZz, 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ă?


View Postglontzzz, 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.
O metodă nu poate fi plasată într-o altă metodă, poți cel mult să scrii implementarea unei metode într-o altă metodă, dar atunci metoda "integrată" nu se mai numește metodă, se numește cod.

Pentru isMoveValid e prea devreme, vezi dacă-ți vin idei pornind de la ce ți-am scris mai sus.

#113
GlontzZz

GlontzZz

    Active Member

  • Grup: Members
  • Posts: 1,288
  • Înscris: 08.02.2014
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

View PostOriginalCopy, 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ă?
Sa testez toata tabla pentru o singura celula?

#114
GlontzZz

GlontzZz

    Active Member

  • Grup: Members
  • Posts: 1,288
  • Înscris: 08.02.2014
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
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
Tu in functia aia testezi daca operatorul = functioneaza cum trebuie. Ar trebui sa verifici alte lucruri:
  • daca row si column apartin intervalului [0,3)
  • daca gameBoard[row][column] este liber
  • daca value are o valoarea corecta adica 'o' sau 'x'.
PS: sper sa nu se supere OriginalCopy ca m-am bagat peste munca lui :)

Edited by EnachescuAlin, 19 June 2015 - 14:36.


#116
GlontzZz

GlontzZz

    Active Member

  • Grup: Members
  • Posts: 1,288
  • Înscris: 08.02.2014
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
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostEnachescuAlin, on 19 iunie 2015 - 14:33, said:

Tu in functia aia testezi daca operatorul = functioneaza cum trebuie.

Corectă observație.

View PostEnachescuAlin, on 19 iunie 2015 - 14:33, said:

PS: sper sa nu se supere OriginalCopy ca m-am bagat peste munca lui Posted Image
Nu mă supăr, nivelul a scăzut sub nivelul mării și nu mai am chef.

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
GlontzZz

GlontzZz

    Active Member

  • Grup: Members
  • Posts: 1,288
  • Înscris: 08.02.2014
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate