Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2008
ivanloco ivanloco is offline
Miembro
 
Registrado: abr 2006
Posts: 30
Poder: 0
ivanloco Va por buen camino
Manejo de threads

Hola: queria hacer una consulta. Estoy implementando el juego del Tetris y tengo un problema. Tengo que hacer que una ficha descienda cada tantos segundos mientras la puedo mover de derecha a izquierda.
Para que la ficha descienda uso el siguiente codigo:

Código:
    crearFicha;

    while fichaActual.abajo(tablero) do
    begin
      dibujar;
      sleep(100);
    end;
Esto significa que construyo la ficha y mientras la pueda hacer descender la dibujo y la muevo cada un sleep de 100. Pero el problema es que dentro de este while no la puedo mover ni a izquierda ni a derecha.
Queria saber si Delphi soporta threads o si hay alguna otra alternativa para hacer lo que quiero.
Gracias.
Responder Con Cita
  #2  
Antiguo 21-07-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por ivanloco Ver Mensaje
Hola: queria hacer una consulta. Estoy implementando el juego del Tetris y tengo un problema. Tengo que hacer que una ficha descienda cada tantos segundos mientras la puedo mover de derecha a izquierda.
Para que la ficha descienda uso el siguiente codigo:

Código:
    crearFicha;

    while fichaActual.abajo(tablero) do
    begin
      dibujar;
      sleep(100);
    end;
Esto significa que construyo la ficha y mientras la pueda hacer descender la dibujo y la muevo cada un sleep de 100. Pero el problema es que dentro de este while no la puedo mover ni a izquierda ni a derecha.
Queria saber si Delphi soporta threads o si hay alguna otra alternativa para hacer lo que quiero.
Gracias.
Si claro soporta threads, crear el thread y en execute en un evento syncronizado mueves la ficha y luego duermes 100 ms, de esa maner ano frenas la tarea principal que es la que te permite mover la ficha
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #3  
Antiguo 21-07-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por ivanloco Ver Mensaje
Hola: queria hacer una consulta. Estoy implementando el juego del Tetris y tengo un problema. Tengo que hacer que una ficha descienda cada tantos segundos mientras la puedo mover de derecha a izquierda.
Para que la ficha descienda uso el siguiente codigo:

Código:
    crearFicha;

    while fichaActual.abajo(tablero) do
    begin
      dibujar;
      sleep(100);
    end;
Esto significa que construyo la ficha y mientras la pueda hacer descender la dibujo y la muevo cada un sleep de 100. Pero el problema es que dentro de este while no la puedo mover ni a izquierda ni a derecha.
Queria saber si Delphi soporta threads o si hay alguna otra alternativa para hacer lo que quiero.
Gracias.
Ahora que lo pienso es mejor con un timer, no mas
que el timer se ejecute cada 100 ms y ahi bajas la ficha, para que threads
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #4  
Antiguo 21-07-2008
ivanloco ivanloco is offline
Miembro
 
Registrado: abr 2006
Posts: 30
Poder: 0
ivanloco Va por buen camino
gracias donald por la respuesta, pero por favor podrias decirme como se usa un timer, o escribir un pseudocodigo de como tendria que ser mi codigo usando un timer. Con este timer no necesito mas el while?
Responder Con Cita
  #5  
Antiguo 21-07-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por ivanloco Ver Mensaje
gracias donald por la respuesta, pero por favor podrias decirme como se usa un timer, o escribir un pseudocodigo de como tendria que ser mi codigo usando un timer. Con este timer no necesito mas el while?
Agregas un timer a tu formulario principal y le seteas el intervalo (en este caso 100)

le das doble click, te genera un evento ontimer

en ese evento

Código Delphi [-]
if fichaActual.abajo(tablero) then
begin
  dibujar;
end;

Eso es todo. Bueno, te queda hacer todo el resto del programa.

Me olvidaba, eso contando que dibujar no demore mucho, porque si tarda mucho va a hacer que tu formulario se vea inestable.

Como el tetris baja mas rapido cuando avanza la dificultad te recomiendo empezar con otro valor distinto de 100 en el interval del timer e ir bajandolo cada vez que sube el nivel. Una idea no mas.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal

Última edición por donald shimoda fecha: 21-07-2008 a las 02:13:33.
Responder Con Cita
  #6  
Antiguo 21-07-2008
ivanloco ivanloco is offline
Miembro
 
Registrado: abr 2006
Posts: 30
Poder: 0
ivanloco Va por buen camino
Muchisimas gracias! La solucion del timer anduvo de maravillas.
Responder Con Cita
  #7  
Antiguo 21-07-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por ivanloco Ver Mensaje
Muchisimas gracias! La solucion del timer anduvo de maravillas.
Por nada , me alegro mucho.

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
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
uso de threads JULIPO API de Windows 2 25-07-2007 16:09:06
manejo de arbol de contenidos y manejo se sonido y video Buelos Internet 4 09-07-2007 14:52:45
threads multihilo walito API de Windows 5 13-06-2007 19:34:26
Threads zombies Archer Varios 1 25-09-2006 19:19:38
Manejo de threads en Delphi dmasson Varios 3 16-04-2004 15:22:58


La franja horaria es GMT +2. Ahora son las 15:47:39.


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