Autor
|
Tema: Casos prácticos en los que se puede usar una Enumeración (Leído 7,407 veces)
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Hola buenas, pues me gustaría saber sobre las enumeraciones, y como en MSDN viene todo tan técnicamente expresado, pues me cuesta entender los ejemplos..
Así que he aquí mi pregunta...
Vale la pena usar una enumeración, por ejemplo en el Width de X (14) objectos?? O mas bien, es mejor usar X (14) declaraciones de tipos int??
Un saludo.
Es que veréis, me gustaría hacer un sistema de propiedades para mi juego, en donde se puede resizar (cambiar de tamaño) los elementos de la GUI, y claro, no se que sería más fácil hacer, un array con 14 indexes, una enumeración con 14 elementos, o declarar 14 elementos...
|
|
« Última modificación: 8 Diciembre 2013, 17:47 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
Seguro que 14 declaraciones no (Siempre que tengas otro meto para hacer lo mismo), podes usar estructuras o enumeraciones,, dependiendo el caso, lo que creas que va a resultar mas facil de utilizar (implementar) y si realmente te conviene.. me da la impresion que te conviene una estructura en el caso de un Width (Igual no entiendo que son esos 14 objetos??) Tendrias que detallar mejor..
Con respecto a la MSDN, que te interesa saber? Es bastante clara.. te pone (por ejemplo) una API, te dice que parametros son opcionales y cuales obligatorios, te da una descripcion, en que libreria se encuentra y en algunos casos ejemplos..
EDITO: Ahora que releo el titulo del post, (Casos practicos...) una enumeracion es conveniente para agrupar tipos de datos relacionados,, por ejemplo, colores (el tipico ejemplo que se suele dar), pero pueden ser muchas cosas mas que quisieras "Enumerar", dias, meses, años, dispositivos.. cualquier cosa enumerable!!
Saludos!!
|
|
« Última modificación: 8 Diciembre 2013, 20:25 pm por Vaagish »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
(Igual no entiendo que son esos 14 objetos??)
Son todo ints... Por eso digo, que a lo mejor me conviene más una enumeración. También conozco una estructura, pero pa qué? Si todas las variables son del tipo int.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Vale la pena usar una enumeración, por ejemplo en el Width de X (14) objectos?? O mas bien, es mejor usar X (14) declaraciones de tipos int?? Típica pregunta inentendible como de costumbre Ikillnukes, pero viniendo de ti te perdono xD ¿Si no entiendo mal quieres decir que tienes 14 obje ctos y quieres guardar el valor de "ancho" de cada objeto en algún lugar para acceder a ellos fácilmente? Por como pintas el problema no creo que una Enum sea lo que necesitas, puesto que para empezar no se puede crear dinámicamente una Enum en tiempo de ejecución (al menos eso dice MSDN), y los elementos de una Enum tampoco se pueden modificar en tiempo de ejecución, ademas los valores de "widths" me imagino que serán numéricos (otro motivo para no pdoer usar una Enum). Un Array es algo complétamente diferente a una Enum, no tiene ni pies ni cabeza comparar uno con lo otro, Enumeraciones es para X cosas y un Array para otras, una Enum es util si se sabe usar y puedes hacer con ella cosas interesantes como utilizar el attributo Flags y combinarlos (si resultase necesario), pero como ya digo, dudo que sea el caso de que una Enum te sirva... Yo te recomiendo el uso de un Dictionary o cualquier otro Type como una Tuple; un Array 2D también te sirve pero pff teniendo esto no hace falta, te muestro un ejemplo en VB.NET: Public Class Form1 Private myObject As Object = "Object 1" Private ReadOnly Widths As New Dictionary(Of Object, Size ) From { {myObject, New Size(500, 0)} } Private Sub Test() Handles MyBase.Shown ' Ejemplo de como iterar los elementos del diccionario For Each key As KeyValuePair(Of Object, Size) In Widths MsgBox(String.Format("Object:{0} Width:{1}", CStr(key.Key), CStr(key.Value.Width))) Next ' Ejemplo de como acceder a un elemento específico: MsgBox(Widths(myObject).Width) MsgBox(Widths.First.Value.Width) End Sub End Class
EDITO: Si además del "Width" petendes especificar más cosas te recomiendo que crees tu Type propio y le añadas los miembros que quieras, como en el ejemplo del link que me has mostrado: preset.name = "Apple"; preset.cost = 25; preset.weight = 1;
Saludos!
|
|
« Última modificación: 8 Diciembre 2013, 21:01 pm por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Vaya, y como de costumbre, siempre te sueles enterar "a duras penas" de lo que pregunto. xD Pero vaya, me has aclarado la duda... Y sí, no es mala idea el diccionario, es más mira en lo que lo tenia pensado usar: http://answers.unity3d.com/questions/155003/item-database.htmlUn saludo.
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Probaste con la propiedades anchor de los controles? Y si el usuario quiere sus propias medidas?
Pone un par de paneles con splitter y yá
Hardcodear no siempre es bueno...
|
|
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
No son controles... Son texturas representados con Rects
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Son texturas representados con Rects Primero dices que necesitas especificar un tamaño, pero ahora dejas ver que también necesitas especificar unas coordenadas (Por el uso de la estructura Rect). En ese caso puedes usar la estructura Rectangle para especificar ambos: Dim myTexture As New Rectangle(New Point(X, Y), New Size(W, H))
Saludos
|
|
« Última modificación: 9 Diciembre 2013, 02:50 am por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
No a ver, Unity tiene sus propias maneras: GUI .DrawTexture(new Rect (top, left, width, height ), (Texture2D )Resources .Load("carpeta/archivo"));
Si no mal recuerdo, pero el top y el left son fijos.... Bueno ahora que lo pienso los que esten a la izquierda van a tener que casmbiar el left (hacerse mas chico) para poder contrarrestar el cambio de tamaño (resize), pero bueno, para eso ya haré alguna función...
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Vaagish
Desconectado
Mensajes: 875
|
ademas los valores de "widths" me imagino que serán numéricos (otro motivo para no pdoer usar una Enum). Te referís a que solo se pueden usar enteros y no decimales,, no? @Ikillnukes: No estarás planeando hacer un juego serio en .NET, no?
|
|
|
En línea
|
|
|
|
|
|