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; }

Primeri aplikacija linijske strukture

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Primeri aplikacija linijske strukture

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; }

Page 2: Primeri aplikacija linijske strukture

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 različite kombinacije boja

zastave koja ima tri horizontalna polja.

Page 3: Primeri aplikacija linijske strukture

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 nasumično 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(); }

Page 4: Primeri aplikacija linijske strukture

5. Kreirati aplikaciju u kojoj se u pravilnim vremenskim intervalima bira

slučajan 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 učenika i prikazuju u

objektu klase ListBox, obezbediti određivanje i prikaz proseka na dve

decimale. Sve ocene su vece od 1.

Page 5: Primeri aplikacija linijske strukture

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. Proširiti prethodnu aplikaciju tako da je obezbedjen unos ocena za više

učenika, 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(); }

Page 6: Primeri aplikacija linijske strukture

8. Avion je poleteo u X sati i Y minuta, u letu je proveo A minuta. Kreirati

aplikaciju kojom se određuje 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 đačke 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

određuje 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);

Page 7: Primeri aplikacija linijske strukture

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 korišćenjem 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. Proširiti prethodnu aplikaciju tako što se na dugme elipsa, pored elipse crta i krug sa centom u sredini objekta klase PictureBox poluprečnika 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);

Page 8: Primeri aplikacija linijske strukture

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 crtežu, krugovi su sa centom u sredini

objekta kalse PixtureBox, prvi krug je datog poluprečnika r, a svaki sledeći je za 10 veći 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 cržek kao na slici (objekat klase PictureBox se deli na 9 jednakih delova)

Page 9: Primeri aplikacija linijske strukture

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 }

Page 10: Primeri aplikacija linijske strukture

5. Kreairati aplikaciju kojom se crtaju popunjeni pravougaonici u nijansama roze boje u granicama forme.

Pravougaonici se crtaju u pravilnim vremenskim intervalima. Na slučajan

način bira se dužina od 120 do 199, sirina od 20 do 69, i gornje desno teme pravougaonika. Obezbediti dugme za

početak 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 obezbeđuje crtanje kruga datog poluprečnika (TextBox), centar kruga je tačka na koju je korisnik kliknuo, boja kruga se bira na

slučajan način.

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 slučajno odabrane boje. Kada se menja veličina forme, strelica se ponovo

iscrtava.

Page 11: Primeri aplikacija linijske strukture

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 slučajno odabrane boje. Kada se menja veličina 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 veličine forme, a za svaki sledeći stranice pravougaonika se smanje za 40. Centar savkog parvougaonika je sredina forme. U pravilnim vremenskim intervalima pravougaonici menjaju boju.

Page 12: Primeri aplikacija linijske strukture

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); }

Page 13: Primeri aplikacija linijske strukture

10.Kreirati aplikaciju kojom se crtaju linije kojima je koordinata početne tačke određena položajem strelice miša u trenutku pritiska dugmeta miša, a koordinata krajnje tačke određena položajem strelice miša u trenutku

otpuštanja dugmeta.

Kako liniju možemo nacrtati samo kada su određene koordinate i početne i krajnje tačke, metod DrawLine pozivamo po otpuštanju dugmeta miša, dakle u događaju

MouseUp. Koordinate početne tačke određujemo u trenutku pritiska dugmeta, u događaju MouseDown. Parametar ovih događaja, MouseEventArgs e, sadrži i informaciju (e.X, e.Y) o lokaciji strelice miša pri izvršavanju događaja.

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

miša, iscrtavati duži koje spajaju tačku na koju je korisnik kliknuo sa tačkom iz njene okoline (na udaljenosti najviše 50

po obe koordinate tačke). Duži se prikazuju u nijansama crvene boje (izbor

nijanse na slučajan način). 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); }

Page 14: Primeri aplikacija linijske strukture

12.Kreirati aplikaciju kojom se tača (0,0) spja sa tačkom na koju je korisnik kliknuo, liniju prikazati u slučajno odabranoj boji, svake sekunde uvećavati debljinu

linije za 1 sve dok korisnik ne otpusti taster miša (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; }

Page 15: Primeri aplikacija linijske strukture

14.Krugovi sa centrom u centru forme, maksimalnog poluprečnika, svake sekunde se smanji poluprečnik za 5, boja kruga se određuje na slučajan način. Tajmer se zaustavi kada poluprečnik 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 kreće sa leva na desno preko cele forme.

Trougao je jednakokraki, osnovica mu je paralelna sa osom, a dužina osnovice je

jednaka dvostrukoj dužini 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(); }

Page 16: Primeri aplikacija linijske strukture

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

miša. Veličina zmaja je srazmerna vremenu koliko je bio pritisnut taster (što je duže bio

pritisnut taster, to je veći 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(); }

Page 17: Primeri aplikacija linijske strukture

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 kreće 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(); }

Page 18: Primeri aplikacija linijske strukture

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 };

Page 19: Primeri aplikacija linijske strukture

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 };

Page 20: Primeri aplikacija linijske strukture

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

Pogađanje kruga Kreirati aplikaciju kojom se realizuje sledeća igra:

u pravilnim vremenskim intervalima crta se popunjen krug

poluprečnika 15 na slučajno izabranoj poziciji na prethodno očišćenoj formi

igrač pokušava da klikne u trenutku kada je pokazivač miša na

krugu i to najviše 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); // uvećanje 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; } }

Page 21: Primeri aplikacija linijske strukture

Koncentricni krugovi Kreirati aplikaciju koja prikazuje kako se stvaraju koncentrični krugovi na površini kada sa u vodu baci kamenčić. Korisnik baca kamenčić tako što

klikne na formu. Od tog mesta počinju da se šire koncentrični krugovi. Prvi krugovi su intenzivniji,

brže nastaju i na manjem rastojanju, zatim je svaki sledeći tanji, na većem 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 obezbeđuje kontinuiorano kretanje loptice gore desno, gore levo, dole desno, dole levo (poo be ose se pomera za poluprečnik). Kada dođe 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(); }

Page 22: Primeri aplikacija linijske strukture

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 Proširiti prethodnu aplikaciju tako da na formi nacrtamo na slučajno odabranoj poziciji kvadrat, stranica kvadrata jednaka poluprečniku loptice. Prilikom kretanja

loptice, u trenutku kada centar kvadrata pripada loptici njen poluprečnik se uveća za 1 i promeni se pozicija kvadrata. Loptica se zaustavlja kada njen poluprečnik postane duplo veći od stranice kvadrata.

Pogodi broj Kreirati aplikaciju kojom se računar zamisli slučajan broj od 1 do100, a zatim korisnik aplikacije pogađa

broj, svaki put kad korisnik unese neki broj i pritisne dugme za proveru ispiše se poruka „broj je

veći“, „broj je manji“ ili „bravo pogodili ste“. Obezbeditio najviše 7 pokušaja.

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(); }

Page 23: Primeri aplikacija linijske strukture

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 obezbeđuje testiranje poznavanja tablice množenja. Slučajnim izborom se određuju dva jednocifrena prirodna broja a korisnik treba u određenom vremenskom intervalu da upiše odgovor. Prilikom provere da li je

odgovor tačan, u naslovnoj liniji forme ispisati broj ukupno postavljenih zadataka i broj tačnih odgovora. Postavljanje zadataka kao i proveru odgovora pre isteka

vremenskog intervala inicirati klikom na odgovarajuće 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"; }

Page 24: Primeri aplikacija linijske strukture

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 obezbeđuje testiranje poznavanja osnovnih aritmetičkih operacija (sabiranje, oduzimanje, množenje i deljenje) sa prirodnim brojevima

manjim od 100. Test se sastoji od 10 zadataka. Svaki zadataka se bira na slučajana način, slučajnim izborom određuje se operacija a zatim dva prirodna broja nad

kojima treba izvršiti izabranu operaciju, prikaže se postavljeni zadatak. Korisnik treba da upiše odgovor u objektu klase TextBox u određenim intervalu. Na kraju testa prikazati u objektu klase Label broj tačnih odgovoara korisnika, a u objektu

klase ListBox sve postavljene zadatke i odgovore korisnika kao i tačne odgovore.

Zadaci se prilikom provere da li je korisnik tačno odgovorio upisuju u ListBox. ListBox je na nevidljiv (visible=false) pa se na kraju testa učini vidljivim.

PING PONG Kreirati aplikaciju kojom se loptica kreće po formi (po obe ose) kada dođe do gornje, desne ili leve ivice forme odbija se menjajući smer kretanja. Na donjoj ivici

forme nalazi se pravougaonik koji korisnik može pomerati, korišćenjem 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.

Page 25: Primeri aplikacija linijske strukture

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(); }

Page 26: Primeri aplikacija linijske strukture

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 omogućava simulaciju rada semafora za vozila (tri kruga, crveni, žuti i zeleni se naizmenično uključuju 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); }

Page 27: Primeri aplikacija linijske strukture

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 Proširiti prethodnu aplikaciju: Omogućiti prelazak iz uobičajenog režima rada semafora u režim žutog trepćućeg 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 omogućiti 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; }

Page 28: Primeri aplikacija linijske strukture

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; } }