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
|
ter možnost Windows Forms Application
|
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
|
ter možnost 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
.
|
Č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
.
|
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:
|
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.
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.
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.
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.
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.
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.
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.
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
.
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.
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.
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 .
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.
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.
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.
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:
Nato sledi še preverjanje, če v naslednji potezi lahko pride do štiri v vrsto.
Dodatek - izboljšani računalnik
Preverimo vrstice:
Dodatek - izboljšani računalnik
preverimo naraščajočo diagonalo:
Dodatek - izboljšani računalnik
preverimo padajočo diagonaloe:
Dodatek - izboljšani računalnik
Za konec preverimo še, če obstaja možnost za štiri v vrsto v naslednji potezi.
Naloge
Kviz
Pravilno! Naprej
Narobe! Ponovno
Kviz
Pravilno! Naprej
Narobe! Ponovno
Kviz
Pravilno! Naprej
Narobe! Ponovno
Kviz
Pravilno! Naprej
Narobe! Ponovno
Kviz
Pravilno! Naprej
Narobe! Ponovno