//Método para iniciar o xogo public void iniciarXogo() { partida = new Partida(4, 0, 0); cargarCartasMemoria(); baraxarCartas(); configPanelXogo(); //Carga os meus user controls no taboleiro int contadorFichas = 0; for (var i = 0; i < partida.tamanoColFil; i++) { for (var j = 0; j < partida.tamanoColFil; j++) { CartaLib.ucImaxe uc = new CartaLib.ucImaxe(); PictureBox pb = uc.getImaxe(); pb.Dock = DockStyle.Fill; pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.Image = (Image)myManager.GetObject(partida.listaCartas[contadorFichas].rutaImagenReverso); uc.getImaxe().Click += new System.EventHandler(this.btnCarta_Click); tablaPanel.Controls.Add(uc, j, i); contadorFichas++; } } tablaPanel.Dock = DockStyle.Fill; PanelXogo.Controls.Add(tablaPanel); }
//Función de clickar nunha carta private void btnCarta_Click(object sender, EventArgs e) { if (indPrimario == -1 | indSecundario == -1) { partida.contMovementos++; lblMovementosEdit.Text = partida.contMovementos.ToString(); cartaSeleccionada = (PictureBox)sender; CartaLib.ucImaxe ucCartaSeleccionada = (CartaLib.ucImaxe)cartaSeleccionada.Parent; int col = tablaPanel.GetCellPosition(ucCartaSeleccionada).Column; int row = tablaPanel.GetCellPosition(ucCartaSeleccionada).Row; int contPosicion = 0; switch (row) { case 0: row = row + 1; break; case 1: row = row + 4; break; case 2: row = row + 7; break; case 3: row = row + 10; break; default: break; } contPosicion = row + col; cartaSeleccionada.Image = (Image)myManager.GetObject(partida.listaCartas[contPosicion - 1].rutaImagen); //guardo el primer índice pulsado if (indPrimario == -1) { indPrimario = contPosicion - 1; cartaSeleccionada1 = cartaSeleccionada; } else { indSecundario = contPosicion - 1; cartaSeleccionada2 = cartaSeleccionada; if (indPrimario == indSecundario) { cartaSeleccionada1.Image = (Image)myManager.GetObject(partida.listaCartas[indPrimario].rutaImagenReverso); cartaSeleccionada2.Image = (Image)myManager.GetObject(partida.listaCartas[indSecundario].rutaImagenReverso); indPrimario = -1; indSecundario = -1; } else if (partida.listaCartas[indPrimario].idCarta != partida.listaCartas[indSecundario].idCarta) { foreach (CartaLib.ucImaxe item in tablaPanel.Controls) { item.Enabled = false; } tTempo.Enabled = true; tTempo.Start(); foreach (CartaLib.ucImaxe item in tablaPanel.Controls) { item.Enabled = true; } } else { partida.contCantidadCartasXiradas++; partida.contCantidadCartasXiradas++; cartaSeleccionada1.Enabled = false; cartaSeleccionada2.Enabled = false; indPrimario = -1; indSecundario = -1; if (partida.contCantidadCartasXiradas == 16) { string nomeUsu = Microsoft.VisualBasic.Interaction.InputBox(StringResources.tiganas + "\n\n" + StringResources.teunome, StringResources.tiganas, StringResources.anonimo); if (nomeUsu.CompareTo("") != 0) { guardarMovementos(partida.contMovementos.ToString(), nomeUsu); } DialogResult result = MessageBox.Show(StringResources.desexas, StringResources.fin, MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (result == DialogResult.Yes) { btnXogoNovo_Click(null, null); } else { Application.Exit(); } } } } } }