Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Tutorial - Manipulando Sprites com Delphi para iniciantes


Surfistinha£
 Compartilhar

Posts Recomendados

Manipulando sprites com delphi

 

Neste tutorial vou encinar como manipular sprites com o delphi... o conteúdo deste não é complicado pois projetei para aqueles que estão iniciando em programação de jogos em delphi.

Chega de papo furado e vamos a ação!

 

Como colocar uma Figura na tela e move-la ao apertar as direcionais sem que ela pisque

 

Este é um grande problema pra quem está começando, as imagens piscam quando você as move, mas o que poucos sabem é que a solução é rápida e prática.

Inicie um novo projeto

Coloque no seu formulário um componente paintBox da palheta system.

clique sobre o paintbox uma vez e mude sua propriedade Align para AlClient.

Esta vai ser nossa tela e é neste componente que está o segredo.

Agora aperte F12 e declare as variáveis x e y como integer e fig como tbitmap.

Código:

var

Form1: TForm1;

x,y: integer;// seram as variáveis que controlam a posição da figura

fig: Tbitmap; //será a variável que contem nossa figuraimplementation

 

Agora vá em eventes do form1 e escolha OnCreate.

Agora será necessário carregar a imagem eu escolhi por uma figura na pasta c: como o nome de fig que eu fiz no fireworks experimente fazer a sua no paint ou qualquer outro editor de imagens, no evento oncreate os códigos:

 

Código:

procedure TForm1.FormCreate(Sender: TObject);

begin

fig:= tbitmap.Create; //cria a imagem

fig.LoadFromFile('c:\fig.bmp'); //informa qual é a imagem

end;

 

 

Estamos quase lá agora precisamos por algo para verificar as direcionais, para isso acrescente um Timer(relógio) da palheta system no formulário, mude a propriedade interval dele pra 100, ou seja de 100 em 100 milésimos de segundo ele faz uma ação que agente vai mandar, no nosso caso vai ser verificar as direcionais se elas estiverem pressionadas ele anda se não ele fica quieto.

Dê dois cliques no relógio e coloque o seguinte código

 

Código:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if getkeystate(vk_down)<0 then //se a tecla para baixo for precionada

inc(y,2);//Adicione 2 a variável y

if getkeystate(vk_up)<0 then //se a tecla para cima for precionada

dec(y,2);

if getkeystate(vk_left)<0 then //tecla esqueda

dec(x,2);

if getkeystate(vk_right)<0 then //tecla direita

inc(x,2);

end;

 

 

Lembrando q X comanda a posição da figura na horizontal (EX:se você tira de X ela se move para a esquerda ), já a variável Y controla a posição da figura na vertical(EX: se você acrescenta a Y a figura vai se mover para baixo), Sendo assim o ponto 0,0 do seu form é o superior esquerdo.

Agora só falta mandar desenhar a figura no paintBox e é aqui que está todo o segredo, faça assim na última do timer acrescente o seguinte comando

Paintbox1.canvas.draw(x,y,fig);

Simples não? Então vai ficar assim:

Código:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if getkeystate(vk_down)<0 then //se a tecla para baixo for precionada

inc(y,2);//Adicione 2 a variável y

if getkeystate(vk_up)<0 then //se a tecla para cima for precionada

dec(y,2);

if getkeystate(vk_left)<0 then //tecla esqueda

dec(x,2);

if getkeystate(vk_right)<0 then //tecla direita

inc(x,2);

paintbox1.Canvas.Draw(x,y,fig);

end;

 

 

Como controlar sprites com frames

 

Vou usar a seguinte imagem como exemplo

É necessário se cadastrar para acessar o conteúdo.

 

Esta figura foi retirado do meu jogo “Guerra de Titãs”.

Primeiramente vamos analisa-la são 15 frames ou 15 explosões neste caso, a figura tem 62 de altura e 945 de largura, como são 15 frames agente divide 945 por 15 e obtemos 63 essa é a largura de cada frame; então cada frame tem 62 de altura e 63 de largura.

Vamos a programação:

Crie um novo projeto

Como agente não vai movimentar a figura ela vai ficar só em uma posição não há necessidade de por um paintBox.

 

Primeiramente definimos as variáveis

Código:

var

Form1: TForm1;

tela: array [0..14] of tbitmap;

fig: tbitmap;

pf : byte = 0;

implementation

 

 

Explicando o código:

tela: array [0..14] of tbitmap;

É a imagem final, usamos array 0 .. 14 por cauda dos frames

fig: tbitmap;

Carrega a imagem inteira sem separar o frames.

pf : byte = 0;

Vai servir como um controlador de frames.

 

Agora criamos o procedure explosão que vai servir para desenhar a figura da explosão no fomulario.

Código:

procedure explodir(frame: integer);

begin

tela[frame]:= tbitmap.create;// cria a imagem final

fig:= tbitmap.Create;//cria a figura inteira

fig.LoadFromFile('c:\explo.bmp');//carrega a figura explo que está no c:

tela[frame].Width:= 63;//diz a largura de cada frame

tela[frame].Height:= 62;//diz a altura de cada frame

//o bitblt copia uma parte da figura incial ou seja os frames, é aqui o segredo

bitblt(tela[frame].canvas.handle,0,0,63,62,

fig.canvas.handle,frame*63,0,SrcCopy);

form1.canvas.draw(0,0,tela[frame]);//desenha a figura na posição x 0 y 0

end;

 

 

Agora adicione um botão ao formulário, dê dois clique e adicione

Código:

if pf >=14 then pf := 0;// se chegar ao ultimo frame passa pro primeiro

inc(pf);// adiciona 1 ao pf q corresponde ao frame

explodir(PF);// mada desenhar a explosão no frame pf

 

 

Simples não?¿?

 

Baixem os arquivos deste tutorial em

É necessário se cadastrar para acessar o conteúdo.

 

Espero que tenham gostado eu sei que o conteúdo é básico, mas agente um dia também foi iniciante e por isso temos que ajuda-los.

Valeu galera.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas atrás...
Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.