ConnectFour lol

Vieta, kur pastāstīt par savu topošo vai jau gatavo spēli, parādīt tās screenus un ziņot par citiem savu projektu jaunumiem
Post Reply
Message
Author
User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

ConnectFour lol

#1 Post by kristapuciitis » 07 Dec 2011, 21:35

Mans pirmais spēļuks šajā forumā :D . 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

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: ConnectFour lol

#2 Post by bubu » 07 Dec 2011, 22:04

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.

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: ConnectFour lol

#3 Post by kristapuciitis » 07 Dec 2011, 22:43

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 :D.
Attachments
Bez nosaukuma.png
Bez nosaukuma.png (321.66 KiB) Viewed 8248 times
Gooby pls

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: ConnectFour lol

#4 Post by bubu » 08 Dec 2011, 03:11

Ā, 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.

User avatar
vecais_dumais_laacis
Guru
Guru
Posts: 109
Joined: 06 Dec 2010, 18:48
Contact:

Re: ConnectFour lol

#5 Post by vecais_dumais_laacis » 08 Dec 2011, 17:33

btw alt+print screen captureet tikai aktiivo logu - lai nebuut tears in heaven
...un ja bites buutu laachi...

User avatar
kristapuciitis
Posts: 163
Joined: 03 Jun 2011, 14:22

Re: ConnectFour lol

#6 Post by kristapuciitis » 06 Feb 2012, 23:06

vecais_dumais_laacis wrote:btw alt+print screen captureet tikai aktiivo logu - lai nebuut tears in heaven
kas slikts tears in heaven?
Gooby pls

Post Reply

Return to “Tavi projekti / Your projects”