Oppure

Loading
12/01/10 17:45
el borto
ciao a tutti mi ritrovo ancora qua a chiedere aiuto perchè propio non ce la faccio ad andarcene fuori...
dunque : sto ricreando in c# il gioco degli scacchi e per farlo ho utilizzato una matrice di pictureBox , riesco a generarla e anche a posizionare i vari pezzi.
ora mi ritrovo con tutta la scacchiera posizionata e dovrei assegnare a ogni pictureBox (in tutto sono 64) una funzione che mi restituisca la posizione di quest'ultima all'interno della matrice faccio un esempio per spiegarmi se clicco sulla pictureBox[0,6] dovrebbe restituirmi 0 e 6 avete qualche suggerimento?
grazie mille in anticipo a chiunque riesca a darmi una mano
Ultima modifica effettuata da el borto 12/01/10 18:02
aaa
12/01/10 20:45
Mte90
potresti dare ad ogni picturebox un tag corrispondente agli indici o altrimenti dargli un numero tipo picture16.
non mi ricordo se il campo si chiama tag ma permette di mettere tipo note o proprio un tag richiamabile da codice.
aaa
12/01/10 22:56
Gianluca87
ciao secondo me sbagli devi ragionare sul problema partendo dal presupposto che la tua interfaccia non esista quindi per cominciare a gestire unicamente i dati
prova a usare un DataTable per gestire le coordinate oppure un oggetto di tipo List che contiene la tua ipotetica scacchiera...sicuramente ti semplifichi la vita
per i pezzi puoi crearti oggetti analoghi e posizionarli sulla scacchiera
dentro l'oggetto del pezzo in oltre puoi magari definirne il comportamento specificando quali mosse può fare....
Ultima modifica effettuata da Gianluca87 12/01/10 23:34
aaa
13/01/10 14:12
balto
Condivido in parte il discorso di Gianluca: anche io penso che non sia il modo migliore di gestire la tua applicazione. Tuttavia, se proprio vuoi proseguire sulla tua linea, potresti utilizzare questo codice; l'ho scritto con uno schema ben preciso della scacchiera.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //L'array delle PictureBox
        PictureBox[] arrPictBox = null;

        private void Form1_Load(object sender, EventArgs e)
        {
            //Inizializzi l'array
            arrPictBox = new PictureBox[64];
            for (int i = 0; i < arrPictBox.Length; i++)
            {
                arrPictBox[i] = new PictureBox();
                arrPictBox[i].Click += new EventHandler(this.PictureBox_Click);
                //Assegni tutte le proprietà delle PictureBox
                this.Controls.Add(arrPictBox[i]);
            }
        }

        protected void PictureBox_Click(object sender, EventArgs e)
        {
            //Restituisce la posizione nell'array della PictureBox cliccata 
            int index = Array.IndexOf(arrPictBox, (PictureBox)sender);
            int row = 0; //La riga della scacchiera
            int position = 0; //La posizione all'interno della riga

            //A seconda dell'indice della PictureBox, stabilisci la riga e la posizione
            if (index >= 0 && index < 8)
            {
                row = 0;
                position = index;
            }
            else if (index >= 8 && index < 16)
            {
                row = 1;
                position = index - 8;
            }
            else if (index >= 16 && index < 24)
            {
                row = 2;
                position = index - 16;
            }
            else if (index >= 24 && index < 32)
            {
                row = 3;
                position = index - 24;
            }
            else if (index >= 32 && index < 40)
            {
                row = 4;
                position = index - 32;
            }
            else if (index >= 40 && index < 48)
            {
                row = 5;
                position = index - 40;
            }
            else if (index >= 48 && index < 56)
            {
                row = 6;
                position = index - 48;
            }
            else if (index >= 56 && index < 64)
            {
                row = 7;
                position = index - 56;
            }

            //Visualizzi la riga e la posizione della PictureBox
            MessageBox.Show("Riga: " + row + "\nPosizione: " + position);
        }
    }
aaa
13/01/10 15:23
el borto
ringrazio tutti per le risposte ma sono riuscito poi a risolvere grazie ad un calcolo sulla posizione (x e y ) della picture box
per balto : non sarei riuscito comunque ad utilizzare il tuo codice perchè io la scacchiera l'ho impostata come una matrice e non come array monodimensionale perchè mi risulta più facile riuscire a calcolare la mosse possibili ( per esempio per il cavallo che può muoversi solo ad L se le coordinate di partenza sono [5,5] le mosse possibili sono [3,6] vale a dire [x-2,y+1], [3,4] [7,4][7,6] ecc)
aaa
13/01/10 15:40
balto
Ah okok, sono contento che abbia risolto =)
aaa