elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Duda con Random C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con Random C#  (Leído 3,023 veces)
Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Duda con Random C#
« en: 10 Mayo 2014, 22:02 pm »

Hola a todos. El problema es que necesito que un label cambie su posición en un panel de forma aleatoria, con ayuda de un timer. Lo he conseguido a medias, es decir, el label hace un movimiento en diagonal alo largo del panel, y es como si hubiera un eje diagonal imaginario que impide que aperezca por ejmplo en la esquina opuesta. El fragmento de código que he hecho para generar la posición aleatoria es este:

Código:
private void mobTimer_Tick(object sender, EventArgs e)
        {
            Point position = new Point(x.Next(mobLabel.Width, gamePanel.Width-mobLabel.Width), y.Next(mobLabel.Height, gamePanel.Height-mobLabel.Height));
            mobLabel.Location = position;
        }

Los random x e y los he inicializado al principio del código.

A alguien se le ocurre por que ese movimiento diagonal? Es por que el ramdon genera los números asi?


En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Duda con Random C#
« Respuesta #1 en: 11 Mayo 2014, 00:18 am »

Se debe a que asignas un mínimo de acuerdo al alto y al ancho de tu label. Cambia el código por este

Código
  1. private void mobTimer_Tick(object sender, EventArgs e)
  2.        {
  3.            Point position = new Point(x.Next(0, gamePanel.Width-mobLabel.Width), y.Next(0, gamePanel.Height-mobLabel.Height));
  4.            mobLabel.Location = position;
  5.        }

Y nos dices si es lo que esperabas. Saludos.


En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re: Duda con Random C#
« Respuesta #2 en: 11 Mayo 2014, 11:43 am »

Gracias por la ayuda, pero sigue haciendo exactamente lo mismo. Es extraño por que el label aparece respecto a una diagonal como si fuera un eje y no se sale de ella. Es algo así mas o menos, pero al revés (la dioganal va desde la esquina superior izquierda hasta la inferior derecha)

Yo creo que el problema no esta en los límites de las coordenadas, sino en el propio random de los números...
En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Duda con Random C#
« Respuesta #3 en: 12 Mayo 2014, 06:35 am »

Creo saber a qué se debe, tiene algo que ver con la semilla para generar los números aleatorios. Ocurre algo con la clase random y es que siempre te saldrán los mismos resultados en el mismo orden. Es decir que si a la séptima vez de generar un número aleatorio te sale un 10, con otro objeto ramdom creado con la misma semilla a la séptima vez te saldrá también un número 10.

En vez de crear dos objetos random (X y Y) Utiliza uno solo para asignar el valor de X y Y. Cambia el:

Código
  1. y.Next

Por:

Código
  1. x.Next
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re: Duda con Random C#
« Respuesta #4 en: 12 Mayo 2014, 16:40 pm »

Efectivamente =D. Muchas gracias por la respuesta, ya intuía que debía ser algo de eso.


Saludos y gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Random en VB
Programación Visual Basic
Jess_Kapria 4 4,383 Último mensaje 30 Diciembre 2005, 18:54 pm
por c0rrupt_gamer
Random
Scripting
Herzius 4 3,248 Último mensaje 22 Enero 2008, 18:35 pm
por paperas
El Random no es tan Random.
Programación Visual Basic
Freeze. 7 2,811 Último mensaje 16 Septiembre 2008, 21:02 pm
por JineteNegro666
Duda sobre un metodo que devuelva tres valores random « 1 2 »
Java
Dyabel03 12 9,566 Último mensaje 13 Marzo 2011, 07:53 am
por .mokk.
DUDA CON VISUAL BASIC NÚMERO DE DÍGITOS MÁXIMOS RANDOM
Programación Visual Basic
DeIMachine 0 1,358 Último mensaje 18 Abril 2014, 21:00 pm
por DeIMachine
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines