[ 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