[ ser_nicky @ 22.01.2015. 20:15 ] @
Pozdrav svima. Radim zadatak za skolu, treba da napravim igru memorije kao Win Forms aplikaciju. Napravio sam pocetnu formu na kojoj se unosi ime igraca i bira tezina igre (16, 25 ili 36 polja). E sad, treba da napravim listu 5 najboljih rezultata (top scores), tako da se na pocetnoj formi ispise u obliku: ime igraca i broj osvojenih poena. Da li neko ima ideju kako bi ovo moglo da se realizuje? Padaju mi na pamet liste, pa da u listu ubacujem podatke o svakoj partiji i onda vrsim sortiranje, ali ne znam kako da ovo implementiram u programu. Evo sta sam do sad uradio: Ovo je pocetna forma: Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ************ { public partial class Pocetna : Form { public Pocetna() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var frm = new Igra4(txtIme.Text); frm.Location = this.Location; frm.StartPosition = FormStartPosition.Manual; frm.FormClosing += delegate { this.Show(); }; frm.Show(); this.Hide(); } private void button2_Click(object sender, EventArgs e) { var frm = new Igra5(txtIme.Text); frm.Location = this.Location; frm.StartPosition = FormStartPosition.Manual; frm.FormClosing += delegate { this.Show(); }; frm.Show(); this.Hide(); } private void button3_Click(object sender, EventArgs e) { var frm = new Igra6(txtIme.Text); frm.Location = this.Location; frm.StartPosition = FormStartPosition.Manual; frm.FormClosing += delegate { this.Show(); }; frm.Show(); this.Hide(); } } } A ovo je forma koja se otvara za izabranu igru sa 16 polja: Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace *************** { public partial class Igra4 : Form { Label prviKlik = null; Label drugiKlik = null; int poeni=0; Random random = new Random(); List<string> icons = new List<string>() { "!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "z", "z" }; private void UbaciIkone() { foreach (Control control in tableLayoutPanel1.Controls) { Label iconLabel = control as Label; if (iconLabel != null) { int randomNumber = random.Next(icons.Count); iconLabel.Text = icons[randomNumber]; iconLabel.ForeColor = iconLabel.BackColor; icons.RemoveAt(randomNumber); } } } public Igra4(string strTxtIme) { InitializeComponent(); lblIme.Text = strTxtIme; UbaciIkone(); } private void label_Click(object sender, EventArgs e) { // Ukljucuje se tajmer samo kad se dve razlicite slike otvore if (timer1.Enabled == true) return; Label clickedLabel = sender as Label; if (clickedLabel != null) { // Ignorise se klik na vec kliknuto polje if (clickedLabel.ForeColor == Color.Black) return; // Prvi klik je null, boja polja postaje crna if (prviKlik == null) { prviKlik = clickedLabel; prviKlik.ForeColor = Color.Black; return; } // Drugi klik, boja polja postaje crna drugiKlik = clickedLabel; drugiKlik.ForeColor = Color.Black; ProveriKraj(); if (prviKlik.Text == drugiKlik.Text) { prviKlik = null; drugiKlik = null; poeni += 10; lblPoeni.Text = poeni.ToString(); return; } else { poeni -= 5; lblPoeni.Text = poeni.ToString(); } // Kliknuto je na dve razlicite ikone, ukljucuje se tajmer koji posle odbrojanog vremena ponovo sakriva ikone timer1.Start(); } } private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); // Sakrivaju se obe ikone prviKlik.ForeColor = prviKlik.BackColor; drugiKlik.ForeColor = drugiKlik.BackColor ; // Resetuje obe kliklnute ikone, tako da sledeci put krece ispocetka prviKlik = null; drugiKlik = null; } private void ProveriKraj() { // Petlja ide kroz sva polja i proverava da li se ikone poklapaju foreach (Control control in tableLayoutPanel1.Controls) { Label iconLabel = control as Label; if (iconLabel != null) { if (iconLabel.ForeColor == iconLabel.BackColor) return; } } // Nema neuparenih polja, sto znaci da je kraj igre MessageBox.Show("Cestitamo! Osvojili ste " + poeni + " poena"); Close(); } } } Hvala svima unapred |