Programação Gráfica Parte 3 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano

Documentos relacionados
Programação Gráfica Parte 3 Versão em Java 2006 PUCPR Tutoria de Jogos 1º Ano

Programação Gráfica Parte 2 Versão em Java 2006 PUCPR Tutoria de Jogos 1º Ano

Lógica de Jogos. Conteúdo

Programação Gráfica Parte 2 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano

Edição Visual Imagens, Tilemaps e Sprites 2006 PUCPR Tutoria de Jogos 1º Ano

Programação Gráfica Parte 1 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano

Trabalho GA - Editor de Cenário Isométrico

COLÉGIO OBJETIVO JÚNIOR

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2002/ Valores

Introdução à Engenharia ENG1000

XNA. Introdução ao XNA

SCC0504 Programação Orientada a Objetos Prof. Luiz Eduardo Virgilio da Silva / Estevam Arantes (Monitor) Projeto

Laboratório de Programação com Games. Conteúdo: Professor: - Conceitos de programação com Python. Instituto de Computação - UFF

Ambiente de programação

Primeiro Trabalho Prático Turma A. Descrição do Trabalho. Considere os seguintes dados a respeito de um livro:

ECT1203 Linguagem de Programação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Trabalho Prático. Primeira Parte do Trabalho (Parte I): peso 40%

Processamento Digital de Imagens

Linguagem C Princípios Básicos (parte 1)

Introdução à Programação C

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Fazer desaparecer da tela do jogo a espaçonave inimiga quando um tiro acertá-la.

Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão /11/2013

APÊNDICE D O Projeto do javaplay

PROGRAMAÇÃO PARA INTERNET RICA INTRODUÇÃO AO ACTIONSCRIPT 3. Prof. Dr. Daniel Caetano

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Programação científica C++

Linguagem de Programação III

6 Aplicações Detalhes da Implementação

Linguagem e Ambiente Scratch. Introdução à Laboratório Prof.Alfredo Parteli Gomes

Computação Gráfica - 04

Manual do Visorama. Sergio Estevão and Luiz Velho. Technical Report TR Relatório Técnico. August Agosto

Programação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012

Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa:

Segundo Trabalho Prático Turma A

Usando Display Gráfico com C18 e C30

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Aula 15: Introdução a Funções

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Laboratório de Programação II

Manual de Utilização da ferramenta IPTraf Laboratório de Redes de Alta Velocidade COPPE / UFRJ

CONTRUCT 2. Tainá Medeiros

Professor: Laboratório de Programação com Games. Anselmo Montenegro Conteúdo: - Introdução. Instituto de Computação - UFF

INSTRUÇÕES DE REPETIÇÃO

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Introdução à Engenharia ENG1000

Algoritmos e Programação

Gerando um programa executável a partir de um módulo Python

Aula 04 Tipos de arquivos e Fireworks

Universidade Federal do ABC BCM Processamento da Informação Prática Projeto Campo Minado Primeiro Quadrimestre de 2018

Guia do CFTV Sistemas de CFTV, IP, Seguranà a Eletrà nica, Conectividade, Informaà ões, Fórum e Tecnologia.

BD II (SI 587) Programação SQL. Prof. Josenildo Silva.

Lista de Linguagens de Programação 14

Computação eletrônica:

Trabalho 1 ALGORITMOS E ESTRUTURAS DE DADOS I (SCC-202)

PROGRAMAÇÃO PARA INTERNET RICA INTRODUÇÃO AO ACTIONSCRIPT 3. Prof. Dr. Daniel Caetano

Corel Draw X7. Modulo 1 Aula 1 Conhecendo o Corel Draw Desenhando com formas básicas

Campeonato de Gamão. 1. Regras. 2. Servidor

Aula 3 Constantes e funções de E/S

INF Fundamentos de Computação Gráfica /1

SCC0504 Programação Orientada a Objetos Projeto

EXPRESSÕES BOOLEANAS. Ex: boolean b = false; // declara uma variável do tipo boolean e atribui false

Introdução à Programação de Jogos. Modo Demo. Ferramentas. Modo Demo. Modo Demo. Modo Demo. Modo Demo. O que é?

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Fazer explodir a espaçonave inimiga quando um tiro acertá-la.

Problema do Caminho Hamiltoniano

Computação II (MAB 225)

AULA 11 DESENVOLVIMENTO DE GAMES UTILIZANDO O HTML5

Puca Huachi Vaz Penna / José Américo T. Messias

Laboratório 01 NetBeans

MAC 115 Introdução à Ciência da Computação ROTHELO

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETRÔNICA (DAELN) 2 a Prova

Primeira Parte do Trabalho Prático (Parte I) Valor: 30% Descrição do arquivo de dados

DESCRIÇÃO DE BIBLIOTECA DE TECLADOS TÍTULO IMAGEM DESCRIÇÃO

Linguagens de Programação

Tecnologias de Jogos de Vídeo

Introdução a Programação de Jogos

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Repetição Controlada por Contador. Nono Exemplo utilizando Classes em C++

Processamento Digital de Imagens

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares

Exercício IV (2012/I)

Primeiro Projeto de PG: Lista de Temas Selecionados

AUTOLAC VERSÃO FINALIZAÇÃO: 27 JUL PUBLICAÇÃO: 31 JUL. 2017

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 1o. Semestre de 2017 Prof.

Computação II Orientação a Objetos

SSC Linguagem de Programação e Aplicações

Computação II Orientação a Objetos

Unidade 2: Estruturas de Controle Parte 1 - Scanner e Estrutura IF Prof. Daniel Caetano

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Computação II Orientação a Objetos

Introdução à Programação Aula 09. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Pacotes Organizando suas classes e bibliotecas

Transcrição:

Programação Gráfica Parte 3 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano Paulo V. W. Radtke pvwradtke@gmail.com http://www.ppgia.pucpr.br/~radtke/jogos/

AVISO IMPORTANTE!! Esta versão é dedicada exclusivamente para os cursos de Ciência da Computação e Engenharia da Computação. Para a versão de Sistemas de Informação, utilizando Java, pegue o arquivo correspondente e participe da aula no horário adequado. PUCPR - CCET 2

Entrega da 2ª Parcial Datas importantes: 12 a 17 de Junho. Relatório impresso contendo: Código fonte do protótipo da interface. Impressão no relatório dos recursos gráficos da fase/jogo (tilemaps, sprites, cenários de fundos, protótipo, etc). Discussão do uso dos recursos com a lógica do jogo no terceiro bimestre. Defesa em laboratório do protótipo e entrega do relatório com a equipe completa. PUCPR - CCET 3

Entrega da 2ª Parcial Por recursos gráficos,entende-se que neste bimestre já teremos: 1. TODOS os sprites necessários para o demo. 2. TODAS as telas de fundo/tilemaps. 3. TODAS as fontes. Logo, espera-se que o relatório inclua TODOS estes elementos. PUCPR - CCET 4

Conteúdo Colisão de Sprites Desenhando um Tilemap Movimentando um Tilemap PUCPR - CCET 5

Colisão de Sprites A colisão de sprites ocorre quando dois sprites sobrepõe a sua área desenhada. Por área desenhada, entende-se os pontos opacos do sprite. A detecção trabalha em conjunto com a lógica do jogo, não devendo ser tratada como algo automático. PUCPR - CCET 6

Colisão de Sprites Logo, o seu jogo irá decidir se ele testa a colisão e de quais sprites se testará a colisão. A Chien2DLite possui um método específico para testar se dois sprites colidiram. Esté método é o colidiuazulejos. PUCPR - CCET 7

Colisão de Sprites O método testa a colisão ponto-a-ponto dos sprites. Esta detecção é acelerada por uma máscara de bits. Além disso, a colisão é testada apenas com sprites 32x32. Outros tamanhos não são suportados. PUCPR - CCET 8

Colisão de Sprites bool colidiuazulejos(int identificador1, int indice1, int x1, int y1, int identificador2, int indice2, int x2, int y2): identificador: identificador dos sprites no sistema de vídeo. indice: qual bloco dentro do azulejo será testado. x e y: coordenadas dos sprites na tela. PUCPR - CCET 9

Colisão de Sprites Uso típico: if(video->colidiuazulejos(sprite1, 0, x1, y1, sprite2, 3, 200,300)) { // Código para tratar a colisão... PUCPR - CCET 10

Colisão de Sprites O mais importante é lembrar: Este método testa a colisão de elementos 32x32. Logo, um jogo real testaria se a arma do personagem tocou um inimigo, usando este método. Nem todos os jogos precisam testar a colisão de sprites. PUCPR - CCET 11

Exercício 01 NO exercício anterior, tínhamos desenhado na tela um sprite fixo, além de um sprite controlado pelo teclado. Teste a colisão nestes dois sprites. Caso ocorra a colisão na tela, desenhe um texto indicando isto. PUCPR - CCET 12

Desenhando um Tilemap Para desenharmos um tilemap utilizamos a biblioteca Chien2DMappy. Esta biblioteca utiliza a Chien2DLite para desenhar um mapa gerado pelo Mappy na tela. Por tela, entende-se aqui a tela TODA. PUCPR - CCET 13

Desenhando um Tilemap Para isto, precisamos de 2 coisas: 1. Arquivo com os blocos da imagem. 2. Arquivo com o mapa gerado pelo Mappy, em um dos formatos: Formato FMP. Formato FMA. PUCPR - CCET 14

Desenhando um Tilemap O formato FMP é mais completo e inclui os gráficos. Porém, por falta de flexibilidade, este formato é muito recomendado para a Chien2DMappy. O formato FMA possui apenas os dados do tilemap, sem a imagem, gerando um arquivo menor. PUCPR - CCET 15

Desenhando um Tilemap Para gerar o arquivo FMA, basta abrir o mapa e escolher a opção MapTools, Useful functions, Save FMP without graphics (FMA). A vantagem de separar o gráfico do tilemap no FMA é de reutilizar o mesmo tileset em diversos tilemaps. PUCPR - CCET 16

Desenhando um Tilemap PUCPR - CCET 17

Desenhando um Tilemap Dica: durante o desenvolvimento, utilize o arquivo FMP, já que será comum você fazer mudanças frequentes no mapa. Apenas para a ditribuição você gera o FMA a partir do FMP. Nota: você DEVE guardar o FMP original para referência. PUCPR - CCET 18

Desenhando um Tilemap Para este exemplo, utilizaremos o arquivo c- aula07-plataforma.zip. O arquivo contém o tilemap (plataforma.fmp e plataforma.fma) e o tileset (plataforma.png). Extraia o arquivo no diretório do projeto. Sobrescreva os arquivos chien2dmappy.h e chien2dmappy.cpp, estas versões no arquivo são novas e possuem duas correções importantes. PUCPR - CCET 19

Desenhando um Tilemap O primeiro passo para se carregar um tilemap é carregar o seu tileset. Na Chien2DLite, o tileset é caregado como sprites (um conjunto de azulejos). unsigned int tileset = video->carregaazulejo( "plataforma.png", "Tileset do cenario", Chien2DLite::azulejo32); PUCPR - CCET 20

Desenhando um Tilemap Em seguida, criamos um objeto da classe Chien2DMappy: Chien2DMappy *mapa = new Chien2DMappy(); Eventualmente, quando este objeto não for mais necessário, devemos eliminá-lo explicitamente: delete mapa; PUCPR - CCET 21

Desenhando um Tilemap Para carregar o mapa, utilizamos o método: bool carregamapa(string arquivo); O método recebe o nome do arquivo FMP/FMA a carregar. Ele retorna true ou false se conseguiu ou não carregar o mapa. PUCPR - CCET 22

Desenhando um Tilemap Exemplo de uso do carregamapa: mapa->carregamapa("plataforma.fma"); PUCPR - CCET 23

Desenhando um Tilemap Para desenhar o tilemap, utilizamos a função: void desenhacamadamapa(unsigned int idazulejo, int camada, int x, int y); Esta função desenha uma camada do mapa na tela, utilizando um tileset indicado por idazulejo nas coordenadas x e y (internas do mapa). PUCPR - CCET 24

Desenhando um Tilemap Exemplo de uso típico: mapa->desenhacamadamapa(tileset, 0, 0, 0); PUCPR - CCET 25

Desenhando um Tilemap Se um mapa possuir várias camadas, devemos desenhá-las uma a uma para gerar a imagem final. A Chien2DMappy não faz isso automaticamente para permitir efeitos especiais dependentes do jogo: Scroll em parallax (camadas). Cenários em planos superiores à ação (como em RPGs). Uso de camadas do mapa para controlar os eventos do jogo (triggers). PUCPR - CCET 26

Exercício 02 Modifique o exercício anterior para carregar o mapa plataforma.fma e o seu tileset, plataforma.png. Ao invés de desenhar a tela de fundo, desenhe o tilemap na coordenada 0,0. PUCPR - CCET 27

Movimentando um Tilemap O método desenhacamada pode desenhar outras coordenadas dentro do mapa. Porém, este somente desenha coordenadas válidas, isto é, coordenadas em que o mapa não cubra a tela toda não são desenhadas. PUCPR - CCET 28

Movimentando um Tilemap Para determinar as dimensões de um mapa para animar a movimentação do cenário, utilizamos o método: bool dimensoesmapa(int *largura, int *altura, int *dimensaoazulejo, int *camadas); PUCPR - CCET 29

Movimentando um Tilemap O método retorna true ou false se ele pôde determinar as dimensões do mapa (isto é, se o mapa foi ou não carregado). AS dimensões do mapa são retornadas por ponteiros. Os valores da altura e largura indicam quantos blocos o mapa tem nessa dimensão. dimensaoazulejo indica, em pixels, o tamanho do bloco que desenha o cenário. camadas indica o número de camadas geradas pelo Mappy. PUCPR - CCET 30

Movimentando um Tilemap Uso típico: // Determina as dimensões do mapa int largura, altura; int tambloco, camadas; mapa->dimensoesmapa(&largura, &altura, &tambloco, &camadas); PUCPR - CCET 31

Movimentando um Tilemap O tamanho do mapa em pixels é determinado pela largura dele em blocos e o tamanho do bloco de cenário. Sabendo estes valores, podemos utilizálo para movimentar a tela dentro do mapa. PUCPR - CCET 32

Desafio Modifique o exercício anterior para determinar as dimensões do mapa. Utilize estes valores para movimentar o mapa na horizontal automaticamente. PUCPR - CCET 33