Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: javierx0246 en 09 de Enero 2023, 16:32

Título: Duda sobre como hacer introducir valor en un baraja española
Publicado por: javierx0246 en 09 de Enero 2023, 16:32
Hola estoy haciendo un ejercicio y me falla la parte donde yo tengo que poner el valor. Al atributo valor y el enumerado.


El ejercicio
Debes definir un tipo valor que represente un Naipe de la baraja Española de 48 cartas. El tipo estará compuesto por dos miembros: un valor y un palo, este último sera de tipo enumerado con los siguientes valores posibles: Oros, Copas, Bastos, Espada.
Crea un método en la clase principal que utilizando el tipo Naipe nos devuelva una baraja con las 48 cartas, usa una matriz Naipe[,] baraja= new Naipe[4,12] e inicialízala suponiendo que cada fila representa un palo.


Mi codigo





using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Text;
using System.Text.RegularExpressions;
internal class Program
{
    struct Naipe
    {
        public enum Tipo { Oros, Copas, Bastos, Espada }
        public Tipo tipo;
        public readonly int valor;
        public Naipe(Tipo tipo, int valor)
        {

            this.valor = valor;
            this.tipo = tipo;
        }


    }


    public static void Baraja()
    {
        Naipe[,] Baraja = new Naipe[4, 12];
        for (int i = 0; i < Baraja.GetLength(0); i++)
        {
            for (int j = 0; j < Baraja.GetLength(1); j++)
            {
                Baraja[i, j].tipo = Naipe.Tipo.Oros;
                Baraja[i, j].valor=0
            }
        }


    }
    private static void Main(string[] args)
    {


        Program.Baraja();
        Console.ReadLine();


    }

}
Gracias
Título: Re: Duda sobre como hacer introducir valor en un baraja española
Publicado por: Kabuto en 10 de Enero 2023, 11:28
Hola.
No controlo C# así que no se decirte el código concreto que necesitas.

Pero la lógica a seguir sería que con el indice i del primer bucle
Código: [Seleccionar]
for (int i = 0; i < Baraja.GetLength(0); i++)Lo uses para recorrer los 4 valores del enum Tipo

Y el índice j del segundo bucle,
Código: [Seleccionar]
for (int j = 0; j < Baraja.GetLength(1); j++) para asignar los 12 valores posibles a las cartas.
Este índice j va a ir de 0 a 11, pero las cartas van a tener valores de 1 a 12, así que al asignar valores tendrás que sumar +1 al índice.

En esto que pongo abajo, la línea azul ya estaría correcta.
Es la roja la que hay que averiguar como, mediante el índice i que va a recorrer los valores de 0 a 3, obtener cada uno de los 4 enum.
No se como se hace eso en C# ni dispongo de tiempo para investigarlo  :-\
Pero quizás tú tengas apuntes o algún ejercicio de ejemplo donde se explique

Citar
        for (int i = 0; i < Baraja.GetLength(0); i++)
        {
            for (int j = 0; j < Baraja.GetLength(1); j++)
            {
                Baraja[i, j].tipo = Naipe.Tipo.Oros;
                Baraja[i, j].valor= j + 1;
            }
        }