Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-11-2010
Avatar de Manuzinho
Manuzinho Manuzinho is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 5
Poder: 0
Manuzinho Va por buen camino
Problema con la variable del TTimer!

Hola, muy buenas! No quiero meteros un discurso, iré al grano... Estoy haciendo, para la asignatura de informática en la carrera de Ingeniería Industrial Electrónica en la UPC (Barcelona), un proyecto con lazarus que consiste en crear un tetris.

El tetris está todo montado, se puede jugar, todo funciona perfectamente, aumenta el nivel y todo demás, sólo hay un pequeño problema. Veréis, lo divertido es que conforme avance de nivel, el intervalo del TTimer que le he puesto disminuya. El problema de hacerlo con una resta o una división es que termina dando 0, es decir, que al final, cuando llegas a nosé cuantos puntos (a un cierto nivel 6 o 7 o 8) la pieza aparece pero ya no baja, se queda quieta. Digamos que la puedes mover por el tablero, pero sería como un truco secreto, sería el juego más fácil del mundo porque la pieza no cae, no sé si me explico...

En fin, lo que quería comentaros es que yo había pensado en hacer que el intervalo del TTimer fuera disminuyendo en una función exponencial. He estado buscando por google y tal y he visto que hay una función (añadiendo el uses Math) que es exp( ). Aqui viene el problema, el lazarus me da error diciéndome que la variable TTimer1.Interval es LongWord, y por lo visto lo que sale de la función exponencial es Extended...

Hay alguna forma de cambiar la variable, alguna de ellas, de forma que el TTimer. Interval pueda ser Extended, o al contrario, con la exponencial?? Necesitaría vuestra ayuda en este tema!!

Os dejo el código aqui (donde n es el nivel y la inicial es n:=1, y nivelletiqueta es una Label que le he puesto para que muestre el nivel en el que estás) :

Código Delphi [-]
procedure TForm1.nivell;
begin
if (puntuacion mod 1000 = 0 ) then
    n:= n+1;
    Timer1.Interval:=(exp(1/n));  
    nivelletiqueta.Caption:=IntToStr(n);
end;

Muchas gracias, sé que no es mucho, pero si esto termina funcionando os prometo subirlo para que podais disfrutar de este tetris voyeur!
Responder Con Cita
  #2  
Antiguo 22-11-2010
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.307
Poder: 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
Te está avisando de que intentas almacenar algo de tipo no-entero, en una variable entera.
Te avisa y no hace la conversión automática porque en esa conversión se perderá precisión.

Puedes utilizar funciones como ROUND (redondear) o TRUNC (truncar) para forzar la conversión:

Código Delphi [-]
Timer1.Interval:= TRUNC((exp(1/n)));
__________________
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
  #3  
Antiguo 22-11-2010
Avatar de Manuzinho
Manuzinho Manuzinho is offline
Registrado
NULL
 
Registrado: nov 2010
Posts: 5
Poder: 0
Manuzinho Va por buen camino
Muchisimas gracias!!!
Responder Con Cita
  #4  
Antiguo 22-11-2010
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.307
Poder: 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
De nada.

Sinceramente, me ha sorprendico gratamente que para ser un "novato" por estos lares (me refiero a los foros no al Delphi), has explicado el problema perfectamente y con mucho detalle. Algunos con 100 mensajes deberán aprender de tí (explicación, título, TAG's, ortografía,...).

Felicidades por eso y bienvenido a los foros.
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 22-11-2010 a las 22:56:35.
Responder Con Cita
Respuesta



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
Problema con variable tipo TIBSQL en Delphi 2009 azkot Varios 4 26-11-2008 17:03:03
Problema con TStringList variable MaMu Varios 3 18-05-2007 15:30:35
Problema con variable en FastReport JULIOCTORRESG Impresión 5 03-10-2006 14:22:44
Problema con valor en variable global judit25 Conexión con bases de datos 2 06-07-2006 01:16:59
Problemas con TTimer SoulSoldier Varios 1 28-04-2006 23:51:25


La franja horaria es GMT +2. Ahora son las 01:41:26.


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