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...
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!!
Cita de: Vaagish en 8 Diciembre 2013, 20:20 PM
(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.
Cita de: Ikillnukes en 8 Diciembre 2013, 17:46 PMVale 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:
Citarpreset = new Item();
preset.name = "Apple";
preset.cost = 25;
preset.weight = 1;
Saludos!
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.html
Un saludo.
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...
No son controles...
Son texturas representados con Rects :P
Cita de: Ikillnukes en 9 Diciembre 2013, 01:07 AMSon texturas representados con Rects :P
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
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... :P
Citarademas 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? :rolleyes:
xD A ver, es lo que me brinda Unity3D, que le hago yo...
Si solo tengo C#, JS y Boo... :P
CitarxD A ver, es lo que me brinda Unity3D, que le hago yo...
Si solo tengo C#, JS y Boo... :P
Uff,, es que como practica te va a servir muchísimo, pero va a quedar extremadamente pesado el juego.. pero suerte!! Te va a ser divertido! ;D
Saludos!!
Cita de: Vaagish en 9 Diciembre 2013, 17:29 PM
Te referís a que solo se pueden usar enteros y no decimales,, no?
Hola
Me refería a que los nombres de los identifficadores de una
Enum no pueden ser numéricos, como en este ejemplo:
<Flags>
Enum Widths As Short
500
600
End Enum
Aunque no sé si Ikillnukes tenia pensado hacer algo asi, pero de todas formas lo intenté aclarar.
Saludos!
CitarMe refería a que los nombres de los identifficadores de una Enum no pueden ser numéricos
ah si tamos de acuerdo,, yo pensé que decías que una Enum, no podía tener valores numéricos
Saludos!