ConnectFour lol
- kristapuciitis
- Posts: 163
- Joined: 03 Jun 2011, 14:22
ConnectFour lol
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.
- Attachments
-
- ConnectFour.rar
- (65.18 KiB) Downloaded 406 times
Gooby pls
Re: ConnectFour lol
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.
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;
}
}
}
- kristapuciitis
- Posts: 163
- Joined: 03 Jun 2011, 14:22
Re: ConnectFour lol
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 .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.
- Attachments
-
- Bez nosaukuma.png (321.66 KiB) Viewed 8248 times
Gooby pls
Re: ConnectFour lol
Ā, jā, while nosacījumi jāpielabo:
Tas pats ar otru while ciklu.
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];
}
- vecais_dumais_laacis
- Guru
- Posts: 109
- Joined: 06 Dec 2010, 18:48
- Contact:
Re: ConnectFour lol
btw alt+print screen captureet tikai aktiivo logu - lai nebuut tears in heaven
...un ja bites buutu laachi...
- kristapuciitis
- Posts: 163
- Joined: 03 Jun 2011, 14:22
Re: ConnectFour lol
kas slikts tears in heaven?vecais_dumais_laacis wrote:btw alt+print screen captureet tikai aktiivo logu - lai nebuut tears in heaven
Gooby pls