/// <summary> /// Inicializa y prepara la ventana para el juego /// </summary> protected void PrepararVentana() { char[] letrasPalo = { 'o', 'e', 'c', 'b' }; //Array con las letras iniciales de los palos para identificar // las posiciones de las cartas en el tablero int idCarta = 0; //Identificador de la carta actual para el reparto de cartas baraja.Barajar_nuevo(); //1 - Se entrevera la baraja for (int fila = 0; fila < tbl_tablero.RowCount; fila++) //2 - Comenzamos a recorrer el tablero. Primero las filas... { for (int columna = 0; columna < tbl_tablero.ColumnCount; columna++) //... y luego las columnas. De esta manera ubicamos cada carta de // cada fila antes de pasar a la siguiente fila. { Carta carta = baraja.baraja[idCarta]; //Tomamos una carta de la baraja string posicion = letrasPalo[fila] + (columna + 1).ToString(); //Guardamos el código de su posición en el tablero ButtonCarta bt = new ButtonCarta(carta, posicion); //Creamos un botón para representar la carta en el tablero bt.Size = new Size(104, 159); //Definimos su tamaño bt.Click += Carta_Click; //Le agregamos un método a su evento 'Click' bt.Enabled = false; //Lo desabilitamos para evitar que se lo use antes de tiempo tbl_tablero.Controls.Add(bt, columna, fila); //Lo añadimos al tablero en la posición que establecimos idCarta++; //Avanzamos el identificador a la siguiente carta } } for (int vida = 0; vida < 4; vida++) //3 - Las cartas restantes las añadimos a la lista de vidas { Carta carta = baraja.baraja[idCarta]; //Ubicamos la carta en la baraja cartasVidas.Add(carta); //La añadimos a la lista de vidas idCarta++; //Avanzamos el identificador a la siguiente carta } vida = cartasVidas[0]; ButtonCarta btn_Vidas = new ButtonCarta(vida, ""); btn_Vidas.Size = new Size(104, 159); //4 - Creamos el botón para las cartas de las vidas... btn_Vidas.Click += Vida_Click; //... le agregamos el evento correspondiente... btn_Vidas.Text = cartasVidas.Count.ToString(); btn_Vidas.Font = new Font("Arial Black", 28, FontStyle.Regular); btn_Vidas.ForeColor = Color.White; //... y establecemos el texto del botón y su apariencia con las vidas btn_cartaEnMano = new ButtonCarta(); btn_cartaEnMano.Size = new Size(104, 159); //5 - Establecemos el botón para la carta en la mano tbl_control.Controls.Add(btn_Vidas, 0, 3); tbl_control.Controls.Add(btn_cartaEnMano, 0, 1); //6 - Añadimos los botones al tablero de control }
protected void PrepararVentana() { Console.WriteLine("Barajando..."); baraja.Barajar_nuevo(); //Stream flujo = ensamble.GetManifestResourceStream("JuegoDeCartasGTK.imagen.baraja.basto1.png"); int idCarta = 0; //Incializamos un int en 0 para indicar nuestra posición en la baraja for (uint fila = 0; fila < 4; fila++) //El primer FOR es para recorrer las filas del Gtk.Table // debe usarse un 'uint' en vez de 'int' debido a que el método Attach no // acepta una variable de tipo 'int' { for (uint columna = 0; columna < 11; columna++) //El segundo FOR es para recorrer las columnas del Gtk.Table { Carta carta = baraja.baraja[idCarta]; //1 - Obtenemos la carta de la baraja Image imagen = new Image(); //2 - Creamos una imagen ButtonCarta b = new ButtonCarta(carta); //3 - Creamos el botón para la carta con la clase Button modificada y le // asignamos la carta Stream flujo = ensamble.GetManifestResourceStream("JuegoDeCartasGTK.imagen.baraja.reves.png"); //4 - Creamos un flujo de datos para obtener la imagen del botón imagen.Pixbuf = new Gdk.Pixbuf(flujo, 79, 130); //5 - Establecemos el flujo en el objeto imagen declarado antes flujo.Close(); //6 - Cerramos el flujo de datos b.Image = imagen; //7 - Añadimos la imagen al botón b.Clicked += new EventHandler(CartaClick); //8 - Añadimos al botón el evento CartaClick que declaramos más abajo b.Show(); //9 - Marcamos el botón para mostrarse tblTablero1.Attach(b, columna + 1, columna + 2, fila, fila + 1); //10 - Añadimos el botón a la posición actual en la tabla. // Para más detalles sobre el método Attach ver: idCarta++; //11 - Pasamos a la siguiente carta } //Asignar cartas de Vidas for (int columna = 0; columna < 4; columna++) { } } }