Ver Mensaje Individual
  #4  
Antiguo 15-11-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Caral
Lo hice para que mi hija aprendiera practicando las tablas de multiplicar en forma de juego.
Eso me parece una gran idea.

Cita:
Empezado por Caral
...Me encantaria que lo vierais y criticarais a un aprendiz, ademas de enviar las modificaciones, parciales o totales que querais.
Lo primero que me ha llamado la atención del programa es que hay bastante código que es repetitivo; Si le echas un vistazo a la función FindComponent, verás que te puede ayudar a reducir código en estas funciones; También creo que te puede ayudar a aclararte en general el llamar a determinados componentes/botones/combos/edits con un nombre más descriptivo que el que pone delphi por defecto.

Por ejemplo, este código:
Código Delphi [-]
  ComboBox5.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox7.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox9.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox11.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox13.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox15.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox17.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox19.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox21.Text:= FloatToStr(RandomRange(1, 10));
  ComboBox23.Text:= FloatToStr(RandomRange(1, 10));

Se ppuede sustituir por este:
Código Delphi [-]
var
  i, j:Integer;
  comp:TComponent;
...

  // recorrer los combos
  for i := 1 to 10 do begin
    j := (i * 2) + 3; // con i desde 1 hasta 10 te dará la secuencia: 5,7,9,11
                      // Que es justo la que coincide con los nombres de los combos
    comp := FindComponent('ComboBox' + IntToStr(j)); // combobox5, combobox7,...

    TComboBox(comp).Text:= FloatToStr(RandomRange(1, 10));
  end;

Básicamente es "montar" una cadena con el nombre del componente u sar FindComponent para encontrarlo.

o este:
Código Delphi [-]
  Edit3.Clear;
  Edit4.Clear;
  Edit5.Clear;
  Edit6.Clear;
  Edit7.Clear;
  Edit8.Clear;
  Edit9.Clear;
  Edit10.Clear;
  Edit11.Clear;
  Edit12.Clear;
  Edit13.Clear;
  Edit14.Clear;
  Edit15.Clear;
  Edit16.Clear;
  Edit17.Clear;
  Edit18.Clear;
  Edit19.Clear;
  Edit20.Clear;
  Edit21.Clear;
  Edit22.Clear;

Por este otro:
Código Delphi [-]
var
  i:Integer;
  comp:TComponent;
...
  // Recorrido por los edits
  for i := 3 to 22 do begin
    Str := 'Edit' + IntToStr(i);  // edit3, edit4, Edit5,...
    comp := FindComponent(Str);
    TEdit(comp).Clear;
  end;

Espero que te sea últil.


Cita:
Empezado por Caral
Para mejorarlo he pensado en la posibilidad de que pueda tener varios jugadores y que los nombres como su puntaje se guarden en un archivo texto o ini...
...Se que podria modificarse para mas usos didacticos...
¿Has pensado cómo? ¿Tienes algo en mente?
Me refiero a si ya tienes cosas pensadas y podemos ayudarte a implementarlas o no tienes nada pensado.
Ya que la idea ha sido tuya y la iniciativa también está bien que decidas por donde comenzar...
* Problemas para practicar la memoria.
* Gráficas X,Y
* Fracciones
* MCM y MCD
* ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita