vežbe, 2.grupa, 2.mart - igrica
Zadatak:
Kreiramo igricu sa sledećim parametrima:
- sa vrha forme ka dnu silazi sličica (po vašem izboru, a u ovom primeru će biti mrav)
- ako se klikne na sličicu, dobija se 10 poena, slika nestaje i pojavljuje se negde na vrhu forme i nastavlja da pada
- postoji taster za zaustavljanje igre (Kraj)
- postoji taster za dodavanje još jedne slike (do najviše 3 komada u našem primeru)
- poeni se prikazuju u gornjem levom delu forme
Jedan od načina na koji se to može izvesti:
- Prvo se kreira novi projekat - Windows Forms ---
- Na Internetu potražimo sličicu koja će biti naš "glavni karakter" (za ovaj primer koristiću kapljicu vode: https://clipartart.com/images250_/water-icon-clipart-3.png
- Na formu se postavlja PictureBox. Podrazumevani naziv je pictureBox1, i u njega postavljamo sličicu, sa modom za Stretch image - jer je slika malko veća nego što nam treba
- u gornji levi deo forme postavljamo dve labele: u prvoj je tekst: bodovi:, a u drugu ćemo upisivati osvojene bodove, a u početku postavljamo 0.
private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Top += 10;
if (pictureBox1.Bottom > this.Height)
pictureBox1.Top = 0;
}
- Što se bodova tiče, na našoj formi postavljamo javni parametar bodovi, tipa int (i to pre konstruktora):
public partial class Form1 : Form
{
public int poena;
podrazumevana vrednost je 0 (u programskom jeziku C#).
- da bismo mogli da klikom na sliku radimo nešto, napisati metodu koja će da se izvršava svaki put kada se klikne mišem na pictureBox. To možemo raditi tako što 1. kliknemo na sliku i u akcijama potražimo Click (ili dvoklik na samu sliku). Okruženje u kojem radimo u našem slučaju kreira osnovni izgled metode, a naše je samo da obezbedimo potrebne funkcionalnosti. Klikom na sliku treba da se povećaju bodovi, a slika da se pomeri negde na vrh forme:
private void pictureBox1_Click(object sender, EventArgs e)
{
poena += 10;
label2.Text= Convert.ToString(poena);
Random R = new Random();
var opseg = this.Size - pictureBox1.Size;
var pozicijax = R.Next(0, opseg.Width);
pictureBox1.Location = new Point(pozicijax, 0);
}
Komplikacija koju smo uveli je da se na slučajno mesto na vrhu forme postavi naš pictureBox1 - y=0, a x je neki slučajan vroj između 0 i dostupne širine forme(umenjene za širinu pictureBox-a).
- Dugme za završetak igre se radi tako što se postabi na formu jedno dugme (Button) u donji levi deo forme i u metodi za klik na dugme samo se zatvori forma. Metoda koja postoji je Close() i može se samo navesti, mada može i da se naglasi da se misli da se zatvori forma u kojoj ste:
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
ili
private void button1_Click(object sender, EventArgs e)
{
Close();
}
Sada bi trebalo da naša igra radi.
Sledeći nivo je da se kopira pictureBox1, tako da imamo više identičnih sličica, ali im osobinu Visible postavljamo na False - da se ne vide na početku.
Svako naredni picturebox bi na klik trebalo da ima identičnu funkcionalnost kao i prvi pictureBox.
Dodaje se dugme kojim se dodaje sličica po sličica: Button na kojem poše npr "dodaj + 1 (max 5). Klikom na dugme postavlja se parametar Visible na true na sledeći pictureBox.
private void button2_Click(object sender, EventArgs e)
{
if (pictureBox2.Visible == false)
pictureBox2.Show();
else if
(pictureBox3.Visible == false)
pictureBox3.Show();
else if
(pictureBox4.Visible == false)
pictureBox4.Show();
}
Da bi se sledeće sličice kretale kao i prva, potrebno je u metodu timer1_tick dodati programski kod u kojem se sličice pomeraju, ali samo ako su vidljive:
if (pictureBox2.Visible == true)
{ pictureBox2.Top += 10;
if (pictureBox2.Bottom > this.Height)
pictureBox2.Top = 0;
}
if (pictureBox3.Visible == true)
{ pictureBox3.Top += 10;
if (pictureBox3.Bottom > this.Height)
pictureBox3.Top = 0;
}
U nastavku je C# fajl: Form1.cs i aplikacija koja je napravljena: buba.exe
(P.S. Ovaj primer je rađen u verziji Visual Studio Comunity 2019 )