Efeito subtração

Delphi

22/06/2003

Oi gente
Será que vocês poderiam me ajudar com uma dúvida?
Eu quero fazer um efeito mais ou menos assim.
Em um jogo de luta temos dois personagens lutando, ai ele deu por exemplo 30 de dano e o hp do oponente é 60...só que em vez de já aparecer trinta (60-30) de uma vez eu queria q foi diminuindo de um em um sabe rápidamente até chegar nos 30....que nem no desenho yu gi oh.
Qual é a maneira mais prática de se fazer isto?
Desde já obrigado.


Robotizar

Robotizar

Curtidas 0

Respostas

Mitsuo_takaki

Mitsuo_takaki

22/06/2003

Oi,
Não sei se vai servir, mas tenta colocar isso:

for i := 1 to (HpOponente - Dano) do
begin
HpOponente := HpOponente - 1;
Sleep(1000);
/*Para por 1.000 milissegundos, se quiser mais rápido é só alterar o
valor entre parêntesis.*/
end;

Este código irá subtrair 1 do Hp do oponente a cada 1 segundo até chegar no valor (HpOponente-Dano). Depois me diz se serviu ou não.

Mitsuo Takaki


GOSTEI 0
Mitsuo_takaki

Mitsuo_takaki

22/06/2003

Oi,
Desculpa, o código que enviei estava com um erro, não é possível alterar o valor do HpOponente enquanto o for está rodando. Troca o loop for por while:

i := 1
while i <= (HpOponente - Dano) do
begin
HpOponente := HpOponente - 1;
Sleep(1000);
/*Para por 1.000 milissegundos, se quiser mais rápido é só alterar o
valor entre parêntesis.*/
i := i + 1;
end;

Mitsuo Takaki


GOSTEI 0
Mitsuo_takaki

Mitsuo_takaki

22/06/2003

Oi,
Mais um erro. :oops:
Tem que salvar o valor do HpOponente em uma variável para poder comparar com o i. Desse jeito pode utilizar o for.

i := 1
Aux := HpOponente - Dano;
[b:6e8a74008b]for[/b:6e8a74008b] i := 1 [b:6e8a74008b]to[/b:6e8a74008b] Aux [b:6e8a74008b]do[/b:6e8a74008b]
[b:6e8a74008b]begin[/b:6e8a74008b]
HpOponente := HpOponente - 1;
Sleep(1000);
/*[i:6e8a74008b]Para por 1.000 milissegundos, se quiser mais rápido é só alterar o
valor entre parêntesis.[/i:6e8a74008b]*/
[b:6e8a74008b]end;[/b:6e8a74008b]

Acho que agora não tem nenhum erro. :wink:

Mitsuo Takaki


GOSTEI 0
POSTAR