Programando Jogos com Delphi (LÓGICA, ANIMAÇÃO, CONTROLE) Autor: Antônio Sérgio de Sousa Vieira Email: sergiosvieira@hotmail.com



Documentos relacionados
Programando Jogos em Delphi Animação, Lógica e Controle versão orientada à objetos

A4 Projeto Integrador e Lista de Jogos

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

SUMÁRIO TUTORIAL DO HQ. 2 DICAS PEDAGÓGICAS:. 2 DOWNLOAD DA INSTALAÇÃO. 2 PASSO 1 FORMULÁRIO PARA DOWNLOAD. 2 PASSO 2 ESCOLHENDO A VERSÃO.

Como incluir artigos:

Microsoft Office PowerPoint 2007

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Programação de Computadores

Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ. Prefeitura Municipal de São Luís Manual de uso dos serviços da SEMFAZ

Word 1 - Introdução Principais recursos do word A janela de documento Tela principal

Apostila para o 7º ano Profª Yandra

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

Inserindo Dados no Banco de Dados Paradox.

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Sumário. Computação Gráfica Illustrator

Impressão de Código de Barras Uma abordagem prática ZEBRA ZPL2

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Modo Estrutura é o ambiente de definição e estruturação dos campos, tipos de dados, descrição e propriedades do campo.

Universidade Federal do Mato Grosso - STI-CAE. Índice

PROGRAMAÇÃO II 3. PILHA DINÂMICA

BARRA DE PROGRESSO EM VBA

Tutorial de Computação Robô Bípede Programa de Controle em Delphi v

Tutorial MSN Messenger

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

Resumo da Matéria de Linguagem de Programação. Linguagem C

Índice: Nitgen do Brasil

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

Caso já seja usuário do SCAW siga as instruções a partir da página X.

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

App - Paint Pot (Lata de tinta)

MANUAL DO ALUNO PARA NAVEGAR NO AMBIENTE VIRTUAL DE APRENDIZAGEM - AVA

Operador de Computador. Informática Básica

GUIA DO PROFESSOR ATIVIDADES MATEMÁTICAS COM O SCRATCH

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Como já foi dito anteriormente o Excel possui recursos que permitem alterar a aparência de nossas planilhas.

PROJETO INFORMÁTICA NA ESCOLA

PARA A CONSTRUÇÃO DOS GRÁFICOS

Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE. Microsoft Access.

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

MANUAL DO INSTAR-MAIL 1.0. Pagina de login e senha do Instar-Mail

Apresentação. Nossa sugestão é que você experimente e não tenha medo de clicar!!!

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Validando dados de páginas WEB

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

Voltado para novos usuários, este capítulo fornece uma instrução para edição de Leiaute do SILAS e suas funções.

Bem vindo ao ajuda do software QUICKFISH para criação de sites.

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA TREINAMENTO EM INFORMÁTICA MÓDULO V

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

Dicas para usar melhor o Word 2007

Podemos agora ver no IDE do Morfik os objetos que já incorporamos ao nosso projeto :

SAMUEL SEAP INFORMÁTICA. Rua Lúcio José Filho, 27 Parque Anchieta Tel:

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Janelas e seus elementos

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

Manual Sistema de Autorização Online GW

Lição 1 - Criação de campos calculados em consultas

Aula Au 3 la 9 Windows-Internet

PROGRAMAÇÃO II 4. ÁRVORE

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

UTILIZAÇÃO DE RECURSOS AVANÇADOS DO EXCEL TABELA

Tutorial SGCD. 1. Efetuando Login no Sistema. 2. Criando uma nova página. 3. Editando uma página já existente

Geração Impressão - Consultas

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Celebre este natal e ano novo junto aos seus amigos e familiares distantes.

GRÁFICOS Exemplos de jogos 2D (com simulação do 3D)

Núcleo de Tecnologias Interativas de Aprendizagem.

Como fazer busca de imagem no Google?

APOSTILA WORD BÁSICO

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania

Como obter Ajuda e Suporte

ASSOCIAÇÃO CRISTÃ DE MOÇOS DO RIO GRANDE DO SUL DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO

Volte ao Menu Principal e escolha a opção Acesso Manual

Manual de configuração do sistema

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

Clique no botão novo

Planilhas Eletrônicas

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

HELP Fornecedores ATENÇÃO!!! IMPORTANTE: o acesso ao SIGA só poderá ser feito através do navegador Internet Explorer, versões 6 a 9.

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

1) Como acessar a aplicação

Criando Quiz com BrOffice.impress

CRIAÇÃO DE RELATÓRIOS EM DELPHI

O processo termina com o surgimento da última flecha quando aparece uma bolinha azul. Outras bolinhas aparecem aleatoriamente POWER POINT NEW WAY

ÍNDICE... 2 POWER POINT Abas... 7 Salvando Arquivos... 8 Abrindo um arquivo LAYOUT E DESIGN... 13

Noções Básicas de Excel página 1 de 19

MANUAL HELP-DESK DATACOM AUTOMAÇÕES

Desvendando Jogos 2D. Por Marcos Romero Setembro / Cyborg Arena - RHGames

1. Introdução ao uso da calculadora

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Transcrição:

Programando Jogos com Delphi (LÓGICA, ANIMAÇÃO, CONTROLE) Autor: Antônio Sérgio de Sousa Vieira Email: sergiosvieira@hotmail.com

Introdução Este texto foi escrito para pessoas que se interessam pela arte da programação de jogos, uma das mais completas, pois utiliza a parte visual, sonora e interativa. Esse texto não tem como objeto de estudo a criação do enredo do jogo e sim a parte lógica da programação, utilizado-se das facilidades do Delphi. É de suma importância o leitor ter um bom nível técnico em programação e algum conhecimento de ciências exatas, pois serão vistos assuntos específicos que utilizam lógica, matemática e física. No desenrolar da leitura serão abordadas questões relacionadas a manipulação de resoluções do vídeo, utilização de músicas e performance dos controles do jogo. Também será visto a parte lógica do comportamento do personagem principal e seus inimigos. No primeiro exemplo, será criado um jogo de nave com personagem principal, inimigos, tiro, colisão etc. No segundo exemplo será explicado o desenvolvimento de um jogo estilo Mario Brothers, baseado em Blocos(tile based game). 1. Entendendo o Posicionamento do Personagem em Relação a Tela. O cenário está divido da mesma forma de um plano cartesiano invertido. Por ele podemos localizar a posição do personagem. Veja abaixo: 0 0 Posição X tela Posição Y

Para descobrir em qual posição está o personagem basta verificar as suas cordenadas X e Y. 0 0 x Left = Esquerda y Top = Topo Estas cordenadas também são responsáveis pela movimentação. Para movimentar basta incrementar ou decrementar do valor de x para movimentar na horizontal ou do valor y na vertical. Exemplo: Const Velocidade = 1; PosicaoX, PosicaoY: Integer; Begin PosicaoX:=0; PosicaoY:=0; Inc(PosicaoX,Velocidade);// Movimento para a direita Dec(PosicaoX,Velocidade);// Movimento para a esquerda Inc(PosicaoY,Velocidade);// Movimento para baixo Dec(PosicaoY,Velocidade);// Movimento para cima End; 2. Entendendo o conceito de OffScreen ou BackBuffer. É uma técnica utilizada para eliminiar o flick (tremor) da animação, deixando o jogo com uma aparência melhor. Consiste em criar uma tela virtual na memória e depois desenhar todo o cenário (fundo, personagens etc) nela. Ao final, envia o cenário completo para o vídeo. Para criar o OffScreen basta definir uma variável global do tipo TBITMAP, depois de instânciá-la (coloque o código no ONCREATE do formulário principal) defina valores para sua largura e altura, nunca esquecendo de destruí-la ao final do programa.

Exemplo: (...) var OFFScreen: TBitmap; (...) procedure TForm1.FormCreate(Sender: TObject); OFFScreen:= TBitmap.create; OFFScreen.Width:= 320; OFFScreen.Height:= 240; 3. Estrutura Principal do Jogo. O código principal que será utilizado deverá estar dentro de um laço, para que seja possível controlar as animações e movimentação dos personagens. Veja abaixo um exemplo do código acima descrito: Exemplo: procedure TForm1.Button1oneclick(sender:TObject); while not Application.Terminated; // Em quanto jogo não termina faça {CODIGO PRINCIPAL DO JOGO} Application.ProcessMessages; // utilizado para liberar processamento atual Descrição do Código: o código será iniciado ao clicar em um botão. Um laço funcionará até que o aplicativo seja fechado. Dentro do laço deve-se colocar os comandos de manipulação do jogo e liberar o processamento através do comando Application.ProcessMessages; 4. Definindo Características do Jogo. Para facilitar a programação, deve ser criado alguns tipos que auxiliarão no desenvolvimento. É criado um tipo para o PERSONAGEM e outro para os INIMIGOS. Para os personagens atribui-se: Posição X (controla o movimento na horizontal), Posição Y (controla o movimento na vertical),

Vivo (tipo lógico, controla a existência dos personagens) e Sentido (cima,baixo,esquerda,direita e parado). Outros tipos podem ser criados conforme as características do jogo. Exemplo: Type TSentido = (cima,baixo,esquerda,direita,parado); Type TNave = Record PosX: Integer; //Posição horizontal PosY: Integer; //Posição vertical Sent: TSentido; //Sentido do movimento Vivo: Boolean; //Controle de existência End; 5. Movimentando o Personagem. A movimentação deverá ser dividida em duas partes: a primeira busca capturar as teclas pressionadas e informar ao personagem em que sentido se movimentar, na segunda parte lêr o sentido armazenada na variável SENT e INCREMENTA-SE ou DECREMENTA-SE um Valor(Velocidade) da Posição X (horizontal) ou Y (vertical). Exemplo: (...) Var Nave: TNave; //Definindo uma variável global do tipo TNAVE (...) procedure Ler_Teclado; if GetKeyState(vk_left)<0 then //se tecla seta esquerda pressionada Nave.Sent:= Esquerda // Movimento para esquerda else if GetKeyState(vk_right)<0 then // se seta direita pressionada Nave.Sent:= Direita // Movimenta para direita else Nave.Dir:= Parado; // caso contrário, personagem parado If GetKeyState(vk_up)<0 then //Idem (cima)

Nave.Dir:= Cima //Idem If GetKeyState(vk_down)<0 then //Idem (baixo) Nave.Dir:= Baixo; //Idem procedure Movimenta_Nave(Velocidade: Integer); with Nave do if Sent = Esquerda then // Se SENT é igual esquerda então Dec(PosX,Velocidade)// POSX igual POSX - VELOCIDADE If Sent = Direita then // Se SENT é igual direita então Inc(PosX,Velocidade)// POSX igual POSX + VELOCIDADE if Sent = Cima then // Se SENT é igual cima então Dec(PosY,Velocidade)// POSY igual POSY - VELOCIDADE If Sent = Baixo then // Se SENT é igual baixo então Inc(PosY,Velocidade)// POSY igual POSY + VELOCIDADE Observação: Não esqueça de colocar os dois procedimentos (ler_teclado, movimenta_nave) dentro do laço para que a movimentação ocorra corretamente. 6. Criando seu primeiro jogo no Delphi. Após termos visto os conceitos iniciais podemos agora desenvolver um jogo de Nave. Note que ainda não existirá inimigos (será visto no próximo capítulo) e nem sprites. Nosso jogo será apenas um quadrado movimentando pela tela. Sigua os passos descritos abaixo para criar seu primeiro jogo.

Crie tipo para controlar o sentido da movimentação. Tsentido = (cima,baixo,esquerda,direita,parado); Crie um tipo para controlar a Nave, veja abaixo: TNave = Record PosX: Integer; // Controla movimento horizontal PosY: Integer; // Controle movimento vertical Sentido: Tsentido; Vivo: Boolean; End; Defina algumas contantes: Const LARGURA = 320; // largura da tela ALTURA = 240; // altura da tela TAMANHO = 5; // Tamanho da Nave Defina uma variável global para o BackBuffer e uma do tipo TNAVE: Var BackBuffer: Tbitmap; Nave: Tnave; No ONCREATE do formulário Crie o BackBuffer: BackBuffer:= Tbitmap.Create; BackBuffer.Width:= LARGURA; BackBuffer.Height:= ALTURA; No ONDESTROY libere o BackBuffer: BackBuffer.Destroy; Depois de definirmos todos os procedimentos iniciais vamos começar a programação da lógica do jogo. Primeiramente no ONDBLCLICK do formulário digite o laço principal do jogo: while not Application.Terminated do Application.ProcessMessages;

Defina agora alguns procedimentos (OBS: Coloque os procedimentos antes do BEGIN do procedimento ONDBLCLICK. Veja abaixo). procedure TForm1.FormDblClick(Sender: TObject); { AQUI } procedimento para ler o teclado; procedure Ler_Teclado; if GetKeyState(vk_left)<0 then //se tecla seta esquerda pressionada Nave.Sent:= Esquerda // Movimento para esquerda else if GetKeyState(vk_right)<0 then // se seta direita pressionada Nave.Sent:= Direita // Movimenta para direita else Nave.Sent:= Parado; // caso contrário, personagem parado If GetKeyState(vk_up)<0 then //Idem (cima) Nave.Sent:= Cima //Idem If GetKeyState(vk_down)<0 then //Idem (baixo) Nave.Sent:= Baixo; //Idem procedimento para movimentação: procedure Movimenta_Nave(Velocidade: Integer); with Nave do if Sent = Esquerda then // Se SENT é igual esquerda então Dec(PosX,Velocidade) // POSX igual POSX - VELOCIDADE If Sent = Direita then // Se SENT é igual direita então Inc(PosX,Velocidade) // POSX igual POSX + VELOCIDADE

if Sent = Cima then // Se SENT é igual cima então Dec(PosY,Velocidade) // POSY igual POSY - VELOCIDADE If Sent = Baixo then // Se SENT é igual baixo então Inc(PosY,Velocidade) // POSY igual POSY + VELOCIDADE procedimento para desenhar a nave: procedure Desenha_Nave(x,y: Integer); var i,ii: Integer; // variáveis para controlar o desenho do quadrado BackBuffer.Canvas.FillRect(Rect(0,0,LARGURA,ALTURA)); // Limpando o BackBuffer for i:= 0 to TAMANHO do //desenhando os pixels da esquerda para a direita for ii:= 0 to TAMANHO do //desenhando os pixels de cima para baixo BackBuffer.Canvas.Pixels[i+x,ii+y]:= clblue; // a posição horizontal do pixel será o valor de i + x // a posição vertical do pixel será o valor de ii + y Coloque os procedimento dentro do laço na ordem abaixo: (...) Ler_Teclado; Movimenta_Nave(1); Desenha_Nave(Nave.PosX,Nave.PosY); {...) Envie agora a imagem gravada no BackBuffer para a Tela (Dentro do Laço): Canvas.Draw(0,0,BackBuffer); Finalmente inicialize as variáveis POSX, POSY desta forma:

(...) Initialization Nave.PosX:= 0; Nave.PosY:= 0; End. TCHARAMMMM!!! Seu primeiro jogo no Delphi. (quase)...