Page 1 of 1
ConnectFour lol
Posted: 07 Dec 2011, 21:35
by kristapuciitis
Mans pirmais spēļuks šajā forumā

. Spēli sataisīju šovakar, lai iemācītos taisīt checkingu, kas pēc katra gājiena nosaka, vai kāds nav uzvarējis (bubu, novērtē, lūdzu, cik kvalitatīvi es izveidoju to check funkciju). Spēlē ir tikai 2 player mode (nav single player). Taisīta ar C#, XNA.
Re: ConnectFour lol
Posted: 07 Dec 2011, 22:04
by bubu
Tas Check kods ir briesmīgi lasāms (un pārbaudāms uz pareizību). Es tur lietotu ciklus:
Code: Select all
readonly int[] dx = new int[] { 0, 1, 1, -1 };
readonly int[] dy = new int[] { 1, 0, 1, 1 };
const int LIMIT = 4;
void Check(int X, int Y, State state)
{
for (int i=0; i<4; i++)
{
int cnt = 1;
int curX = X + dx[i];
int curY = Y + dy[i];
while (cnt < LIMIT && curX >= 0 && curY >= 0 && curX < LEVEL_SIZE && curY < LEVEL_SIZE)
{
if (cell[curX, curY] == state)
{
cnt++;
}
curX += dx[i];
curY += dy[i];
}
curX = X - dx[i];
curY = Y - dy[i];
while (cnt < LIMIT && curX >= 0 && curY >= 0 && curX < LEVEL_SIZE && curY < LEVEL_SIZE)
{
if (cell[curX, curY] == state)
{
cnt++;
}
curX -= dx[i];
curY -= dy[i];
}
if (cnt == LIMIT)
{
winner = state;
IsGamePlayer = false;
break;
}
}
}
Šādā veidā var arī viegli pamainīt ConnectFour uz ConnectFive, vai ConnectTen. Tavā kodā ConnectTen izskatītos diezgan briesmīgi.
Re: ConnectFour lol
Posted: 07 Dec 2011, 22:43
by kristapuciitis
bubu wrote:Tas Check kods ir briesmīgi lasāms (un pārbaudāms uz pareizību). Es tur lietotu ciklus:
Šādā veidā var arī viegli pamainīt ConnectFour uz ConnectFive, vai ConnectTen. Tavā kodā ConnectTen izskatītos diezgan briesmīgi.
Paldies! Vajadzēs iegaumēt šādu paņēmienu. Tur tikai kļūda- viņš reāģē arī, ja starp vienas krāsas laukiem ir tukši lauki vai enemy krāsas lauks. Bet to es rīt izlabošu un ievietošu bugfix'u

.
Re: ConnectFour lol
Posted: 08 Dec 2011, 03:11
by bubu
Ā, jā, while nosacījumi jāpielabo:
Code: Select all
while (cnt < LIMIT && curX >= 0 && curY >= 0 && curX < LEVEL_SIZE && curY < LEVEL_SIZE && cell[curX, curY] == state)
{
cnt++;
curX += dx[i];
curY += dy[i];
}
Tas pats ar otru while ciklu.
Re: ConnectFour lol
Posted: 08 Dec 2011, 17:33
by vecais_dumais_laacis
btw alt+print screen captureet tikai aktiivo logu - lai nebuut tears in heaven
Re: ConnectFour lol
Posted: 06 Feb 2012, 23:06
by kristapuciitis
vecais_dumais_laacis wrote:btw alt+print screen captureet tikai aktiivo logu - lai nebuut tears in heaven
kas slikts tears in heaven?