Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Número aleatorio en TLabel (https://www.clubdelphi.com/foros/showthread.php?t=91038)

yuyidt 28-10-2016 21:15:41

Número aleatorio en TLabel
 
Buenas tardes, Estoy haciendo un programa y necesito su ayuda, no se como hacer un código para esto:
Tengo un label que mostrara un numero aleatorio, quisiera hacer algo así por ejemplo,
Si label es igual a 3, entonces selecciona el boton 4, luego de seleccionar que me lleve a otro formulario (form2)
Si no selecciona el boton 4 entonces pasa a otro fomulario (form4)

Como se haría esto en delphi?. Ayuda por favor

AgustinOrtu 28-10-2016 23:51:11

No entendi lo que queres lograr

Pones un numero aleatorio en un label (supongo que ya sabes como hacer esto)

Luego de poner ese numero aleatorio en el label, si es el 3, "selecciono el boton 4, luego de seleccionar que me lleve a form2. Si no selecciona el boton 4 entonces pasa a form4"

Que es seleccionar el boton4? Darle foco?

Una vez seleccionado el boton4, el programa debe mostrar inmediatamente el form2?

En que momento te fijas si el numero es 3 para hacer todo esto?

Y si el numero no es 3? que se hace, se pasa a form4, no se hace nada?

Has escrito algo de codigo?

yuyidt 31-10-2016 15:34:26

Ayuda de Código
 
3 Archivos Adjunto(s)
Ok. He cambiado un poco a lo siguiente:
Tengo un label que muestra un numero en pantalla del 1 al 5 aleatorio
En la misma pantalla tengo botones (bitbtn) que contienen imágenes con cifras matemáticas, por ejemplo (3 + 2) (5 - 1)...
La idea es que ellos seleccionen la imagen que corresponde al número que aparece y que al seleccionar: En este caso seleccionan bitbtn3
• Si es correcto, se coloque un fondo verde encima de la imagen (que pueda titilar) y que suene un tono. Luego que aparezca dicho fondo y suene el tono, que a los 5 segundos me lleve al siguiente formulario
• Si es incorrecto, se coloque un fondo rojo (que pueda titilar) y suene otro tono.
Aquí les adjunto imágenes de ejemplo,
Solo tengo las pantallas, nada de código porque no sé cómo hacerlo. Necesito su ayuda por favor. Gracias

ecfisa 31-10-2016 18:03:00

Hola yuyidt.

Pero, ¿ Has cambiado la idea inicial no ? , por que ya no aparecen otros formularios...

Bueno, con respecto a tu última consulta creo que te complicas mucho usando imágenes, te resultaría mas simple usando solamente paneles.

Un ejemplo simplificado:
Código Delphi [-]
...
implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  Panel1.Tag     := Random( 5 ) + 1;
  Panel1.Caption := IntToStr(Panel1.Tag);

  Panel2.Tag := 2; // 3 - 1
  Panel3.Tag := 6; // 4 + 2
  Panel4.Tag := 5; // 3 + 2
  Panel5.Tag := 4; // 2 + 2
  Panel6.Tag := 3; // 2 + 1
  Panel7.Tag := 1; // 4 - 3
end;

// Código asignado a los eventos OnClick de los 6 paneles inferiores (opciones)
procedure TForm1.PanelesClick( Sender: TObject );
const
  CCOLOR: array[Boolean] of TColor = (clRed, $0000D900);
  CBEEP : array[Boolean] of LongWord = (MB_ICONERROR, MB_OK);
var
  pnl: TPanel;
  i: Integer;
begin
  pnl       := TPanel(Sender);
  pnl.Color := CCOLOR[pnl.Tag = Panel1.Tag];

  for i := 0 to 5 do
  begin
    pnl.Visible := not pnl.Visible;
    Sleep(100);
  end;
  pnl.Visible := True;

  MessageBeep(CBEEP[pnl.Tag = Panel1.Tag]);
end;

// Generar otro nuevo resultado al azar y restaurar respuestas anteriores
procedure TForm1.btnContinuaClick(Sender: TObject);
var
  i : Integer;
begin
  for i := 0 to ControlCount - 1 do
    if Controls[i] is TPanel then
      TPanel(Controls[i]).Color := clBtnFace;

  Panel1.Tag     := Random( 5 ) + 1;
  Panel1.Caption := IntToStr(Panel1.Tag);
end;

Saludos :)

yuyidt 31-10-2016 19:28:29

Muchas gracias. lo probare.
 
Muchísimas gracias por tu aporte. Lo haré y les cuento como me fue. Si cambie la idea inicial. y tendré 2 formularios pero uno sera para el nivel 1 y el otro para el nivel 2.
Esa ayuda que me has dado si me sirve para el segundo nivel, pero para el primer nivel si es necesario trabajarlo con imágenes, ya que aquí no van a seleccionar cifras sino imágenes (frutas).
Por ejemplo, Saldrán 4 manzanas, 2 peras, 5 naranjas y ellos tendrán que seleccionar la respuesta correcta también de acuerdo al numero que muestre el label. Alli puedo continuar trabajando con los bitbtn, o uso timage? O sino cual me recomiendan que se le pueda agregar una imagen?

yuyidt 01-11-2016 13:26:51

Resultados
 
Hola buenos días. Aplique el código y funciona bien pero no hace lo que necesito.

1. En los paneles aparecen solo números y yo necesito que sean cifras, por ejemplo (2 +3). Ya que el label mostrara el numero y ellos deben seleccionar la cifra de acuerdo al numero que aparece en el label.
2. Me gustaría que el botón siguiente aparezca solo si la respuesta es correcta.
3. Este código va así? o debo hacer el mismo código del panel1 para todos los paneles 2,3,4,5,6 y 7?
Randomize;
Panel1.Tag := Random( 5 ) + 1;
Panel1.Caption := IntToStr(Panel1.Tag);

Panel2.Tag := 2; // 3 - 1
Panel3.Tag := 6; // 4 + 2
Panel4.Tag := 5; // 3 + 2
Panel5.Tag := 4; // 2 + 2
Panel6.Tag := 3; // 2 + 1
Panel7.Tag := 1; // 4 - 3

ecfisa 01-11-2016 17:12:18

1 Archivos Adjunto(s)
Hola.
Cita:

Empezado por yuyidt (Mensaje 510285)
Hola buenos días. Aplique el código y funciona bien pero no hace lo que necesito.

1. En los paneles aparecen solo números y yo necesito que sean cifras, por ejemplo (2 +3). Ya que el label mostrara el numero y ellos deben seleccionar la cifra de acuerdo al numero que aparece en el label.
2. Me gustaría que el botón siguiente aparezca solo si la respuesta es correcta.
3. Este código va así? o debo hacer el mismo código del panel1 para todos los paneles 2,3,4,5,6 y 7?
...

1. En los paneles aparecen cifras (operaciones aritméticas mas rigurosamente) de este modo:


Te adjunto el código fuente del ejemplo (en funcionamiento) para que puedas cotejarlo.

2. Falta mas información sobre como se desarrollará la aplicación, ya que ocultar el componente hace suponer que en algún punto se pueda volver a mostrar.

3. Va tál como en el mensaje anterior, tal vez lo veas mas claro analizando el código fuente adjuntado .

Saludos :)

yuyidt 01-11-2016 17:34:05

Hola
 
Hola probare nuevamente. Seguro ubique mal el código. Gracias
Tengo un formulario de inicio, otro de selección parecido al que hemos hablado pero en este caso de imágenes, y tengo este ultimo formulario.
La idea es que cuando ellos seleccionen la respuesta correcta, se sombree verde, suene el tono y en 3 o 5 segundos cambie las cifras sin usar un botón, pero si es necesario usar botón, entonces que ellos no puedan darle siguiente hasta que seleccionen la respuesta correcta, si me explico? es decir que este bloqueado hasta que ellos seleccionen la respuesta correcta, entonces al seleccionar correctamente, que se desbloquee y puedan pasar a las siguientes operaciones, pero si responden incorrectamente 3 veces, entonces allí si me llevara a otro form donde esta la pantalla de game over.

yuyidt 02-11-2016 15:08:08

Hola ecfisa
 
Realmente abrí tu proyecto en delphi xe10 y no me funciona, haciendo lo mismo en mi proyecto tampoco funciona. Si me aparece igual que a la imagen que me mostraste pero cuando selecciono la respuesta correcta no se me sombrea verde ni rojo cuando es incorrecta. Sera por la versión de delphi? Ayuda por favor

ecfisa 02-11-2016 15:26:57

Hola yuyidt.

No tengo delphi XE10 en este momento pero, fijate si el comporamiento no tiene que ver con lo que comentan aquí: How i can change the color of a TPanel with the Vcl Styles enabled?

Saludos :)

yuyidt 02-11-2016 15:45:14

Ayuda de juego
 
3 Archivos Adjunto(s)
Hola buenos dias necesito realizar el siguiente juego y no tengo idea de como hacerlo. Ayudenme por favor. Estoy usando delphi xe10 seattle,
Pantalla 1 - form1: Pantalla de inicio del juego
Pantalla 2 - form2: Inicio del juego nivel 1, Tengo un label (Tlabel) que muestra un numero en pantalla del 1 al 5 aleatorio
En la misma pantalla tengo imagenes (Timagen) imágenes con cifras matemáticas, por ejemplo (3 + 2) (5 - 1)...
La idea es que ellos seleccionen la imagen que corresponde al número que aparece en el label, quiero que el codigo diga algo como esto: Si el label = 3, entonces selecciona la imagen 3 (por supuesto la imagen 3 es la correcta, las otras imagenes son incorrectas.
• Si es correcto, se coloque un fondo verde encima de la imagen (que pueda titilar) y que suene un tono. Luego que aparezca dicho fondo y suene el tono, que a los 5 segundos me lleve al siguiente formulario, que sera el nivel 2
• Si es incorrecto, se coloque un fondo rojo (que pueda titilar) y suene otro tono. Despues que seleccione respuesta incorrecta 3 veces, entonces que me lleve a la pantalla 4 (game over)
Aquí les adjunto imágenes de ejemplo,
Pantalla 3 - form3: nivel 2. basicamente lo mismo que el primero.
Pantalla 4 - form4: Game Over

Solo tengo las pantallas, nada de código porque no sé cómo hacerlo. Necesito su ayuda por favor. Gracias

movorack 02-11-2016 16:00:10

y... ¿Que ayuda necesitas?

yuyidt 02-11-2016 16:06:46

Hola movorack
 
Como te decía en el mensaje Solo tengo las pantallas, nada de código porque no sé cómo hacerlo. Si me ayudan por favor. Lo necesito urgente

ecfisa 02-11-2016 16:13:31

Hola yuyidt

Combiné el hilo que creaste en el foro "Noticias" con este ya que se trata de lo mismo.

Por favor, no crees nuevos hilos sobre el mismo tema, continua en el mismo.

Saludos :)

yuyidt 02-11-2016 16:36:43

Muchas gracias
 
Y disculpa solo que el otro hilo lo explique mejor entonces pensé que al hacerlo por aquí iba crear confusión

movorack 02-11-2016 16:52:13

Hola.

Veo que ecfisa te dio soluciones, pero parece que lo que solicitas es que te hagan el programa sin hacer esfuerzo alguno.

Recuerda:

Casimiro Notevi 02-11-2016 16:58:33

Cita:

Empezado por yuyidt (Mensaje 510351)
Como te decía en el mensaje Solo tengo las pantallas, nada de código porque no sé cómo hacerlo. Si me ayudan por favor. Lo necesito urgente

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)

yuyidt 02-11-2016 17:12:39

Disculpen.
 
Necesito solo que me orienten, ya que no se nada de delpfi. ecfisa me ayudo bastante pero me da problemas. Disculpen, si les causa incomodidades solo obvien el mensaje. Gracias a ecfisa por su gran ayuda

ecfisa 02-11-2016 17:41:14

Hola yuyidt.

¿ Por que no ajduntas el código con el que estás intentando ?, de ese modo al menos podríamos revisar que es lo que sucede para aproximar una solución.

Saludos :)

Casimiro Notevi 02-11-2016 19:02:22

Cita:

Empezado por yuyidt (Mensaje 510368)
Necesito solo que me orienten, ya que no se nada de delpfi.

Tengo que hacer una operación de cerebro. No sé nada de cirugía. Necesito solo que me orienten.
Cita:

Empezado por ecfisa (Mensaje 510372)
Hola yuyidt.
¿ Por que no ajduntas el código con el que estás intentando ?, de ese modo al menos podríamos revisar que es lo que sucede para aproximar una solución.
Saludos :)

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 18:00:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi