Osnovni Kurs 2 PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

Primeri aplikacija linijske strukture

1. Kreirati aplikaciju u kojoj se boja pozadine menja u neku nijansu plave


u pravilnim vremenskim intervalima, a boja slova labele se menja
izborom iz ColorDialoga.

private void Form1_Load(object sender, EventArgs e)


{
timer1.Start();
}

private void button1_Click(object sender, EventArgs e)


{
timer1.Interval = 1000; //1 sekunda
}

private void button2_Click(object sender, EventArgs e)


{
timer1.Interval = 100; //desetinka
}

Random r = new Random();

private void timer1_Tick(object sender, EventArgs e)


{
int crvena = r.Next(150);
int zelena = r.Next(150);
int plava = r.Next(160, 256);
BackColor = Color.FromArgb(crvena, zelena, plava);
}

private void pictureBox1_Click(object sender, EventArgs e)


{
colorDialog1.ShowDialog();
label1.ForeColor = colorDialog1.Color;
pictureBox1.BackColor = colorDialog1.Color;
}
2. Kreirati aplikaciju u kojoj se u pravilnim vremenskim intervalima
menja boja slova labele u neku nijansu zelene.

private void Form1_Load(object sender, EventArgs e)


{
timer1.Start();
timer1.Interval = 500;
}

Random r = new Random();

private void timer1_Tick(object sender, EventArgs e)


{
int crvena = r.Next(150);
int zelena = r.Next(160, 256);
int plava = r.Next(150);
label1.ForeColor = Color.FromArgb(crvena, zelena, plava);
}

3. Kreirari aplikaciju u kojoj se prikazuju razliite kombinacije boja


zastave koja ima tri horizontalna polja.
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
timer1.Interval = 500;
}

Random r = new Random();


private void timer1_Tick(object sender, EventArgs e)
{
int crvena = r.Next(256);
int zelena = r.Next(256);
int plava = r.Next(256);
pictureBox1.BackColor = Color.FromArgb(crvena, zelena, plava);
crvena = r.Next(256);
zelena = r.Next(256);
plava = r.Next(256);
pictureBox2.BackColor = Color.FromArgb(crvena, zelena, plava);
crvena = r.Next(256);
zelena = r.Next(256);
plava = r.Next(256);
pictureBox3.BackColor = Color.FromArgb(crvena, zelena, plava);
}
4. Kreirati aplikaciju u kojoj se listBox nasumino popunjava celim
brojevima u pravilnim vremenskim intervalima. Kontrola texBox u
svakom trenutku prikazuje ukupan zbir brojeva koji se nalaze u listi.

private void Form1_Load(object sender, EventArgs e)


{
timer1.Start();
timer1.Interval = 500;
}

Random r = new Random();


int zbir = 0;

private void timer1_Tick(object sender, EventArgs e)


{
int a = r.Next(1, 1000);
listBox1.Items.Add(a);
zbir += a;
textBox1.Text = zbir.ToString();
}
5. Kreirati aplikaciju u kojoj se u pravilnim vremenskim intervalima bira
sluajan devetocifren broj.

Random R = new Random();


private void timer1_Tick(object sender, EventArgs e)
{
int x = R.Next(100000000, 1000000000);
textBox1.Text = x.ToString();
}

private void btKreni_Click(object sender, EventArgs e)


{
timer1.Start();

private void btStani_Click(object sender, EventArgs e)


{
timer1.Stop();
}

6. Kreirati aplikaciju kojom se unose ocene nekog uenika i prikazuju u


objektu klase ListBox, obezbediti odreivanje i prikaz proseka na dve
decimale. Sve ocene su vece od 1.
int suma = 0;
int n = 0;
private void btDodajOcenu_Click(object sender, EventArgs e)
{
int ocena = Convert.ToInt32(tbOcena.Text);
lbOcene.Items.Add(ocena);
suma += ocena;
n++;
tbOcena.Text = "";
tbOcena.Focus();
}

private void btKrajUnosa_Click(object sender, EventArgs e)


{
float prosek = (float)suma / n;
lbOcene.Items.Add(" prosek : "+prosek.ToString("0.00"));
}

7. Proiriti prethodnu aplikaciju tako da je obezbedjen unos ocena za vie


uenika, i prikaz proseka svakog od njih u objektu klase ListBox.

int suma = 0;
int n = 0;
private void btDodajOcenu_Click(object sender, EventArgs e)
{
int ocena = Convert.ToInt32(tbOcena.Text);
lbOcene.Items.Add(ocena);
tbOcena.Text = "";
tbOcena.Focus();
suma += ocena;
n++;
}

private void btKrajUnosa_Click(object sender, EventArgs e)


{
float prosek = (float)suma / n;
lbUcenici.Items.Add(tbIme.Text+" prosek : "+prosek.ToString("0.00"));
suma = 0; n = 0;
lbOcene.Items.Clear();
tbIme.Text = tbOcena.Text="";
tbIme.Focus();
}
8. Avion je poleteo u X sati i Y minuta, u letu je proveo A minuta. Kreirati
aplikaciju kojom se odreuje vreme sletanja aviona. Vreme sletanja
prikazati u objektu klase Label.
Ulaz X=14 Y=40 A=45 Izlaz 15h 25 min
Ulaz X=22 Y=40 A=225 Izlaz 2h 25 min

private void btVremeSletanja_Click(object sender, EventArgs e)


{
int sat, min, trajanje;
// sat,minut poletanja i duzinu leta procitamo iz odgovarajucih
// objekta klase TextBox
// ( svojstvo name kod svakog od njih smo proemnili)
sat = Convert.ToInt32(tbSat.Text);
min = Convert.ToInt32(tbMin.Text);
trajanje = Convert.ToInt32(tbTrajanje.Text);
// vreme poletanja pretvorimou minute i dodamo duzinu leta
min = min + sat * 60 + trajanje;
sat = min / 60;
min = min % 60;
sat = sat % 24;
// tbVremeSletanja.Text = Convert.ToString(sat) + ":"
// + Convert.ToString(min);
tbVremeSletanja.Text = sat + ":" + min;
// ako je jedan od operanada operatora + string
// implicitnom konverzijom se i drugi operand konvertuje u string
// tako da ne moramo eksplicitno navoditi Convert.Tostring(...)
}

9. Putovanje ake ekskurzije do Zlatibora traje A sati i B minuta, planirano je


da aci na Zlatibor stignu u X sati i Y minuta. Kreirati aplikaciju kojim se
odreuje kad autobus treba da krene. Pretpostavimo da se putovanje odvija
u jednom danu.

private void btPolazak(object sender, EventArgs e)


{
int a, b, x, y;
// x , y sat, minut planiranog dolaska
x = Convert.ToInt32(tbX.Text);
y = Convert.ToInt32(tbY.Text);
// a , b sat, minut duzine putovanja
a = Convert.ToInt32(tbA.Text);
b = Convert.ToInt32(tbB.Text);
int t, sat, min;
// sve pretvorimo u minute i oduzmemo
// pa rezultat pretvorimo u sat i min

t = (x * 60 + y) - (a * 60 + b);
sat = t / 60;
min = t % 60;
tbPolazak.Text = sat + ":" + min;
}

Primeri uvodnih aplikacija u kojim se koristi klasa Graphics


1. Kreirati aplikaciju kojom se u PictureBoxu crtaju dijagonale, pravougaonik ili
elipsa. Izbor realizovati korienjem tri kontrole Button.

private void btDijagonale_Click(object sender, EventArgs e)


{
pictureBox1.Refresh();
Graphics g=pictureBox1.CreateGraphics();
Pen olovka=new Pen(Color.Red,3);
g.DrawLine(olovka,0,0,pictureBox1.Width,pictureBox1.Height);
g.DrawLine(olovka,pictureBox1.Width,0,0,pictureBox1.Height);
olovka.Dispose(); // nije neophodno
g.Dispose(); // nije neophodno
}
private void btPravougaonik_Click(object sender, EventArgs e)
{
// kreiranje grafickog objekta
Graphics g=pictureBox1.CreateGraphics();
// ciscenje prostora za crtanje
g.Clear(Color.White);
// kreiranje olovke crvene boje, sirine 3
Pen olovka=new Pen(Color.Red,3);
// crtanje pravougaonika
g.DrawRectangle(olovka,10,10,
pictureBox1.Width-20 , pictureBox1.Height-20);
olovka.Dispose();
g.Dispose();
}
private void btElipsa_Click(object sender, EventArgs e)
{
pictureBox1.Refresh();
Graphics g=pictureBox1.CreateGraphics();
Pen olovka=new Pen(Color.Red,3);
g.DrawEllipse(olovka,10,10,
pictureBox1.Width-20 , pictureBox1.Height-20);
olovka.Dispose();
g.Dispose();
}

2. Proiriti prethodnu aplikaciju tako to se na dugme elipsa, pored elipse crta i


krug sa centom u sredini objekta klase PictureBox poluprenika 50.

private void btElipsa_Click(object sender, EventArgs e)


{
pictureBox1.Refresh();
Graphics g=pictureBox1.CreateGraphics();
Pen olovka=new Pen(Color.Red,3);
g.DrawEllipse(olovka,10,10,
pictureBox1.Width-20 , pictureBox1.Height-20);
olovka.Width = 5;
olovka.Color = Color.Blue;
g.DrawEllipse(olovka, pictureBox1.Width/2-50 ,
pictureBox1.Height/2-50,100,100);

3. Kreirati aplikaciju kojom se


a) za dato r crta slika kao na crteu, krugovi su sa centom u sredini
objekta kalse PixtureBox, prvi krug je datog poluprenika r, a svaki
sledei je za 10 vei od prethodnog

private void btCrtez1_Click(object sender, EventArgs e)


{
Graphics g = pictureBox1.CreateGraphics();
Pen olovka = new Pen(Color.Blue, 2);
int w = pictureBox1.Width;
int h = pictureBox1.Height;
g.Clear(Color.White);
g.DrawLine(olovka, w / 2, 0, 0, h / 2);
g.DrawLine(olovka, 0, h / 2, w / 2, h);
g.DrawLine(olovka, w / 2, h, w, h / 2);
g.DrawLine(olovka, w, h / 2, w / 2, 0);
olovka.Width = 5;
olovka.Color = Color.Red;
int r = Convert.ToInt32(textBox1.Text);
g.DrawEllipse(olovka, w / 2 - r, h / 2 - r, 2 * r, 2 * r);
r = r + 10;
g.DrawEllipse(olovka, w / 2 - r, h / 2 - r, 2 * r, 2 * r);
r = r + 10;
g.DrawEllipse(olovka, w / 2 - r, h / 2 - r, 2 * r, 2 * r);
}

b) crta crek kao na slici (objekat klase PictureBox se deli na 9 jednakih


delova)
private void btCrtez2_Click(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
Pen olovka = new Pen(Color.Blue, 5);
int w = pictureBox1.Width;
int h = pictureBox1.Height;

g.Clear(Color.White);
g.DrawLine(olovka, w / 3, 0, w / 3, h);
g.DrawLine(olovka, 2 * w / 3, 0, 2 * w / 3, h);

g.DrawLine(olovka, 0, h / 3, w, h / 3);
g.DrawLine(olovka, 0, 2 * h / 3, w, 2 * h / 3);

olovka.Color = Color.Red;
olovka.Width = 3;
g.DrawLine(olovka, 0, 0, w / 3, h / 3);
g.DrawLine(olovka, w / 3, 0, 0, h / 3);
g.DrawLine(olovka, 2 * w / 3, 2 * h / 3, w, h);
g.DrawLine(olovka, w, 2 * h / 3, 2 * w / 3, h);
SolidBrush cetka = new SolidBrush(Color.Green);
g.FillEllipse(cetka, w / 3 + 5, h / 3 + 5, (w / 3 - 10), (h / 3 - 10));
cetka.Color = Color.Yellow;

g.FillEllipse(cetka, w / 3 + 20, h / 3 + 20, (w / 3 - 40), (h / 3 - 40));


}

4. Nacrtati zmaja, kao na slici.

private void Form1_Paint(object sender,


PaintEventArgs e)
{
Graphics g = e.Graphics;
// ne treba u Paint-u g=CreateGraphics();
Pen olovka = new Pen(Color.Brown, 5);
int a=ClientRectangle.Width;
int b=ClientRectangle.Height;
g.DrawLine(olovka, a/2, 0,a/4,b/4);
g.DrawLine(olovka, a / 4, b / 4, a/2,b);
g.DrawLine(olovka, a / 2, b, 3*a/4, b/4);
g.DrawLine(olovka, 3 * a / 4, b / 4,a/2,0);
olovka.Color = Color.Yellow;
olovka.Width = 2;
g.DrawLine(olovka, a/2,0,a/2,b);
g.DrawLine(olovka, a / 4, b/4, 3 * a / 4, b / 4);
}

private void Form1_Resize(object sender, EventArgs e)


{
Refresh(); // ponovo poziva Paint
}
5. Kreairati aplikaciju kojom se crtaju
popunjeni pravougaonici u nijansama
roze boje u granicama forme.
Pravougaonici se crtaju u pravilnim
vremenskim intervalima. Na sluajan
nain bira se duina od 120 do 199,
sirina od 20 do 69, i gornje desno teme
pravougaonika. Obezbediti dugme za
poetak i za zaustavljanje crtanja.

Random r = new Random();

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
Color boja = Color.FromArgb(r.Next(20, 150),
r.Next(150, 256), r.Next(100), r.Next(150, 256));
SolidBrush cetka = new SolidBrush(boja);
int a = r.Next(120, 200);
int b = r.Next(20, 70);
int x = r.Next(ClientRectangle.Width - a);
int y = r.Next(ClientRectangle.Height - b);
g.FillRectangle(cetka, x, y, a, b);
}

private void button1_Click(object sender, EventArgs e)


{
timer1.Start();
}

private void button2_Click(object sender, EventArgs e)


{
timer1.Stop();
}
6. Kreirati aplikaciju kojom se obezbeuje crtanje kruga
datog poluprenika (TextBox), centar kruga je taka
na koju je korisnik kliknuo, boja kruga se bira na
sluajan nain.

Random R = new Random();


private void Form1_MouseClick(object sender, MouseEventArgs e)
{
int x, y;
x = e.X;
y = e.Y;
Color boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
Graphics g = CreateGraphics();
SolidBrush cetka = new SolidBrush(boja);
int r = Convert.ToInt32(textBox1.Text);
g.FillEllipse(cetka, x - r, y - r, 2 * r, 2 * r);
}

7. Kreirati aplikaciju kojom se preko cele forme crta strelica kao na slici. Strelica
je sluajno odabrane boje. Kada se menja veliina forme, strelica se ponovo
iscrtava.
Random R = new Random();
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen olovka = new Pen(Color.FromArgb(R.Next(256), R.Next(256), R.Next(256)), 8);
int a = ClientRectangle.Width;
int b = ClientRectangle.Height;
g.DrawLine(olovka, 0,b / 2, a , b / 2);
g.DrawLine(olovka, a/2,0, a , b / 2);
g.DrawLine(olovka, a/2, b , a , b/2);

private void Form1_Resize(object sender, EventArgs e)


{
Refresh();
}
8. Kreirati aplikaciju kojom se preko cele forme crta strelica
kao na slici. Strelica je sluajno odabrane boje. Kada se
menja veliina forme, strelica se ponovo iscrtava.

Random R = new Random();


private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen olovka = new Pen(Color.FromArgb(R.Next(256),
R.Next(256), R.Next(256)), 8);
int a = ClientRectangle.Width;
int b = ClientRectangle.Height;
g.DrawLine(olovka, a / 2, 0, a / 2, b / 2);
g.DrawLine(olovka, 0,b / 2, a , b / 2);
g.DrawLine(olovka, 0,b/2, a / 2, b);
g.DrawLine(olovka, a, b/2 , a / 2, b);

private void Form1_Resize(object sender, EventArgs e)


{
Refresh();
}

9. Kreirati aplikaciju kojom se crta serija od 6 pravougaonika. Prvi pravougaonik


je veliine forme, a za svaki sledei stranice pravougaonika se smanje za 40.
Centar savkog parvougaonika je sredina forme. U pravilnim vremenskim
intervalima pravougaonici menjaju boju.
Random R = new Random();
private void Form1_Load(object sender, EventArgs e)
{
timer1.Interval = 200;
timer1.Start();
}

private void Form1_Paint(object sender, PaintEventArgs e)


{
Graphics g = e.Graphics;
Color boja = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
SolidBrush cetka = new SolidBrush(boja);
int x = 0;
int y = 0;
int a = ClientRectangle.Width;
int b = ClientRectangle.Height;
g.FillRectangle(cetka, x, y, a, b);

//sledecih 6 redova iskopirati 4 puta


x += 20;
y += 20;
b -= 40;
a -= 40;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
g.FillRectangle(cetka, x, y, a, b);

//ovo su kopije
x += 20;
y += 20;
b -= 40;
a -= 40;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
g.FillRectangle(cetka, x, y, a, b);
x += 20;
y += 20;
b -= 40;
a -= 40;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
g.FillRectangle(cetka, x, y, a, b);
x += 20;
y += 20;
b -= 40;
a -= 40;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
g.FillRectangle(cetka, x, y, a, b);
x += 20;
y += 20;
b -= 40;
a -= 40;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
g.FillRectangle(cetka, x, y, a, b);

}
10.Kreirati aplikaciju kojom se crtaju linije kojima je koordinata poetne take
odreena poloajem strelice mia u trenutku pritiska dugmeta mia, a
koordinata krajnje take odreena poloajem strelice mia u trenutku
otputanja dugmeta.
Kako liniju moemo nacrtati samo kada su odreene koordinate i poetne i krajnje
take, metod DrawLine pozivamo po otputanju dugmeta mia, dakle u dogaaju
MouseUp. Koordinate poetne take odreujemo u trenutku pritiska dugmeta, u
dogaaju MouseDown. Parametar ovih dogaaja, MouseEventArgs e, sadri i informaciju
(e.X, e.Y) o lokaciji strelice mia pri izvravanju dogaaja.
Random R = new Random();
int xp, yp;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{ //postavljanje koordinate pocetne tacke
xp = e.X;
yp = e.Y;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
Graphics g = CreateGraphics();
Pen olovka = new Pen(Color.FromArgb(R.Next(256),
R.Next(256), R.Next(256)));
//crtanje linije od koordinate pocetne tacke do lokacije misa
g.DrawLine(olovka, xp, yp, e.X, e.Y);
}

11.Kreirati aplikaciju kojom se craju


prskalice, na poziciji na kojoj je korisnik
kliknuo. U pravilnim vremenskim
intervalima, dok korisnik ne otpusti taster
mia, iscrtavati dui koje spajaju taku na
koju je korisnik kliknuo sa takom iz
njene okoline (na udaljenosti najvie 50
po obe koordinate take). Dui se
prikazuju u nijansama crvene boje (izbor
nijanse na sluajan nain).

int x, y;
Random R = new Random();
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
timer1.Start();

private void Form1_MouseUp(object sender, MouseEventArgs e)


{
timer1.Stop();
}

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
Pen olovka=new Pen(Color.FromArgb(R.Next(150,256),R.Next(70),R.Next(70)));
int a = R.Next(-50, 50);
int b = R.Next(-50, 50);
g.DrawLine(olovka, x, y, x + a, y + b);
}
12.Kreirati aplikaciju kojom se taa (0,0) spja sa takom
na koju je korisnik kliknuo, liniju prikazati u sluajno
odabranoj boji, svake sekunde uveavati debljinu
linije za 1 sve dok korisnik ne otpusti taster mia
(MouseDown).

int x, y;
Pen olovka = new Pen(Color.Red);
Random R = new Random();
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
olovka.Width = 1;
olovka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
timer1.Start();
}

private void Form1_MouseUp(object sender, MouseEventArgs e)


{
timer1.Stop();
}

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
g.DrawLine(olovka, 0, 0, x, y);
olovka.Width++;
}

13. Kreirati aplikaciju kojom se icrtava popunjen krug na


mesto gde je korisnik kliknuo (MouseDown) poluprecnika
5, svake sekunde se poluprecnik povecava za 2 dok
korisnik ne otpusti taster.
int x, y;
Random R = new Random();
SolidBrush cetka = new SolidBrush(Color.Red);
int r;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
cetka.Color=Color.FromArgb(R.Next(256),R.Next(256),R.Next(256));
r = 5;
timer1.Start();

private void Form1_MouseUp(object sender, MouseEventArgs e)


{
timer1.Stop();
}

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
g.FillEllipse(cetka, x - r, y - r, 2 * r, 2 * r);
r += 2;
}
14.Krugovi sa centrom u centru forme, maksimalnog poluprenika, svake
sekunde se smanji poluprenik za 5, boja kruga se odreuje na sluajan
nain. Tajmer se zaustavi kada poluprenik kruga postane manji ili jednak 0.

Random R = new Random();


int x, y,r;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
r = 100;
timer1.Start();

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
Pen olovka=new Pen(Color.FromArgb(R.Next(256),R.Next(256),R.Next(256)),2);
g.DrawEllipse(olovka, x - r, y - r, 2 * r, 2 * r);
r -= 5;
if(r<0)
timer1.Stop();
}

15.Kreirati aplikaciju u kojoj se jedan trougao


kree sa leva na desno preko cele forme.
Trougao je jednakokraki, osnovica mu je
paralelna sa osom, a duina osnovice je
jednaka dvostrukoj duini visine koja joj
odgovara. Trougao je u nekoj nijansi zelene.

int x, y, a;
Color boja;
Random r = new Random();

private void Form1_Load(object sender, EventArgs e)


{
x = 0;
y = ClientRectangle.Height / 2;
a = 120;
//nijansa zelene boje - malo crvene i plave, puno zelene
boja = Color.FromArgb(r.Next(160), r.Next(170, 256), r.Next(160));
timer1.Start();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
int crvena = boja.R;
int zelena = boja.G;
int plava = boja.B;
Pen olovka = new Pen(boja, 5);
SolidBrush cetka=new SolidBrush(Color.FromArgb(160, crvena, zelena, plava));
Point p1 = new Point(x, y - a / 2);
Point p2 = new Point(x + a / 2, y);
Point p3 = new Point(x, y + a / 2);
Point[] p = { p1, p2, p3 };
g.FillPolygon(cetka, p);
g.DrawPolygon(olovka, p);
}

private void timer1_Tick(object sender, EventArgs e)


{
x += 5;
Refresh(); //ponovo poziva dogadjaj Paint
}

16. Kreirati aplikaciju u kojoj korisnik crta


zmaja na poziciji na kojoj pritisne taster
mia. Veliina zmaja je srazmerna vremenu
koliko je bio pritisnut taster (to je due bio
pritisnut taster, to je vei zmaj).

int x, y, a; //polozaj i velicina zmaja


Color boja;
Random r = new Random();
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
a = 5;
boja = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256));
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
g.Clear(BackColor);
Pen olovka = new Pen(boja, 6);
SolidBrush cetka = new SolidBrush(Color.FromArgb(160, boja.R, boja.G, boja.B));
a += 5;
Point p1 = new Point(x, y - a);
Point p2 = new Point(x + a, y);
Point p3 = new Point(x, y + a);
Point p4 = new Point(x - a, y);
Point[] p = { p1, p2, p3, p4 };
g.FillPolygon(cetka, p);
g.DrawPolygon(olovka, p);
olovka.Width = 1;
olovka.Color = Color.Black;
g.DrawLine(olovka, p4, p2);
g.DrawLine(olovka, p1, p3);
}

private void Form1_MouseUp(object sender, MouseEventArgs e)


{
timer1.Stop();
}
17.Kreirati aplikaciju u kojoj pada sneg.

Random r = new Random();

private void timer1_Tick(object sender, EventArgs e)


{
int a = r.Next(5, 40);
int x = r.Next(ClientRectangle.Width);
int y = r.Next(ClientRectangle.Height);
Pen olovka = new Pen(Color.White, r.Next(1, 5));
Graphics g = CreateGraphics();
g.DrawLine(olovka, x - a, y - a, x + a, y + a);
g.DrawLine(olovka, x - a, y + a, x + a, y - a);
g.DrawLine(olovka, x, y - a / 2, x, y + a / 2);
g.DrawLine(olovka, x - a / 2, y, x + a / 2, y);
}

private void Form1_Load(object sender, EventArgs e)


{
timer1.Start();
}
18.Kreirati aplikaciju u kojoj se jedna strelica kree na dole preko cele

forme.

int x, y, a, b;
Color boja;
Random r = new Random();

private void Form1_Load(object sender, EventArgs e)


{
y = 0;
x = ClientRectangle.Width / 2;
a = 55;
b = 130;
boja = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256));
timer1.Start();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Point p1 = new Point(x - a / 4, y - b / 2);
Point p2 = new Point(x + a / 4, y - b / 2);
Point p3 = new Point(x + a / 4, y);
Point p4 = new Point(x + a / 2, y);
Point p5 = new Point(x, y + b / 2);
Point p6 = new Point(x - a / 2, y);
Point p7 = new Point(x - a / 4, y);
Point[] p = { p1, p2, p3, p4, p5, p6, p7 };
Pen olovka = new Pen(boja, 5);
SolidBrush cetka = new SolidBrush(Color.FromArgb(160, boja.R, boja.G, boja.B));
g.FillPolygon(cetka, p);
g.DrawPolygon(olovka, p);
}

private void timer1_Tick(object sender, EventArgs e)


{
y += 5;
Refresh();
}
19. Kreirati aplikaciju u kojoj jedrilica plovi.

int x, y, a, b;

private void Form1_Load(object sender, EventArgs e)


{
a = 40;
b = 40;
x = -2 * a;
y = ClientRectangle.Height / 2;
timer1.Start();
}

private void Form1_Paint(object sender, PaintEventArgs e)


{
Point p1 = new Point(x - 2 * a, y);
Point p2 = new Point(x + 2 * a, y);
Point p3 = new Point(x + a, y + b);
Point p4 = new Point(x - a, y + b);
Point p5 = new Point(x, y - 3 * b);
Point p6 = new Point(x + 2 * a, y - 2 * b);
Point p7 = new Point(x, y - b);

Point[] camac = { p1, p2, p3, p4 };


Point[] jedro = { p5, p6, p7 };
Graphics g = e.Graphics;

SolidBrush cetka = new SolidBrush(Color.PeachPuff);


g.FillPolygon(cetka, camac);
Pen olovka = new Pen(Color.Black, 2);
g.DrawPolygon(olovka, camac);

cetka.Color = Color.White;
g.FillPolygon(cetka, jedro);

olovka.Color = Color.Chocolate;
olovka.Width = 10;
g.DrawLine(olovka, x, y, x, y - 3 * b);

private void timer1_Tick(object sender, EventArgs e)


{
x += 5;
Refresh();

if (x > ClientRectangle.Width + 2 * a)
x = -2 * a;
}

20.Kreirati aplikaciju u kojoj se kolicima prevozi teret.

int x, y, a, b;

private void Form1_Load(object sender, EventArgs e)


{
a = 30;
b = 60;
x = -3 * a;
y = ClientRectangle.Height / 2;
timer1.Start();
}

private void Form1_Paint(object sender, PaintEventArgs e)


{
Graphics g = e.Graphics;

SolidBrush cetka = new SolidBrush(Color.SaddleBrown);


g.FillEllipse(cetka, x - 2 * a, y - a, 4 * a, 2 * a);

Point p1 = new Point(x - 3 * a, y);


Point p2 = new Point(x + 3 * a, y);
Point p3 = new Point(x + 2 * a, y + b);
Point p4 = new Point(x - 2 * a, y + b);
Point[] kolica = { p1, p2, p3, p4 };
cetka.Color = Color.RosyBrown;
g.FillPolygon(cetka, kolica);
Pen olovka = new Pen(Color.Black, 2);
g.DrawPolygon(olovka, kolica);

cetka.Color = Color.Black;
g.FillEllipse(cetka, x - 3 * a, y + b - a, 2 * a, 2 * a);
g.FillEllipse(cetka, x + a, y + b - a, 2 * a, 2 * a);
}

private void timer1_Tick(object sender, EventArgs e)


{
x += 5;
Refresh();
if (x > ClientRectangle.Width + 2 * a) x = -2 * a;
}

Primeri aplikacija razgranate strukture


Pogaanje kruga
Kreirati aplikaciju kojom se realizuje sledea igra:
u pravilnim vremenskim intervalima crta se popunjen krug
poluprenika 15 na sluajno izabranoj poziciji na prethodno
oienoj formi
igra pokuava da klikne u trenutku kada je pokaziva mia na
krugu i to najvie jednom za jedan krug
U naslovnoj liniji forme ispisuje se koliko puta je igra kliknuo na iscrtani
krug i ukupan broj iscrtanih krugova.
int brPogodaka = 0, brKrugova = 0;
int xc, yc;
bool pokusaj = false;
Random R = new Random();
private void timer1_Tick(object sender, EventArgs e)
{
Refresh();
SolidBrush cetka = new SolidBrush(Color.Red);
Graphics g = CreateGraphics();
// slucajan izbor centra kruga
xc = R.Next(15, ClientRectangle.Width - 15);
yc = R.Next(15, ClientRectangle.Height - 15);
// crtanje kruga
g.FillEllipse(cetka, xc - 15, yc - 15, 30, 30);
// uveanje broja iscrtanih krugova
brKrugova++;
Text = brPogodaka + " od " + brKrugova;
pokusaj = false;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (!pokusaj) // tj. (pokusaj == false)
{
// provera da li je igrac kliknuo na krug
if (((e.X - xc) * (e.X - xc) + (e.Y - yc) * (e.Y - yc)) <= 15 * 15)
{
brPogodaka++;
Text = brPogodaka + " od " + brKrugova;
}
pokusaj = true;
}
}
Koncentricni krugovi
Kreirati aplikaciju koja prikazuje kako se stvaraju
koncentrini krugovi na povrini kada sa u vodu
baci kameni. Korisnik baca kameni tako to
klikne na formu. Od tog mesta poinju da se ire
koncentrini krugovi. Prvi krugovi su intenzivniji,
bre nastaju i na manjem rastojanju, zatim je svaki
sledei tanji, na veem rastojanju i sporije se
pojavljuje.
int x, y, R, br, pR;
Pen olovka = new Pen(Color.Blue, 5);
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
Refresh();
x = e.X; y = e.Y; //centar
R = 5; //poluprecnik prvog kruga
d = 5; //debljina prvog kruga
pR = 5;
br = 0;
olovka.Width = 5;
// timer1.Interval = 100;
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)


{
Graphics g = CreateGraphics();
g.DrawEllipse(olovka, x - R, y - R, 2 * R, 2 * R);
br++;
if (br % 2 == 0) olovka.Width--;
R += pR; pR += 5;
//timer1.Interval += 200;
if (olovka.Width == 0) timer1.Stop();
}

Kretanje loptice
Kreirati aplikaciju koja obezbeuje kontinuiorano kretanje loptice gore desno, gore
levo, dole desno, dole levo (poo be ose se pomera za poluprenik). Kada doe do
ivice forme odbija se i nastavlja kretanje u suprotnom smeru.

int x, y, dx, dy, r;

private void Form1_MouseClick(object sender, MouseEventArgs e)


{
x = e.X; y = e.Y;
dx = dy = r = 10;
Refresh();
timer1.Start();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillEllipse(Brushes.Red,x-r,y-r,2*r,2*r);
}
private void timer1_Tick(object sender, EventArgs e)
{
x += dx;
y += dy;
if (x < r || x + r > ClientRectangle.Width) dx = -dx;
if (y < r || y + r > ClientRectangle.Height) dy = -dy;
Refresh();
}
Pri odbijanju menjamo boju
Modifikovati prethodnu aplikaciju tako da loptica pri odbijanju menja boju.
int x, y, dx, dy, r;
SolidBrush cetka = new SolidBrush(Color.Red);
Random R = new Random();
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
x = e.X; y = e.Y;
dx = dy = r = 10;
Refresh(); timer1.Start();
}

private void Form1_Paint(object sender, PaintEventArgs e)


{
Graphics g = e.Graphics;
g.FillEllipse(cetka,x-r,y-r,2*r,2*r);
}

private void timer1_Tick(object sender, EventArgs e)


{
x += dx; y += dy;
if (x < r || x + r > ClientRectangle.Width)
{
dx = -dx;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
}
if (y < r || y + r > ClientRectangle.Height)
{
dy = -dy;
cetka.Color = Color.FromArgb(R.Next(256), R.Next(256), R.Next(256));
}
Refresh();

Loptica i kavadrat
Proiriti prethodnu aplikaciju tako da na formi nacrtamo na sluajno odabranoj
poziciji kvadrat, stranica kvadrata jednaka polupreniku loptice. Prilikom kretanja
loptice, u trenutku kada centar kvadrata pripada loptici njen poluprenik se uvea
za 1 i promeni se pozicija kvadrata. Loptica se zaustavlja kada njen poluprenik
postane duplo vei od stranice kvadrata.

Pogodi broj
Kreirati aplikaciju kojom se raunar zamisli sluajan
broj od 1 do100, a zatim korisnik aplikacije pogaa
broj, svaki put kad korisnik unese neki broj i
pritisne dugme za proveru ispie se poruka broj je
vei, broj je manji ili bravo pogodili ste.
Obezbeditio najvie 7 pokuaja.

Random R = new Random();


int x;
int bp;
private void btZamisli_Click(object sender, EventArgs e)
{
x = R.Next(1, 101);
bp = 0;
btProveri.Enabled = true;
textBox1.Focus();
}
private void btProveri_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
int a = Convert.ToInt32(textBox1.Text);
bp++;
if (a > x)
MessageBox.Show("Trazeni broj je manji");
else
if (a < x)
MessageBox.Show("Trazeni broj je veci");
else
{
MessageBox.Show("Tacno (" + bp + " pokusaja)");
btProveri.Enabled = false;
}
textBox1.Text = "";
textBox1.Focus();
if (bp == 7 && x!=a)
{ MessageBox.Show("Zamisljeni broj je " + x);
btProveri.Enabled = false;
}
}
}

Tablica Mnozenja
Kreirati aplikaciju kojom se obezbeuje testiranje poznavanja tablice mnoenja.
Sluajnim izborom se odreuju dva jednocifrena prirodna broja a korisnik treba u
odreenom vremenskom intervalu da upie odgovor. Prilikom provere da li je
odgovor taan, u naslovnoj liniji forme ispisati broj ukupno postavljenih zadataka i
broj tanih odgovora. Postavljanje zadataka kao i proveru odgovora pre isteka
vremenskog intervala inicirati klikom na odgovarajue dugme.
int rez,a=0,b=0;
// rez - rezultat zadatka koji je trenutno postavljen
// a - broj ukupnih zadataka
// b - broj tacno odgovorenih zadtaka
private void timer1_Tick(object sender, EventArgs e)
{ a++;
if(tbRezultat.Text!="")
{
int x=Convert.ToInt32(tbRezultat.Text);

if(x==rez)
{
lPoruka.Text="TACNO";
b++;

}
else lPoruka.Text="NETACNO";

}
else
lPoruka.Text="ISTEKLO VREME";
timer1.Enabled=false;
btProveri.Enabled=false;
Text=a+ " ukupno - "+b+" tacno";
}
private void btPostavka_Click(object sender, EventArgs e)
{
Random R=new Random();
int x=R.Next(10), y=R.Next(10);
lZadatak.Text=x+" * "+y;
rez=x*y;
tbRezultat.Text="";
timer1.Enabled=true;
btProveri.Enabled=true;
tbRezultat.Focus();
lPoruka.Text="";
}

private void btProveri_Click(object sender, EventArgs e)


{
int x=Convert.ToInt32(tbRezultat.Text);
a++;
if(x==rez)
{
lPoruka.Text="TACNO";
b++;
}
else lPoruka.Text="NETACNO";
Text=a+ " ukupno - "+b+" tacno";
timer1.Enabled=false;
btProveri.Enabled=false;

Test
Kreirati aplikaciju kojom se obezbeuje testiranje poznavanja osnovnih aritmetikih
operacija (sabiranje, oduzimanje, mnoenje i deljenje) sa prirodnim brojevima
manjim od 100. Test se sastoji od 10 zadataka. Svaki zadataka se bira na sluajana
nain, sluajnim izborom odreuje se operacija a zatim dva prirodna broja nad
kojima treba izvriti izabranu operaciju, prikae se postavljeni zadatak. Korisnik
treba da upie odgovor u objektu klase TextBox u odreenim intervalu. Na kraju
testa prikazati u objektu klase Label broj tanih odgovoara korisnika, a u objektu
klase ListBox sve postavljene zadatke i odgovore korisnika kao i tane odgovore.

Zadaci se prilikom provere da li je korisnik tano odgovorio upisuju u ListBox.


ListBox je na nevidljiv (visible=false) pa se na kraju testa uini vidljivim.

PING PONG
Kreirati aplikaciju kojom se loptica kree po formi (po obe ose) kada doe do
gornje, desne ili leve ivice forme odbija se menjajui smer kretanja. Na donjoj ivici
forme nalazi se pravougaonik koji korisnik moe pomerati, korienjem strelica na
tastaturi, levo desno u granicama forme. Ako loptica udati u pravougaonik odbija
se i nastavlja kretanje, a ako loptica udari u donju ivicu forme zatvara se aplikacija.
int X, Y, r, korakX, korakY;
int Xd, Yd, w, h, korakd;
Random R = new Random();
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
SolidBrush cetka = new SolidBrush(Color.Red);
g.FillEllipse(cetka, X - r, Y - r, 2 * r, 2 * r);
cetka.Color = Color.Brown;
g.FillRectangle(cetka, Xd, Yd, w, h);
}
private void Form1_Load(object sender, EventArgs e)
{
Y = 10;
korakX = 10;
korakY = 10;
r = 10;
X = R.Next(10, ClientRectangle.Width - 10);
h = 10;
w = 80;
Yd = ClientRectangle.Height - h;
Xd = R.Next(ClientRectangle.Width - w);
korakd = 0;
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
X += korakX;
Y += korakY;
Xd += korakd;
if (Xd <= 0) Xd = 0;
if (Xd + w >= ClientRectangle.Width) Xd = ClientRectangle.Width - w;

if (X <= r || X + r >= ClientRectangle.Width) korakX = -korakX;

if (Y <= r) korakY = -korakY;

if (X + r >= Xd && X - r <= Xd + w)


{
if (Y + r >= ClientRectangle.Height - h) korakY = -korakY;
}
else
if (Y + r >= ClientRectangle.Height)
{
timer1.Enabled = false;
MessageBox.Show("Izgubili ste...");
Close();

Refresh();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
korakd = -20;
else
if (e.KeyCode == Keys.Right)
korakd = 20;
if (e.KeyCode == Keys.Escape)
timer1.Enabled = !timer1.Enabled;
}

private void Form1_KeyUp(object sender, KeyEventArgs e)


{
korakd = 0;
}

Semafor
Kreirati aplikaciju koja omoguava simulaciju rada semafora za
vozila (tri kruga, crveni, uti i zeleni se naizmenino ukljuuju po
poznatim pravilima).

int r = 30; //poluprecnik kruga


int d = 10; //rastojanje izmedju dva kruga
int stanje; //aktivno stanje semafora
private void Form1_Load(object sender, EventArgs e)
{
pbSemafor.Width = 2 * (r + d);
pbSemafor.Height = 6 * (r + d);
timer1.Start();
stanje = 1;
timer1.Interval = 2500;
}

private void pbSemafor_Paint(object sender, PaintEventArgs e)


{
Graphics g = e.Graphics;
Pen olovka = new Pen(Color.Red, 4);
g.DrawEllipse(olovka, d, d, 2 * r, 2 * r);
olovka.Color = Color.Yellow;
g.DrawEllipse(olovka, d, 2 * r + 3 * d, 2 * r, 2 * r);
olovka.Color = Color.Green;
g.DrawEllipse(olovka, d, 4 * r + 5 * d, 2 * r, 2 * r);

if (stanje == 1)
g.FillEllipse(Brushes.Red, d, d, 2 * r, 2 * r);
else if (stanje == 2)
{
g.FillEllipse(Brushes.Red, d, d, 2 * r, 2 * r);
g.FillEllipse(Brushes.Yellow, d, 2 * r + 3 * d, 2 * r, 2 * r);
}
else
if (stanje == 3)
g.FillEllipse(Brushes.Green, d, 4 * r + 5 * d, 2 * r, 2 * r);
else
g.FillEllipse(Brushes.Yellow, d, 2 * r + 3 * d, 2 * r, 2 * r);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (stanje < 4)
stanje++;
else
stanje = 1;

if (stanje == 1 || stanje == 3)
timer1.Interval = 2500;
else
timer1.Interval = 1000;
pbSemafor.Refresh();
}

Semafor 2
Proiriti prethodnu aplikaciju: Omoguiti prelazak iz uobiajenog reima rada
semafora u reim utog trepueg svetla.

MojPaint
Kreirati aplikaciju pout programa za crtanje (paint). Obezbediti crtanje prave linije,
linije slobodnom rukom, elipse, pravougaonika (popunjen ili ne popunjen).
Obezbediti i izbor boje (ColorDijalog) i debljine linije (NumericUpDoen). Korisniku
omoguiti i brisanje (crtanje slobodnom rukom olovkom boje pozadine PictureBox-a
po kome se crta, izabrane debljine).

Pen olovka = new Pen(Color.Black);


SolidBrush cetka = new SolidBrush(Color.White);
int x1, y1;
bool crtanje = false;
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
olovka.Width = (int)numericUpDown1.Value;
}

private void pictureBox1_Click(object sender, EventArgs e)


{
colorDialog1.ShowDialog();
olovka.Color = colorDialog1.Color;
pictureBox1.BackColor = colorDialog1.Color;
}

private void pictureBox2_Click(object sender, EventArgs e)


{
colorDialog1.ShowDialog();
cetka.Color = colorDialog1.Color;
pictureBox2.BackColor = colorDialog1.Color;
}
private void pictureBox3_MouseDown(object sender, MouseEventArgs e)
{
x1 = e.X;
y1 = e.Y;
if (rbSlRuka.Checked || rbGumica.Checked)
crtanje = true;

private void pictureBox3_MouseUp(object sender, MouseEventArgs e)


{
int x2 = e.X;
int y2 = e.Y;
Graphics g = pictureBox3.CreateGraphics();
if (rbPrava.Checked)
g.DrawLine(olovka, x1, y1, x2, y2);
else
if (rbSlRuka.Checked || rbGumica.Checked)
crtanje = false;
else
{
int x, y;
if (x1 < x2) x = x1;
else x = x2;
if (y1 < y2) y = y1;
else y = y2;
int a, b;
a = Math.Abs(x1 - x2);
b = Math.Abs(y1 - y2);
if (rbPravougaonik.Checked)
if (cbPopunjen.Checked)
g.FillRectangle(cetka, x, y, a, b);
else
g.DrawRectangle(olovka, x, y, a, b);
else
if (cbPopunjen.Checked)
g.FillEllipse(cetka, x, y, a, b);
else
g.DrawEllipse(olovka, x, y, a, b);
}

private void pictureBox3_MouseMove(object sender, MouseEventArgs e)


{
if (crtanje)
{
int x2, y2;
x2 = e.X;
y2 = e.Y;
Graphics g = pictureBox3.CreateGraphics();
if (rbSlRuka.Checked)
g.DrawLine(olovka, x1, y1, x2, y2);
else
{
Pen olovka1 = new Pen(pictureBox3.BackColor,
(int)numericUpDown1.Value);
g.DrawLine(olovka1, x1, y1, x2, y2);

}
x1 = x2;
y1 = y2;
}
}

You might also like