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.
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....
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)
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