Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Drawing;
- using System.Windows.Forms;
- partial class MainForm : Form
- {
- int[,] Plocha = {
- {2, 0, 0, 0, 0, 0, 0, 2},
- {0, 0, 0, 0, 0, 0, 0, 0},
- {0, 0, 0, 1, 1, 0, 0, 0},
- {0, 0, 1, 2, 2, 1, 0, 0},
- {0, 0, 1, 2, 2, 1, 0, 0},
- {0, 0, 0, 1, 1, 0, 0, 0},
- {0, 0, 0, 0, 0, 0, 0, 0},
- {2, 0, 0, 0, 0, 0, 0, 2}};
- void MainFormLoad(object sender, EventArgs e)
- {
- // toto si nevsimaj je to zbytocne :D
- }
- void MainFormPaint(object sender, PaintEventArgs e) // toto si nevsimaj len sa tu vykresluje na zaciatku ihrisko
- {
- Graphics g = e.Graphics;
- for (int r = 0; r < 8; r++)
- {
- for (int s = 0; s < 8; s++)
- {
- if (Plocha[r,s] == 1)
- {
- g.FillEllipse(Brushes.Yellow,r * 45+5,s * 45+5, 35, 35);
- }
- else if (Plocha[r,s] == 2)
- {
- g.FillRectangle(Brushes.Red,r * 45,s * 45, 45, 45);
- }
- else if (Plocha[r,s] == 3)
- {
- g.FillRectangle(Brushes.Red,r * 45,s * 45, 45, 45);
- g.FillEllipse(Brushes.Yellow,r * 45+5,s * 45+5, 35, 35);
- }
- g.DrawRectangle(Pens.Black,r * 45,s * 45, 45, 45);
- }
- }
- }
- int PocetMimo()
- {
- int pocet = 0;
- for (int r = 0; r < 8; r++)
- {
- for (int s = 0; s < 8; s++)
- {
- if (Plocha[r,s] == 1)
- {
- pocet = pocet + 1;
- }
- }
- }
- return pocet;
- }
- void Horz(int r, int od, int kam)
- {
- int volne = 1; // na zaciatku nastavujem na 1 co znamena ze mam volnu cestu na policko kam chcem ist
- if (od < kam) // pokial je od mensie ako kam tak kontrolujem policka v rozsahu -> od+1 az kam (vratane kam lebo aj tam niekto moze stat)
- {
- for (int s = od + 1;s<=kam;s++)
- {
- if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
- {
- volne = 0; // pokial nejake policko na ceste -> od+1 az kam nie je volne tak sa premenna volne nastavi na nulu a neskor nedovoli urobit tah
- }
- }
- }
- else if (od > kam) // pokial je kam mensie ako od tak POZOR! kontrolujem policka v rozsahu -> kam az od-1
- {
- for (int s = kam;s<od;s++)
- {
- if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
- {
- volne = 0; // podobne ako vyssie nastavim na nulu ak je nieco v ceste
- }
- }
- }
- if (volne == 1) // ak nic nebolo v ceste, mozem vykonat tah :)
- {
- Plocha[r,od] = Plocha[r,od]-1;
- Plocha[r,kam] = Plocha[r,kam]+1;
- }
- }
- void Vert(int s, int od, int kam) // presne ta ista logika ako v Horz akurat ze vo for cykle mam miesto premennej s, premennu r ale inak totozna metoda
- {
- int volne = 1;
- if (od < kam)
- {
- for (int r = od + 1;r<=kam;r++)
- {
- if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
- {
- volne = 0;
- }
- }
- }
- else if (od > kam)
- {
- for (int r = kam;r<od;r++)
- {
- if (Plocha[r,s] == 1 || Plocha[r,s] == 3)
- {
- volne = 0;
- }
- }
- }
- if (volne == 1) // ak sa moze pohnut
- {
- Plocha[od,s] = Plocha[od,s]-1;
- Plocha[kam,s] = Plocha[kam,s]+1;
- }
- }
- int ozn = 0; // hovori o tom, ci je uz oznacene nejake policko
- int oznr; // index oznaceneho riadku z ktoreho sa chcem pohnut
- int ozns; // index oznaceneho stlpca z ktoreho sa chcem pohnut
- void MainFormMouseClick(object sender, MouseEventArgs e)
- {
- Graphics g = CreateGraphics();
- if (ozn == 0) //ak nemam oznacene policko tak tu ho oznacim
- {
- int s = e.Y/45;
- int r = e.X/45;
- if (r>=0 && s>=0 && r<9 && s<9) {
- g.DrawRectangle(Pens.Blue,r*45-1,s*45-1,46,46);
- }
- oznr = r;
- ozns = s;
- }
- else // ak mam uz oznacene policko tak tu vyberam ci je to horizontalny alebo vertikalny krok
- {
- int s = e.Y/45;
- int r = e.X/45;
- if (r>=0 && s>=0 && r<9 && s<9)
- {
- if (oznr == r && ozns == s)
- {
- //nerob nic ak klikas na to iste policko ako je oznacene
- }
- else if (oznr == r)
- {
- Horz(r,ozns,s);
- }
- else if (ozns == s)
- {
- Vert(s,oznr,r);
- }
- }
- oznr = -1;
- ozns = -1;
- Invalidate();
- if(PocetMimo()==0)
- {
- MessageBox.Show("Vyhral si!");
- }
- }
- if(ozn==0) ozn = ozn+1;
- else ozn = ozn-1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement