Esempio n. 1
0
        private List <Tuple <int, int> > koordinateAktivnogLika(Kvadrat kojiLik)
        {
            var lista = new List <Tuple <int, int> >();

            for (int i = 1; i < tip_igre.Redaka + 1; ++i)
            {
                for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
                {
                    if (ploca[i, j] == kojiLik)
                    {
                        lista.Add(new Tuple <int, int>(i, j));
                    }
                }
            }
            return(lista);
        }
Esempio n. 2
0
 private void deaktiviraj(Kvadrat kojiLik)
 {
     for (int i = 1; i < tip_igre.Redaka + 1; ++i)
     {
         for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
         {
             if (ploca[i, j] == kojiLik)
             {
                 if (kojiLik == Kvadrat.OkupiraPrviLik)
                 {
                     ploca[i, j] = Kvadrat.DeaktiviraniPrvi;
                 }
                 else
                 {
                     ploca[i, j] = Kvadrat.DeaktiviraniDrugi;
                 }
             }
         }
     }
 }
Esempio n. 3
0
        private bool mozeRotacija(Kvadrat kojiLik)
        {
            Oblik koji = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            bool[,] rotirano = koji.SimulirajRotaciju();
            var boundingBox = koji.Pozicija;

            for (int i = boundingBox.Item1, k = 0; i < boundingBox.Item1 + 4; ++i, ++k)
            {
                for (int j = boundingBox.Item2, l = 0; j < boundingBox.Item2 + 4; ++j, ++l)
                {
                    if (i < 0 || j < 0 || rotirano[k, l] && ((ploca[i, j] != Kvadrat.Slobodan && ploca[i, j] != kojiLik) || !uGranicama(new Tuple <int, int>(i, j))))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Esempio n. 4
0
 private void gravitacijaAktivni(Kvadrat lik)
 {
     if (postojiAktivan(lik))
     {
         if (mozePomak(lik, Nivo().Smjer))
         {
             pomakni(lik, Nivo().Smjer);
         }
         else
         {
             deaktiviraj(lik);
         }
     }
     else
     {
         if (!inicijaliziraj(lik))
         {
             iduciNivo();
         }
     }
 }
Esempio n. 5
0
        private void rotiraj(Kvadrat kojiLik)
        {
            Oblik koji = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            koji.Rotiraj();
            var boundingBox = koji.Pozicija;

            for (int i = boundingBox.Item1, k = 0; i < boundingBox.Item1 + 4; ++i, ++k)
            {
                for (int j = boundingBox.Item2, l = 0; j < boundingBox.Item2 + 4; ++j, ++l)
                {
                    if (koji.Celije[k, l])
                    {
                        ploca[i, j] = kojiLik;
                    }
                    else if (!koji.Celije[k, l] && ploca[i, j] == kojiLik)
                    {
                        ploca[i, j] = Kvadrat.Slobodan;
                    }
                }
            }
        }
Esempio n. 6
0
        private bool mozePomak(Kvadrat kojiLik, Smjerovi smjer)
        {
            if (Nivo().Smjer == suprotanSmjer(smjer) && (nagradni_bodovi <= 0 || !Nivo().NagradniKvadratici))
            {
                return(false);
            }

            for (int i = 1; i < tip_igre.Redaka + 1; ++i)
            {
                for (int j = 1; j < tip_igre.Stupaca + 1; ++j)
                {
                    if (ploca[i, j] == kojiLik)
                    {
                        var sljedeciIndeksi = nxt(i, j, smjer);
                        if (!uGranicama(sljedeciIndeksi) || zauzet(ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]) || okupiraDrugi(kojiLik, ploca[sljedeciIndeksi.Item1, sljedeciIndeksi.Item2]))
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }
Esempio n. 7
0
        }       //Zavrseno! -Ogranicenje da figura ne pokriva figuru sa leve strane

        int provera_pri_pomeranju_desno()
        {
            int k = 1;

            switch (F)
            {
            case 1: if ((Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 2: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 3: if ((Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 4: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 5: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 6: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 7: if ((Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 8: if ((Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 9: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 10: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 11: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 12: if ((Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 13: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 14: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 15: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 16: if ((Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 17: if ((Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 18: if ((Controls["panel" + (f.koord[0] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[2] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;

            case 19: if ((Controls["panel" + (f.koord[1] + 1)].BackColor != Color.White) || (Controls["panel" + (f.koord[3] + 1)].BackColor != Color.White))
                {
                    k = 0;
                }
                break;
            }
            if (k == 0)
            {
                return(0);
            }
            else
            {
                return(1);
            }
        }       //Zavrseno! -Ogranicenje da figura ne pokriva figuru sa desne strane
Esempio n. 8
0
        private bool inicijaliziraj(Kvadrat kojiLik)
        {
            bool prvi       = kojiLik == Kvadrat.OkupiraPrviLik;
            bool viseLikova = Nivo().ViseLikova;

            urediLikove(kojiLik);

            Oblik aktivni = kojiLik == Kvadrat.OkupiraPrviLik ? aktivniOblikPrvi : aktivniOblikDrugi;

            int shift = 0;

            if (viseLikova && kojiLik == Kvadrat.OkupiraPrviLik)
            {
                shift = 2;
            }
            if (viseLikova && kojiLik == Kvadrat.OkupiraDrugiLik)
            {
                shift = -2;
            }

            switch (Nivo().Smjer)
            {
            case Smjerovi.Dolje:
                for (int i = 1, k = 0; i < 5; ++i, ++k)
                {
                    for (int j = tip_igre.Stupaca / 2 - 2 + shift, l = 0; j < tip_igre.Stupaca / 2 + 2 + shift; ++j, ++l)
                    {
                        if (ploca[i, j] != Kvadrat.Slobodan)
                        {
                            return(false);
                        }
                        ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                    }
                }
                aktivni.Pozicija = new Tuple <int, int>(1, tip_igre.Stupaca / 2 - 2 + shift);
                break;

            case Smjerovi.Gore:
                for (int i = tip_igre.Redaka - 3, k = 0; i < tip_igre.Redaka + 1; ++i, ++k)
                {
                    for (int j = tip_igre.Stupaca / 2 - 2 + shift, l = 0; j < tip_igre.Stupaca / 2 + 2 + shift; ++j, ++l)
                    {
                        if (ploca[i, j] != Kvadrat.Slobodan)
                        {
                            return(false);
                        }
                        ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                    }
                }
                aktivni.Pozicija = new Tuple <int, int>(tip_igre.Redaka - 3, tip_igre.Stupaca / 2 - 2 + shift);
                break;

            case Smjerovi.Desno:
                for (int i = tip_igre.Redaka / 2 - 2 + shift, k = 0; i < tip_igre.Redaka / 2 + 2 + shift; ++i, ++k)
                {
                    for (int j = 1, l = 0; j < 5; ++j, ++l)
                    {
                        if (ploca[i, j] != Kvadrat.Slobodan)
                        {
                            return(false);
                        }
                        ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                    }
                }
                aktivni.Pozicija = new Tuple <int, int>(tip_igre.Redaka / 2 - 2 + shift, 1);
                break;

            case Smjerovi.Lijevo:
            default:
                for (int i = tip_igre.Redaka / 2 - 2 + shift, k = 0; i < tip_igre.Redaka / 2 + 2 + shift; ++i, ++k)
                {
                    for (int j = tip_igre.Stupaca - 3, l = 0; j < tip_igre.Stupaca + 1; ++j, ++l)
                    {
                        if (ploca[i, j] != Kvadrat.Slobodan)
                        {
                            return(false);
                        }
                        ploca[i, j] = aktivni.Celije[k, l] ? kojiLik : ploca[i, j];
                    }
                }
                aktivni.Pozicija = new Tuple <int, int>(tip_igre.Redaka / 2 - 2 + shift, tip_igre.Stupaca - 3);
                break;
            }

            if (kojiLik == Kvadrat.OkupiraPrviLik)
            {
                aktivniOblikPrvi = aktivni;
            }
            else
            {
                aktivniOblikDrugi = aktivni;
            }

            return(true);
        }
Esempio n. 9
0
 private bool okupiraDrugi(Kvadrat prvi, Kvadrat drugi)
 {
     return(Nivo().ViseLikova&& (prvi == Kvadrat.OkupiraPrviLik && drugi == Kvadrat.OkupiraDrugiLik) || (prvi == Kvadrat.OkupiraDrugiLik && drugi == Kvadrat.OkupiraPrviLik));
 }