Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2015
Vilkov Vilkov is offline
Registrado
NULL
 
Registrado: may 2015
Posts: 5
Poder: 0
Vilkov Va por buen camino
Nuevo en el foro, y poco experimentado en el Delphi

Buenas tardes a todos desde Catalunya!
Tengo algunas dudas, que no se bien en que apartado van, en caso de que me haya equivocado de sitio, y un administrador lo cambia o algo así, se lo agradezco!
Bueno, aquí van las dudas, y el por que de las mismas.
Yo estoy estudiando primero de automatización y robótica industrial, y en la parte de informática, nuestro profesor nos ha encomendado la tarea de realizar un juego, que lleve una matriz, que haya respuesta de "verdadero" o "falso", y que las preguntas el programa las haga a partir de los datos que hemos introducido en un StringGrid.
Hasta ahora, he logrado hacer el diseño y la parte del juego, pero no tengo ni la menor idea de como hacer para que al clicar el botón "iniciar", en un StaticText, me salga el nombre aleatorio de los datos del grid, y que si yo elijo la opción correcta o incorrecta se me ilumine un panel de verde u otro de rojo ( esto último si), y que además de todo eso, me contabilice los fallos y/o los aciertos.
El juego trata de un panel con una imagen con varias banderas, y un shape, con el cual anteriormente en la parte de diseño he creado un .txt con las coordenadas y la bandera, gracias al cual he rellenado automáticamente el stringgrid, y ahora necesito que el programa me pida una bandera y si clico en la coordenada correcta, me la de por buena, y si doy en la incorrecta, por mala.
Vamos, que necesito ayuda en lo siguiente:
1 - Como hacer que al clicar en "iniciar" el StaticText me muestre un dato ( de texto ) aleatorio del StringGrid.
2 - Si elijo la respuesta incorrecta el juego contabilice 1 fallo, y lo mismo para el acierto.

Mil gracias a todos, siento no haber escrito antes ninguna presentación ni nada, llevo como 1 semana con lo mismo y no soy capaz encontrar nada, y como he visitado mucho este foro para informarme de según que cosas, acudo a vosotros personalmente.
Gracias a todos, ayudéis o no.
Responder Con Cita
  #2  
Antiguo 29-05-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Vilkov,

Cita:
Empezado por Vilkov
...nuestro profesor nos ha encomendado la tarea de realizar un juego...he logrado hacer el diseño y la parte del juego, pero no tengo ni la menor idea de como hacer para que al clicar el botón "iniciar", en un StaticText, me salga el nombre aleatorio de los datos del grid...
¡Bienvenido al Club Delphi!

Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #3  
Antiguo 29-05-2015
Vilkov Vilkov is offline
Registrado
NULL
 
Registrado: may 2015
Posts: 5
Poder: 0
Vilkov Va por buen camino
Gracias!
Ahora me lo revisaré, a ver si se me queda algo, hay que decir que a veces soy bastante duro de mollera. Y sobre todo cuando he de entregar el trabajo en 2 días xDD
A ver que hacemos!!
Responder Con Cita
  #4  
Antiguo 29-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Vilkov Ver Mensaje
Gracias!
Ahora me lo revisaré, a ver si se me queda algo, hay que decir que a veces soy bastante duro de mollera. Y sobre todo cuando he de entregar el trabajo en 2 días xDD
A ver que hacemos!!
Si llevas una semana sin saber cómo hacerlo, tenías que haber empezado por el principio: leer y aprender.

También ten en cuenta algo esencial: Divide y vencerás.
De las tareas que tienes que hacer, ve dividiéndolas lo más simples que puedas y vas haciéndolas por separado. Ejemplos:
- Rellenar un stringrid
- Crear un número aleatorio
- Mostrar la respuesta leyendo del stringrid, según ese número aleatorio.
- etc.
Responder Con Cita
  #5  
Antiguo 29-05-2015
Vilkov Vilkov is offline
Registrado
NULL
 
Registrado: may 2015
Posts: 5
Poder: 0
Vilkov Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si llevas una semana sin saber cómo hacerlo, tenías que haber empezado por el principio: leer y aprender.

También ten en cuenta algo esencial: Divide y vencerás.
De las tareas que tienes que hacer, ve dividiéndolas lo más simples que puedas y vas haciéndolas por separado. Ejemplos:
- Rellenar un stringrid
- Crear un número aleatorio
- Mostrar la respuesta leyendo del stringrid, según ese número aleatorio.
- etc.
Si es que solo me quedan 2 cosas por hacer, y tengo códigos apuntados en la libreta, de clase, pero me cuesta organizarlos.
Responder Con Cita
  #6  
Antiguo 29-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues di exactamente qué problema tienes, qué no comprendes, qué necesitas, muestra tu código y dinos qué hace, cómo lo hace, qué error muestra, etc.
Responder Con Cita
  #7  
Antiguo 30-05-2015
Vilkov Vilkov is offline
Registrado
NULL
 
Registrado: may 2015
Posts: 5
Poder: 0
Vilkov Va por buen camino
Errores, no tengo ninguno, basicamente, por que todo lo que he hecho hasta ahora, me ha salido.
Lo que he hecho hasta ahora, es el diseño, que es donde pongo un Shape encima de una bandera ( es una imagen con varias banderas ), el nombre y me guarda el nombre y las coordenadas en un .txt, aquí acaba la parte del diseño ( que sirve basicamente para guardar las coordenadas de las banderas, para poder tirarlas a un grid, y utilizarlas en el juego ).

Ahora viene la parte del juego propiamente dicho; Al entrar al juego ( que es un form dentro de un proyecto, en el cual está también el diseño ), cuando clique en un botón que he llamado "Inicio", quiero que en un Static Tex, me ponga un país, el cual ha de ser sacado del grid de forma aleatoria, para que con el nombre del país, yo busque la bandera que le pertenece. Es solo eso.

Yo ya tengo en la libreta apuntados códigos para que después en caso de que acierte o falle, me de un mensaje de acierto o error.
Pero lo mas importante es eso de que me saque un nombre aleatorio del grid y me lo ponga en el StaticText.
Responder Con Cita
  #8  
Antiguo 30-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, lo entendí, por eso pregunto, qué no sabes hacer de eso, en qué parte tienes problemas, ¿qué código estás probando?, ¿qué resultados estás obteniendo?, etc.
Responder Con Cita
  #9  
Antiguo 30-05-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Vilkov,

Cita:
Empezado por Vilkov
...nuestro profesor nos ha encomendado la tarea de realizar un juego...he logrado hacer el diseño y la parte del juego, pero no tengo ni la menor idea de como hacer para que al clicar el botón "iniciar", en un StaticText, me salga el nombre aleatorio de los datos del StringGrid...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, Grids, jpeg, Math, ComCtrls;

type

  TShape = class(ExtCtrls.TShape);

  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    StringGrid1: TStringGrid;
    StaticText1: TStaticText;
    BitBtn1: TBitBtn;
    Shape1: TShape;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure ValidateImage(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SelectImage : Integer;
  PreviousImage : Integer;
  RndImg : Array of Byte;
  Success, Error : Integer;
  StartGame : Boolean = False;

  Ask : Array[0..2] of String = ('¿Cual es la Imagen del Universo?',
                                 '¿Cual es la Imagen de la Tierra?',
                                 '¿Cual es la Imagen de la Galaxia Espiral?');

implementation

{$R *.dfm}

// Configura los componentes de la aplicación
procedure TForm1.FormCreate(Sender: TObject);
var
   Row, Col : Integer;

begin

   // Configura StaticText1
   StaticText1.Caption := 'Click al Botón con el Bombillo';
   StaticText1.Font.Color := clNavy;
   StaticText1.Font.Name := 'Tahoma';
   StaticText1.Font.Size := 12;

   // Configura Image(x) y Button(x)
   Image1.Center := True;
   Image1.Stretch := True;
   Image1.Picture.LoadFromFile('Image\Universe.jpg');
   Button1.Tag := 0;
   Button1.OnClick := ValidateImage;

   Image2.Center := True;
   Image2.Stretch := True;
   Image2.Picture.LoadFromFile('Image\Earth.jpg');
   Button2.Tag := 1;
   Button2.OnClick := ValidateImage;

   Image3.Center := True;
   Image3.Stretch := True;
   Image3.Picture.LoadFromFile('Image\Spiral Galaxy.jpg');
   Button3.Tag := 2;
   Button3.OnClick := ValidateImage;

   // Configura y carga StringGrid1 en base al arreglo Ask
   StringGrid1.FixedRows := 0;
   StringGrid1.FixedCols := 0;
   StringGrid1.RowCount := 3;
   StringGrid1.ColCount := 1;

   for Row:= 0 to StringGrid1.RowCount - 1 do
      for Col:= 0 to StringGrid1.ColCount - 1  do
      begin
         StringGrid1.Cells[Col,Row]:= Ask[Row];
         StringGrid1.ColWidths[Col] := 300;
      end;

   StringGrid1.Selection := TGridRect(Rect(-1, -1, -1, -1));

   // Configura BitBtn1 
   BitBtn1.Glyph.LoadFromFile('Image/Help.bmp');

   // Configura Shape1
   Shape1.Brush.Color := clSkyBlue;
   Shape1.Brush.Style := bsSolid;
   Shape1.Canvas.Font.Name :='Tahoma';
   Shape1.Canvas.Font.Size := 14;

   // Configura StatusBar1
   StatusBar1.Panels.Add.Text := 'Aciertos';
   StatusBar1.Panels.Items[0].Width := 200;

   StatusBar1.Panels.Add.Text := 'Errorres';
   StatusBar1.Panels.Items[1].Width := 200;

end;

// Valida la imagen seleccionada
procedure TForm1.ValidateImage(Sender: TObject);
begin

   if not StartGame then
      Exit;

   // Verifica y contabiliza las respuestas
   if SelectImage = TImage(Sender).Tag then
   begin

      Shape1.Canvas.Font.Color := clGreen;
      Shape1.Canvas.Font.Style := [fsBold];
      Shape1.Canvas.TextOut(135,1,'¡Correcto!   ');

      Inc(Success);

      StatusBar1.Panels.Items[0].Text := Format('Aciertos = %d',[Success]);

   end
   else
   begin

      Shape1.Canvas.Font.Color := clRed;
      Shape1.Canvas.Font.Style := [fsBold];
      Shape1.Canvas.TextOut(135,1,'¡Incorrecto!');

      Inc(Error);

      StatusBar1.Panels.Items[1].Text := Format('Errorres = %d',[Error]);

   end;

end;

// Selecciona una pregunta al random y configura la interfaz
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   Row : Integer;
   Select : Boolean;
   i : Integer;

begin

   Randomize;

   PreviousImage := SelectImage;

   // Selecciona de forma equiprobable una pregunta sin repetición consecutiva
   repeat

      Select := True;
      repeat
         Row := Random(3);
      until Row <> PreviousImage;

      if Length(RndImg) = 3 then
         SetLength(RndImg,0);

      for i := Low(RndImg) to High(RndImg) do
      begin
         if RndImg[i] = Row then
         begin
            Select := False;
            Break;
         end
      end;

      if Select then
      begin
         SetLength(RndImg,Length(RndImg)+1);
         RndImg[High(RndImg)] := Row;
      end;

   until Select;

   SelectImage := Row;

   StaticText1.Caption := StringGrid1.Cells[0,Row];
   StringGrid1.Selection := TGridRect(Rect(0, Row, 0, Row));
   Shape1.Canvas.TextOut(135,1,StringOfChar(' ',20));

   StartGame := True;

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Implementa un juego básico de preguntas, como se muestra en la siguiente imagen:



Notas:

1- El código propuesto tiene como único objetivo, servir de guía a los requerimientos planteados en el Msg #1.

2- La configuración de los controles, se hace mediante código para facilitar la visualización de la configuración de los mismos.

3- El código propuesto esta disponible en : GameUniverse.rar

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-05-2015 a las 14:26:45.
Responder Con Cita
  #10  
Antiguo 01-06-2015
Vilkov Vilkov is offline
Registrado
NULL
 
Registrado: may 2015
Posts: 5
Poder: 0
Vilkov Va por buen camino
Mil gracias!
Voy a probar de adaptarlo a mi programa!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Soy nuevo en el foro rilart La Taberna 5 22-05-2013 17:02:42
nuevo en el foro DaFlot JAVA 7 11-07-2006 15:58:40


La franja horaria es GMT +2. Ahora son las 13:57:50.


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
Copyright 1996-2007 Club Delphi