Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Dudas Programación Xna

Iniciado por Tinbar, 23 de Junio de 2011, 12:26:36 PM

« anterior - próximo »

Tinbar

Hola a todos,

Estoy intentando aprender C# de forma autodidacta, más o menos me voy aclarando poco a poco con toda la información a la que tengo acceso a través de internet, pero hay cosas que no hay manera de averiguar. Entre ellas la siguiente duda que pongo a continuación, a ver si alguien me puede ayudar.

en lo siguiente, ¿que quieren decir el signo de interrogación y los dos puntos?

( i > 70) ? new Vector4(1f, 0f, 0f, 1) : new Vector4(.941f, .845f, 0f, 1)

Gracias de antebrazo.

Vicente

Eso es el operador condicional, es una forma comprimida de hacer un if ... else ...

http://msdn.microsoft.com/en-us/library/ty67wk28.aspx

YaW

Es un if "acortado". Por ejemplo estos dos son lo mismo:

if(x==1){
metodo1();
}else{
metodo2();
}


(x==1) ? metodo1(); : metodo2();

Tinbar


Muchas gracias a los dos, lo intenté buscar en msdn pero obviamente no lo hice bien.

Tinbar

#4
Vuelvo de nuevo con otra duda.

tengo el siguiente array:
public int[,] coordenada =  {  {{1,0}, {0,1}, {1,1}, {2,1}} }      

¿Como separo los valores x e y mte. un for?
p. ej.
for ( int a = 0, a<4, a++)
{
     int xposic = (no sé que poner aquí para que dé el valor x de cada uno de los cuatro puntos del array)
     int yposic = (idem)
}


Antes de molestaros e buscado pero no he conseguido aclararme.
Gracias.

Edit. y ya que estoy, otra cosa . En Visual C# 2010¿Donde se activa la ayuda para escribir código?, esa que muestra menus con las posibles palabras que vas a utilizar mientras vas escribiendo.
     

Vicente

Necesitas hacer algo como esto:


for (int i = 0; i < 4; i++)
{
    int xPos = coordenadas[i, 0];
    int yPos = coordenadas[i, 1];
}


Sobre el intellisense, deberia estar activado por defecto. Mira en Opciones -> Editor de Texto -> C#

blau

#6
Lo de vicente funcionará pero la construcción del array no es válida:

 int[,] coordenada = { { { 1, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } } };

deberia ser:    

  int[,] coordenada = new int[,]{{ 1, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } } ;

Yo en todo caso usaría el tipo Point que es mucho más legible. ;)

[EX3]

Cita de: blau en 30 de Diciembre de 2011, 05:35:39 PM
Yo en todo caso usaría el tipo Point que es mucho más legible. ;)
Mejor Vector2 que es el que se usa generalmente en todas las funciones de dibujo, no? :)
Y en vez de un array no le seria mas comodo usar un List<>?

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Vicente

Cita de: blau en 30 de Diciembre de 2011, 05:35:39 PM
Lo de vicente funcionará pero la construcción del array no es válida:

 int[,] coordenada = { { { 1, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } } };

deberia ser:    

  int[,] coordenada = new int[,]{{ 1, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } } ;

Yo en todo caso usaría el tipo Point que es mucho más legible. ;)


No hace falta el new, solo le sobran un par de llaves :)


int[,] coordenada = { { 1, 0 }, { 0, 1 }, { 1, 1 }, { 2, 1 } } ;


Pero estoy de acuerdo que yo tambien usaria Point/Vector2 y un List<T> en vez de arrays, pero he supuesto que el chico debe estar muy muy muy al principio :)

Tinbar


Hola a todos,

Como bien dice el compañero estoy en pañales aún, empecé antes del verano pero he tenido que para unos  meses por motivos laborales y hace poco he vuelto al "tajo".

Dados mis conocimientos lo que ha propuesto Vicente es lo que voy a usar, no dudo que lo que proponen blau y [EX3] sea más adecuado pero ahora mismo eso es lo que necesito, me apunto lo de Point y List para verlo más adelante.

Muchas gracias y ...

FELIZ AÑO NUEVO!!

[EX3]

Cita de: Tinbar en 31 de Diciembre de 2011, 10:22:29 AM
Dados mis conocimientos lo que ha propuesto Vicente es lo que voy a usar, no dudo que lo que proponen blau y [EX3] sea más adecuado pero ahora mismo eso es lo que necesito, me apunto lo de Point y List para verlo más adelante.
Hombre, lo del List<T> te lo decia por que es mil veces mas sencillo de usar que un Array de toda la vida y son de las herramientas de .NET que mas merece la pena aprender desde el principio junto a los diccionarios y demas objetos utiles :)

List<Vector2> coordenadas = new List<Vector2>();

coordenadas.Add(new Vector2(1, 0));
coordenadas.Add(new Vector2(0, 1));
coordenadas.Add(new Vector2(1, 1));
coordenadas.Add(new Vector2(2, 1));

for ( int a = 0, a<4, a++)
{
      // Los componentes de Vector2 son float, por eso convertimos a entero con (int).
      // En este ejemplo quizas lo idoneo sea usar las variables con tipo float en vez de int.
      int xposic = (int)coordenada[a].X;
      int yposic = (int)coordenada[a].Y;
}

// Un ejemplo con un foreach que suele ser mas comodo para recorrer listas o arrays:
for each (Vector2 c in coordenadas)
{
     float xposic = c.X;
     float yposic = c.Y;
}


Yo por mi parte, lo de usar Vector2 en vez de Point es por que generalmente en XNA la gran mayoria de funciones y metodos trabajan con Vector2, de esa forma te ahorraras tener que hacer conversiones cada vez que quieras usar los valores de un Point en un parametro Vector2 de una funcion.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Tinbar


Hola,

[EX3] , mi "apego" al array se debe a que las coordenadas que puse son una "rotación" de una pieza de Tetris, de momento estoy intentando dibujarla en pantalla y hacerla caer, así después para las demás rotaciones de la misma figura y el resto usaré matrices, vamos como en el tutorial con el que estoy aprendiendo.  ;)

En cualquier caso el ejemplo perfectamente esquematizado que has puesto de un List me ha dejado claro como usarlo cuando lo necesite, (sólo utilicé antes un List en el ejemplo del shooter de la web de msdn y como estaba entre otras muchas conceptos que me eran totalmente nuevos no lo tenía claro) de modo que muchas gracias.

y bueno ya que lo has comentado, ¿Cuáles son esos diccionarios y objetos útiles que conviene aprender?

Saludos.


[EX3]

Me alegro que te haya sido de alguna ayuda :)

Lo de los diccionarios son utiles cuando necesitas tener una lista de elementos unicos identificados por una clave, viene a ser como un List<T> al que le puedes definir el tipo de dato a almacenar pero donde tambien defines el tipo de dato de la clave que usara cada elemento:

Dictionary<string, Vector2> coordenadas = new Dictionary<string, Vector2>();

coordenadas.Add("coordenada_a", new Vector2(1, 0));
coordenadas.Add("coordenada_b", new Vector2(0, 1));
coordenadas.Add("coordenada_c", new Vector2(1, 1));
coordenadas.Add("coordenada_d", new Vector2(2, 1));

Vector2 a = coordenadas["coordenada_a"];

Vector2 a = coordenadas.Values[0]; // Tambien puedes referirte por indices si lo necesitas.

for each (Vector2 c in coordenadas.Values)
{
     float xposic = c.X;
     float yposic = c.Y;
}

Obviamente hay escenarios donde el diccionario es mas util, esto es un mero ejemplo para ver como funciona basicamente :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Tinbar


Vaya, de los diccionarios no sabía nada, te lo agradezco enormemente porque además de hacermelos conocer se entiende enseguida,  :) , muchas gracias.

Saludos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.