Štiri v vrsto

Štiri v vrsto

Avtor: M. Lokar, Nikola Stojanović, prenos v NAUK Alja Gligić

Uvod

Sprogramirali bomo igrico štiri v vrsto v programskem jeziku c#. Igra poteka izmenično med računalnikom in igralcem. Velikost polja je .

Najprej izberemo nov projekt

(novProjekt.jpg)
Nov projekt


ter možnost Windows Forms Application

(WinFormApp.jpg)
Windows Forms Application


Grafični vmesnik

Prikaže nam se novo grafično okno. Lastnosti, kot so ime in izpis objektov urejamo v oknu Properties .

(lastnosti.jpg)
Lastnosti


Če hočemo dodajati obstoječe objekte na formo, to najlažje storimo z orodno vrstico Toolbox . Najdemo jo v menijski vrstici pod view - Toolbox . Lahko pa uporabimo kar bližnjico s kombinacijo tipk Ctrl+Alt+X .

(viewToolBox.jpg)
Orodna vrstica ToolBox


Forma (obrazec)

V meniju Properties spremenimo formi velikost (size ). Formi spremenimo še ime (Name ), ki bo vidna v kodi in izpis(Text ), ki se pojavi v opisni vrstici. Nastavimo še parametra MaximizeBox na False in FormBorderStyle na FixedSingle , da uporabnik ne popači slike s spreminjanjem velikosti okna.

Formi nato dodamo risalno površino (Panel ) preko ToolBoxa in mu nastavimo velikost. Na tej površini bomo risali mrežo in krogce, ki predstavljajo žetone.

Formi dodamo na vrhu še gumba (Button ) Nova igra in Končaj . S klikom na enega od njiju se bo igra začela ponovno ali pa se bo končala.

Dodamo še gumb Spremeni ime in vnosno polje igralec. Ob kliku na gumb bo igralec lahko nastavil prikaz svojega imena na formi na tistega, ki je vpisan v vnosnem polju.

Dodamo še dve oznaki (Label ). Prva oznaka je čestitka, ki se prikaže, ko pride do zmage. Druga oznaka nam bo izpisovala, kdo je na potezi.

Za konec dodamo še izbirne gumbe (RadioButton ), ki določajo barve žetonov za računalnik in za igralca. Da vemo kateri kam spadajo, jih združimo v dve skupini (GroupBox ). Prvi barvi za računalnik in prvi barvi za igralca v skupini nastavimo izbor(Checked ) na true . Na koncu mora izgledati forma tako:

(stirivvrsto.jpg)
Štiri v vrsto - forma

Statične spremenljivke

Niza vnosnega polja, ki prikazujeta, kdo je na vrsti in čestitko spremenimo v prazen niz. Tako se bosta prikazala takrat, ko je to potrebno. Z dvoklikom na vsakega od objektov pridemo do kode objekta.

Najprej definirajmo statične spremenljivke. Ko jih bomo nastavljali na nove vrednosti v metodah, se bodo spreminjale globalno. Te definiramo le enkrat, nato jih lahko uporabljamo kjerkoli v razredu. Statične spremenljivke se ohranjajo, dokler ne zapremo program.

Najprej ustvarimo generator naključnih števil, ki ga bomo potrebovali pri odločanju, kdo začne igro in pri odločanju računalnika, kam postaviti krogec. Generiramo celo število, ki je 1 ali 2 in ga shranimo v spremenljivko kdo . Če je to število enako 1, igralec začel z igro, sicer začne računalnik.

Nato sledijo še dvodimenzionalna tabela 10x10 , ki prikazuje, kje v mreži so krogci ter širina in višina mreže. Nastavimo še privzeti barvi za računalnik in za igralca, ime igralca in število odkritih polj.

namespace StiriVVrsto
{
    public partial class stiriVVrsto_Forma : Form
    {
        static Random generator = new Random();
        static int kdo = generator.Next(1, 3);
        static int[,] polje = igralnoPolje();
        static int sirina_mreze = 501;
        static int visina_mreze = 501;
        static Color barva1 = Color.Aqua;
        static Color barva2 = Color.Red;
        static string imeIgralca = "igralec";
        static int odkritaPolja = 0;


Definiramo še preostale spremenljivke. Širino in višino panela shranimo pod spremenljivko sirina_mreze in visina_mreze . Premer krogca dobimo kot celoštevilsko deljenje med širino mreže s številom polj v vrstici.

        int sirina_mreze = 501;
        int visina_mreze = 501;
        int premerKroga = 50;
        int stPoljVStolpcu = 10;
        int stPoljVVrstici = 10;

Začetna tabela

Najprej poskrbimo za inicializacijo začetne tabele dimenzije 10x10. Tabela lahko vsebuje vrednosti 0, 1 ali 2. 0 pomeni, da ta del mreže še ni zaseden, 1 so krogci igralca, 2 so krogci računalnika. Na začetku ima tabela same ničle. Ko ustvarimo tabelo, jo vrnemo.

        private static int[,] igralnoPolje()
        {
            int sirina_mreze = 501;
            int visina_mreze = 501;
            int premerKroga = 50;
            int[,] tabela = new int[sirina_mreze / premerKroga, visina_mreze / premerKroga];
            for (int i = 0; i < sirina_mreze / premerKroga; i++)
            {
                for (int j = 0; j < visina_mreze / premerKroga; j++)
                    tabela[i, j] = 0;
            }
            return tabela;
        }


Sledi metoda za nastavljanje imena igralca. Ko kliknemo na gumb za nastavitev imena, se spremenita izpisa, ki povesta kdo je na vrsti in kdo ima izbrano katero barvo. Če je igre že konec potem igralec ne more več spremeniti imena.

        private void ime_Click(object sender, EventArgs e)
        {
            if (odkritaPolja < 100 && kdo == 1)
            {
                groupBox1.Text = "barva - " + igralec.Text;
                imeIgralca = igralec.Text;
                kdoJeNaVrsti.Text = "Na vrsti je " + imeIgralca + ".";
            }

            else if (odkritaPolja < 100)
            {
                groupBox1.Text = "barva - " + igralec.Text;
                imeIgralca = igralec.Text;
            }
        }

Nova igra in konec igre

S klikom na gumb Nova igra ustvarimo novo igro. Pri začne poraženec. Ponastavimo še izpis, ki prikazuje čestitko. Število odkritih polj nastavimo na 0 in inicializiramo začetno polje.

        private void novaIgra_Click(object sender, EventArgs e)
        {
            cestitka.Text = "";
            odkritaPolja = 0;
            polje = igralnoPolje();
            risalnaPovrsina.Refresh();
        }


S klikom na gumb Končaj končamo igro in zapremo program. Še prej pa uporabnika vprašamo, ali hoče zares končati igro.

        private void koncaj_Click(object sender, EventArgs e)
        {
            FormClosingEventArgs g = new FormClosingEventArgs(CloseReason.FormOwnerClosing, true);
            DialogResult izbira = MessageBox.Show("Ali si prepričan, da želiš nehati?",
                            "opozorilo",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Question);
            if (izbira == System.Windows.Forms.DialogResult.Yes)
            {
                g.Cancel = false;
            }

            if (g.Cancel == false) Close();
        }

Ne ravno bister računalnik

Sedaj implementiramo računalnikove poteze. Računalnik bo postavljal krogce povsem naključno (znotraj dovoljenega mesta). Vsak stolpec ima enako verjetnost, da bo izbran. Če računalnik izbere že zaseden stolpec, mora izbirati ponovno. Ko enkrat izbere dovoljeno mesto, to mesto shranimo v tabelo, tako da damo na to mesto število 2, ki predstavlja računalnik. Nato za naslednjega na potezi določimo igralca.

        private void racunalnik()
        {
            int nakljucniStolpec = generator.Next(0, 10);
            int ykoordPolja = 9;
            while (polje[nakljucniStolpec, ykoordPolja] != 0)
            {
                ykoordPolja -= 1;
                if (ykoordPolja <= 0)
                {
                    ykoordPolja = 9;
                    nakljucniStolpec = generator.Next(0, 10);
                }
            }
            polje[nakljucniStolpec, ykoordPolja] = 2;
            kdo = 1;
            risalnaPovrsina.Refresh();
        }

Preverimo zmagovalca

Sledi metoda, ki preveri, če imamo zmagovalca. Ta prejme en parameter, ki predstavlja računalnika ali igralca. Štiri v vrsto lahko nastane v stolpcu, vrstici ali po eni od obeh diagonal.

Najprej preverimo vrstico in stolpec na enak način. Sprehodimo se po tabeli polja in pogledamo, če se krogci, ki predstavljajo igralca ali računalnik držijo skupaj. Če se, vrnemo true .

        private bool preveriZmagovalca(int kdo)
        {
            for (int x = 0; x < stPoljVVrstici; x++)
            {
                for (int y = 0; y < stPoljVStolpcu; y++)
                {
                    if (y + 3 < stPoljVStolpcu)
                    {
                        if (polje[x, y] == kdo && polje[x, y + 1] == kdo && polje[x, y + 2] == kdo && polje[x, y + 3] == kdo)
                        {
                            return true;
                        }
                    }

                    if (x + 3 < stPoljVVrstici)
                    {
                        if (polje[x, y] == kdo && polje[x + 1, y] == kdo && polje[x + 2, y] == kdo && polje[x + 3, y] == kdo)
                        {
                            return true;
                        }
                    }

Preverimo zmagovalca

Sedaj preverimo na podoben način še obe diagonali. Pri naraščajoči diagonali oba indeksa naraščata za 1, pri padajoči pa vrstice padajo za 1, medtem ko stolpec povečujemo za 1.

                    if (x + 3 < stPoljVVrstici && y + 3 < stPoljVStolpcu)
                    {
                        if (polje[x, y] == kdo && polje[x + 1, y + 1] == kdo &&
                            polje[x + 2, y + 2] == kdo && polje[x + 3, y + 3] == kdo)
                        {
                            return true;
                        }
                    }

                    if (x - 3 >= 0 && y + 3 < stPoljVStolpcu)
                    {
                        if (polje[x, y] == kdo && polje[x - 1, y + 1] == kdo
                            && polje[x - 2, y + 2] == kdo && polje[x - 3, y + 3] == kdo)
                        {
                            return true;
                        }
                    }
                }
            }
            return false;
        }

Risanje krogov

Naslednja metoda nariše krogce na mreži. Potrebuje parametre g , ki predstavlja grafiko (risali bomo na risalno površino), tip (igralec (1) ali računalnik (2)), x in y , ki predstavljata levo zgornjo točko pravokotnika (v našem primeru kvadrata), ki objema krogec ter širino in višino tega pravokotnika.

Igralec lahko spreminja barvo svojim in računalnikovim krogcem glede na izbiro v skupini z izbirnimi polji.

        private void IzrisiKrog(Graphics g, int x, int y, int tip, int sirina, int visina)
        {
            if (Vodena.Checked == true) barva1 = Color.Aqua;
            else if (Apnena.Checked == true) barva1 = Color.Lime;
            else if (Indigo.Checked == true) barva1 = Color.Indigo;
            else if (Turkizna.Checked == true) barva1 = Color.Turquoise;
            else barva1 = Color.SkyBlue;

            if (Rumena.Checked == true) barva2 = Color.Yellow;
            else if (Rdeca.Checked == true) barva2 = Color.Red;
            else if (Oranzna.Checked == true) barva2 = Color.Orange;
            else if (Vijolicna.Checked == true) barva2 = Color.Violet;
            else barva2 = Color.Crimson;

            if (tip == 1)
                g.FillEllipse(new SolidBrush(barva1), x * sirina + 1, y * visina + 1, sirina - 2, visina - 2);

            else if (tip == 2)
                g.FillEllipse(new SolidBrush(barva2), x * sirina + 1, y * visina + 1, sirina - 2, visina - 2);
        }

Risalna površina

Ko se zažene risalna površina, preverimo, kdo je na vrsti. Če je na vrsti računalnik, kličemo metodo, ki postavlja računalnikove krogce na mrežo in popravimo besedilo, ki prikazuje, kdo je trenutno na vrsti. Če je na vrsti igralec, potem spremenimo le besedilo. Kam bo pristal krogec, določimo z metodo risalnaPovrsina_MouseClick .

Nato izberemo črn svinčnik, s katerim bomo narisali mrežo za igro na podlagi dimenzij polja (rišemo horizontalne in vertikalne črte). Sproti s klikanjem na risalno površino izrisujemo kroge, katere lastniki so shranjeni v tabeli polje .

        private void risalnaPovrsina_Paint(object sender, PaintEventArgs e)
        {
            if (kdo == 2)
            {
                kdoJeNaVrsti.Text = "Na vrsti je računalnik.";
                racunalnik();
            }

            else
            {
                kdoJeNaVrsti.Text = "Na vrsti je " + imeIgralca + ".";
            }

            Pen pisalo = new Pen(Color.Black, 1);

            for (int vrstica = 0; vrstica <= stPoljVStolpcu; vrstica++)
            {
                e.Graphics.DrawLine(pisalo, 0, premerKroga * vrstica, stPoljVVrstici * premerKroga, premerKroga * vrstica);
            }

            for (int stolpec = 0; stolpec <= stPoljVVrstici; stolpec++)
            {
                e.Graphics.DrawLine(pisalo, premerKroga * stolpec, 0, premerKroga * stolpec, stPoljVStolpcu * premerKroga);
            }

            for (int v = 0; v < stPoljVVrstici; v++)
            {
                for (int s = 0; s < stPoljVStolpcu; s++)
                {
                    IzrisiKrog(e.Graphics, v, s, polje[v, s], sirina_mreze / stPoljVVrstici, visina_mreze / stPoljVStolpcu);
                }
            }
        }

Klikanje na risalno površino

Na vrsti je še zadnja metoda v tem programu. S klikom na risalno površino bomo dodajali krogce na risalno površino in preverjali ali je konec igre. Če igralec klikne točno na črto ali en pixel zunaj, ne vemo, v katerem polju smo, zato ta klik ignoriramo.

Katero polje je igralec izbral, določimo na podlagi miškinega klika - tega pomnožimo s številom polj v vrstici (10) in delimo s širino risalne površine. Nato pogledamo, kje je prvi prazen prostor v stolpcu. Če je izbrani stolpec že v celoti zaseden, potem ta klik ignoriramo, sicer shranimo krogec v tabelo polje in povečamo število odkritih polj za 1. Nato preverimo, če je igralec prišel do zmage. Če je, izpišemo čestitko in mu ponudimo novo igro.

        private void risalnaPovrsina_MouseClick(object sender, MouseEventArgs e)
        {
            if (kdo == 2 || e.X <= 0 || e.Y >= 500 || sirina_mreze * 1.0 / e.X == sirina_mreze / e.X || e.X == sirina_mreze || e.Y == visina_mreze)
            {
                return;
            }

            int x = e.X * stPoljVVrstici / risalnaPovrsina.Width;
            int yTabela = stPoljVStolpcu - 1;
            while (yTabela >= 0)
            {
                if (polje[x, yTabela] == 0)
                {
                    polje[x, yTabela] = 1;
                    risalnaPovrsina.Refresh();
                    odkritaPolja += 1;
Tabela = yTabela - 1;
                    if (preveriZmagovalca(1) == true)
                    {
                        cestitka.Text = "Čestitamo, zmagali ste!";
                        kdoJeNaVrsti.Text = "Konec! \nIgra je neodločena.";
                        bool zapri = true;
                        DialogResult izbira = MessageBox.Show("Čestitamo, zmagali ste!\nŽelite novo igro?", "Konec igre", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (izbira == System.Windows.Forms.DialogResult.Yes)
                        {
                            zapri = false;
                            novaIgra_Click(sender, e);
                        }

                        if (zapri == true)
                        {
                            Close();
                        }
                    }

Klikanje na risalno površino

Naslednji na vrsti je računalnik, zato popravimo izpis ter spremenljivko kdo na računalnik. Nato izvededemo računalnikovo potez. Preverimo, če je mogoče računalnik prišel do zmage. Če je, izpišemo, da je igralec izgubil. Ponudimo mu novo igro.

                    kdoJeNaVrsti.Text = "Na vrsti je računalnik.";
                    kdo = 2;
                    racunalnik();
                    if (preveriZmagovalca(2) == true)
                    {
                        cestitka.Text = "Žal ste izgubili. \nPoskusite znova.";

                        bool zapri = true;
                        DialogResult izbira = MessageBox.Show("Konec! Žal ste izgubili.\nŽelite novo igro?", "Konec igre", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        kdoJeNaVrsti.Text = "Konec! \nIzgubili ste.";

                        if (izbira == System.Windows.Forms.DialogResult.Yes)
                        {
                            zapri = false;
                            novaIgra_Click(sender, e);
                        }

                        if (zapri == true)
                        {
                            Close();
                        }
                    }
                    break;
                }
                yTabela = yTabela - 1;
            }

Klikanje na risalno površino

Če zapolnimo vsa možna polja in ni prišlo do zmagovalca v zadnji potezi, napišemo sporočilo, da je igra neodločena. Igralcu ponudimo novo igro.

            if (odkritaPolja == 100 && preveriZmagovalca(1) == false && preveriZmagovalca(2) == false)
            {
                bool zapri = true;
                DialogResult izbira = MessageBox.Show("Konec! Igra je neodločena.\nŽelite novo igro?", "Konec igre", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                kdoJeNaVrsti.Text = " Konec! \nIgra je neodločena.";

                if (izbira == System.Windows.Forms.DialogResult.Yes)
                {
                    zapri = false;
                    novaIgra_Click(sender, e);
                }

                if (zapri == true)
                {
                    Close();
                }
            }

Primer zmage računalnika

Primer zmage igralca

Dodatek - izboljšani računalnik

Da računalnik ne meče krogcev le naključno, izboljšamo umetno inteligenco. Najprej ustvarimo metodo, ki preveri, če je želena poteza računalnika dovoljena. Najprej preverimo, da krogec damo krogec na podlago v stolpcu - da ne "visi" v zraku:

        private bool dovoljenaPoteza(int x, int y)
        {
            for (int i = 9; i > y; i--)
            {
                if (polje[x, i] == 0)
                {
                    return false;
                }
            }
            return true;
        }


Nato sledi še preverjanje, če v naslednji potezi lahko pride do štiri v vrsto.

        private void racunalnik()
        {
            int nakljucniStolpec = generator.Next(0, 10);
            int ykoordPolja = 9;
            bool triVVrsto = false;

            for (int x = 0; x < stPoljVVrstici; x++)
            {
                for (int y = 0; y < stPoljVStolpcu; y++)
                {
                    for (int z = 1; z < 3; z++)
                    {
                        if (y + 3 < stPoljVStolpcu)
                        {
                            if (polje[x, y] == 0 && polje[x, y + 1] == z && polje[x, y + 2] == z && polje[x, y + 3] == z)
                            {
                                nakljucniStolpec = x;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }
                        }

Dodatek - izboljšani računalnik

Preverimo vrstice:

                        if (x + 3 < stPoljVVrstici)
                        {
                            if (polje[x, y] == 0 && polje[x + 1, y] == z && polje[x + 2, y] == z && polje[x + 3, y] == z && dovoljenaPoteza(x , y) == true)
                            {
                                nakljucniStolpec = x;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x + 1, y] == 0 && polje[x + 2, y] == z && polje[x + 3, y] == z && dovoljenaPoteza(x + 1, y) == true)
                            {
                                nakljucniStolpec = x + 1;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x + 1, y] == z && polje[x + 2, y] == 0 && polje[x + 3, y] == z && dovoljenaPoteza(x + 2, y) == true)
                            {
                                nakljucniStolpec = x + 2;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x + 1, y] == z && polje[x + 2, y] == z && polje[x + 3, y] == 0 && dovoljenaPoteza(x + 3, y) == true)
                            {
                                nakljucniStolpec = x + 3;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }
                        }

Dodatek - izboljšani računalnik

preverimo naraščajočo diagonalo:

                        if (x + 3 < stPoljVVrstici && y + 3 < stPoljVStolpcu)
                        {
                            if (polje[x, y] == 0 && polje[x + 1, y + 1] == z && polje[x + 2, y + 2] == z && polje[x + 3, y + 3] == z && dovoljenaPoteza(x, y) == true)
                            {
                                nakljucniStolpec = x;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x + 1, y + 1] == 0 && polje[x + 2, y + 2] == z && polje[x + 3, y + 3] == z && dovoljenaPoteza(x + 1, y + 1) == true)
                            {
                                nakljucniStolpec = x + 1;
                                ykoordPolja = y + 1;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x + 1, y + 1] == z && polje[x + 2, y + 2] == 0 && polje[x + 3, y + 3] == z && dovoljenaPoteza(x + 2, y + 2) == true)
                            {
                                nakljucniStolpec = x + 2;
                                ykoordPolja = y + 2;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x + 1, y + 1] == z && polje[x + 2, y + 2] == z && polje[x + 3, y + 3] == 0 && dovoljenaPoteza(x + 3, y + 3) == true)
                            {
                                nakljucniStolpec = x + 3;
                                ykoordPolja = y + 3;
                                triVVrsto = true;
                                break;
                            }
                        }

Dodatek - izboljšani računalnik

preverimo padajočo diagonaloe:

                        if (x - 3 >= 0 && y + 3 < stPoljVStolpcu)
                        {
                            if (polje[x, y] == 0 && polje[x - 1, y + 1] == z && polje[x - 2, y + 2] == z && polje[x - 3, y + 3] == z && dovoljenaPoteza(x , y) == true)
                            {
                                nakljucniStolpec = x;
                                ykoordPolja = y;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x - 1, y + 1] == 0
    && polje[x - 2, y + 2] == z && polje[x - 3, y + 3] == z && dovoljenaPoteza(x - 1, y + 1) == true)
                            {
                                nakljucniStolpec = x - 1;
                                ykoordPolja = y + 1;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x - 1, y + 1] == z && polje[x - 2, y + 2] == 0 && polje[x - 3, y + 3] == z && dovoljenaPoteza(x - 2, y + 2) == true)
                            {
                                nakljucniStolpec = x - 2;
                                ykoordPolja = y + 2;
                                triVVrsto = true;
                                break;
                            }

                            if (polje[x, y] == z && polje[x - 1, y + 1] == z
    && polje[x - 2, y + 2] == z && polje[x - 3, y + 3] == 0 && dovoljenaPoteza(x - 3, y + 3) == true)
                            {
                                nakljucniStolpec = x - 3;
                                ykoordPolja = y + 3;
                                triVVrsto = true;
                                break;
                            }
                        }
                    }
                }
            }

Dodatek - izboljšani računalnik

Za konec preverimo še, če obstaja možnost za štiri v vrsto v naslednji potezi.

            while (polje[nakljucniStolpec, ykoordPolja] != 0 && triVVrsto == false)
            {
                ykoordPolja -= 1;
                if (ykoordPolja <= 0)
                {
                    ykoordPolja = 9;
                    nakljucniStolpec = generator.Next(0, 10);
                }
            }
            polje[nakljucniStolpec, ykoordPolja] = 2;
            kdo = 1;
            risalnaPovrsina.Refresh();
        }

Naloge

Če si razumel, kako se sprogramira igra štiri v vrsto, lahko poskusiš narediti še sledeče igre, ki vsebujejo podoben koncept:

Kviz

Kakšno število dobimo z naslednjim ukazom: Random generator = new Random(); število = generator.Next(4, 10);


celo število znotraj [4,10)
program vrne napako
realno število znotraj [4,10]
celo število znotraj [4,10]
realno število znotraj (4,10)
celo število znotraj (4,10)
realno število znotraj [4,10)
celo število znotraj [4,10)
celo število znotraj (4,10]



Naprej

Pravilno! Naprej

Narobe! Ponovno

Kviz

Kje lahko spremenimo ime objektom forme?


v oknu objekta Properties
v orodni vrstici ToolBox
s klikom na start debugging
objektom ne moremo spremeniti privzetih imen



Naprej

Pravilno! Naprej

Narobe! Ponovno

Kviz

Koliko števil lahko največ vsebuje sledeča tabela: x=14; int[,] tabela = new int[4*x/7, x/2];?


56
15
8
7
1



Naprej

Pravilno! Naprej

Narobe! Ponovno

Kviz

Igra štiri v vrsto ima dolžino mreže 270, širino pa 180. Mreža je sestavljena iz devetih stolpcev in šestih vrstic. Kakšen je polmer kroga, če debelino črt mreže zanemarimo in krogec zavzema največji možen prostor kvadratku mreže?




Naprej

Pravilno! Naprej

Narobe! Ponovno

Kviz

Poveži izraze med seboj:

Groupbox
Button
Panel
RadioButton
CheckBox
skupina
gumb
risalna plošča
izbirni gumb
potrditveno polje



Naprej

Pravilno! Naprej

Narobe! Ponovno

0%
0%