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



Documentos relacionados
Programação Gráfica Parte 1 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

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

Professor Paulo Lorini Najar

TUTORIAL PMS CARD. Acesse o site:

Sistema topograph 98. Tutorial Módulo Fundiário

Estatística no EXCEL

Aula 01 Conceitos Iniciais sobre Excel 2010

,QWURGXomRDR(GLWRUGH $SUHVHQWDo}HV3RZHU3RLQW

16 - SCARTA. 1. Abrir o SCARTA clicando no ícone que se encontra na área de trabalho (Fig.1). Fig.1- Ícone do SCARTA

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Informática básica Telecentro/Infocentro Acessa-SP

Portal do Projeto Tempo de Ser

PROGRAMAÇÃO EM C# COM VISUAL STUDIO.NET

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Prof. MSc. João Ricardo Bittencourt

Introdução aos Sistemas Informáticos

INTRODUÇÃO À LINGUAGEM C++

Manual do Usuário ipedidos MILI S.A. - D.T.I.

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

TRABALHANDO COM O ORÇAMENTO NO GERENCIAL

OpenOffice Calc Aula 4

Usando o NVU Parte 2: Inserindo imagens

Você vai começar criando o fundo Após criar o fundo, você aplicará o resto dos gráficos e texto da publicidade.

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Treinamento - Union Web

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

Composição de Layout no Spring

Compositor de Impressão do QGIS

SOLID EDGE ST3 TUTORIAL 2 CRIANDO UM DESENHO NO AMBIENTE DRAFT

Olá, Professores e Professoras. É um prazer estar aqui com vocês novamente. Sejam bem-vindos!

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Unidade III 1. APRESENTANDO PLANILHAS ELETRÔNICAS. 1.1) Conceito de Planilha Eletrônica. 1.2) Inicializando o Excel e o Calc

Unidade 3: Personalizando o Excel *

UNIPAMPA Universidade Federal do Pampa. Núcleo de Tecnologia da Informação (NTI)

MANUAL DO PROFESSOR. Suporte: SISTEMA DE GESTÃO EDUCACIONAL VIRTUALCLASS. Skype: suportetisoebras

Manual do KCM Tablet. Jörg Ehrichs Tradução: Marcus Gama Tradução: André Marcelo Alvarenga

Para criar uma nova apresentação: 1.Escolha a opção Apresentação em Branco Clique no botão Ok

Manual do KGeography. Anne-Marie Mahfouf Kushal Das Tradução: Luiz Fernando Ranghetti

MANUAL DA SECRETARIA

MANUAL DO OFICIAL DE JUSTIÇA

AULA 2 Planos, Vistas e Temas

Etec. Cel. Fernando Febeliano da Costa

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA. 2.1 Definição de Planilha Eletrônica

Treinamento em BrOffice.org Writer

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Ferramentas Web, Web 2.0 e Software Livre em EVT

Manual / Apostila Sistemas Prosol. Pro Guias / Arquivo e Pro Gerenciador

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Manual de operação do sistema Desenhador Geográfico. 05/2012 Versão

BR DOT COM SISPON: MANUAL DO USUÁRIO

CURSO DE ENGENHARIA CIVIL Disciplina: EXPRESSÕES GRÁFICAS Professor: Valdir R. Santos Eng. Civil - Crea: BA67342/D

COM O BROFFICE IMPRESS

Manual do Sistema "Vida - Controle Financeiro Pessoal" Editorial Brazil Informatica

COMO PREPARAR/ENVIAR SEU ARQUIVO PARA IMPRESSÃO EM COREL DRAW E PHOTOSHOP

SISTEMAS DE INFORMAÇÕES GEOGRÁFICAS I (GEO 01007) AULA 10

6. Enumere de acordo com a primeira: A. Minimizar diminui o aplicativo, deixando-o na Barra de Tarefas.

Verifique se o Plugin do Flash Player está instalado no seu computador para a navegação adequada no portal.

WEBGIS Sistema Informativo Territorial

MANUAL DO PEP ATUALIZADO EM PROPOSTA ELETRÔNICA DE PREÇOS REFERENTE A VERSÃO DO PEP:

FEMA Fundação Educacional Machado de Assis INFORMÁTICA Técnico em Segurança do Trabalho P OW ERPOI NT. Escola Técnica Machado de Assis Imprensa

[CANCELAR] - Limpa todos os campos e desabilita campos e botões, exceto [NOVO] e [PESQUISAR].

Guia Rápido do Usuário

AGHOS - GESTÃO E REGULAÇÃO ASSISTENCIAL E FINANCEIRA DE SAÚDE MÓDULO DE REGULAÇÃO AMBULATORIAL DE CONSULTAS ESPECIALIZADAS

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

Universidade Federal do Espírito Santo

2 Não possuo o institucional. Como devo proceder? Resposta: Dirija-se ao RH do câmpus e solicite a criação do seu institucional.

4o Ano. Aula 1 Prof. Sidnéia Valero Egido

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

Tutorial Sistema Professor Online. 1) Menu Cadernetas

MATERIAL DE APRESENTAÇÃO DO SCRATCH

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

TRANSIÇÕES, ZOOMS E PANORÂMICAS, TEXTO, MÚSICA

Pontos. Snap no Ponto:

Configurando a emissão de boletos no sistema

Av. Paulo VI, Sumaré São Paulo S.P.- Brasil Fone: (11) Fax: (11)

2. Módulo de Desenho. 2.1 Pontos

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

Notas de Aula AutoCad Prof. Sérgio Viana

PROVA INFORMÁTICA BANCO DO BRASIL 2007

7 Introdução ao uso do LibreOffice Impress

Trabalho 3: Agenda de Tarefas

Criar fotos em 3D no Creator

ÍNDICE. Tela de Configuração Dados de Etiqueta Configuração da Impressora Configuração do Papel Itens para Inserção...

Linguagem de Programação I

Teclado. Mike McBride Anne-Marie Mahfouf Tradução: Lisiane Sztoltz

Este tutorial tem por objectivo explicar como trabalhar com o Microsoft Office PowerPoint.

SIGA-CEIVAP MANUAL DO USUÁRIO 1

Amostra OpenOffice.org 2.0 Writer SUMÁRIO

ROBERTO OLIVEIRA CUNHA

KF2.4 MANUAL DE UTILIZADOR

Criar um formulário do tipo Diálogo modal ; Alterar a cor de fundo de um formulário; Inserir botões de comando e caixas de texto;

DATAGEOSIS EDUCACIONAL 2005

Prof Rafael Guem Murakami

Manual MQS. Logo após colocar essas informações abrirá a página inicial do sistema:

Para os demais formatos, o relatório será gerado mas virá com configurações incorretas.

Sumário. 1. Propósito 1 2. Tabela de Ferragem 1 3. Criar Tabela de Ferragem 1 4. Conector de Ferragens 7

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

MANUAL DE UTILIZAÇÃO DOMINIO ATENDIMENTO

Manual do Usuário - ProJuris Web - Biblioteca Jurídica Página 1 de 20

Transcrição:

Programação Gráfica Parte 2 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

Desafios e Tarefas Alguém descobriu como converter uma surface de um formato qualquer para o formato do display? SDL_DisplayFormat Qual a estrutura usada para indicar os recortes da SDL_BlitSurface? SDL_Rect A explicação desta estrutura está nos docs da SDL. PUCPR - CCET 5

Desafios e Tarefas É importante mantermos as SDL_surfaces desenhadas na tela no mesmo formato que o display. O maior impacto é o desempenho do blit. Experimente converter a imagem carregada no último exercício e veja o impacto na velocidade do sprite se movimentando ANTES e DEPOIS. PUCPR - CCET 6

Desafios e Tarefas Para mover um sprite, precisamos de duas variáveis auxiliares em cada eixo: Posição do sprite. Velocidade (deslocamento em pixels por quadro). A cada quadro, somamos a posição a velocidade. Se a posição sai da tela, invertemos o sentido da velocidade. PUCPR - CCET 7

Conteúdo Desenhando Fontes Tratando a Entrada PUCPR - CCET 8

Conteúdo Para a aula de hoje utilizaremos como base o exemplo da aula passada. Além do exemplo da aula passada, vamos utilizar um arquivo de fontegerado pelo Bitmap Font Builder. O arquivo se encontra no site, com o nome comics32.png (32x32). PUCPR - CCET 9

Conteúdo Nota: o Bitmap Font Builder grava os arquivos no formato TGA. Para economizar espaço no disco, podemos utilizar um formato como PNG. Como fazer isso? Utilizando o Paint.NET, abrimos o arquivo e salvamos no formato desejado. PUCPR - CCET 10

Desenhando Fontes As fontes geradas pelo Bitmap Font Builder são suportadas diretamente pela Chien2DLite. A biblioteca procura automaticamente por pontos transparentes (magenta) para determinar as larguras de fontes e desenhá-las com um pixel de espaçamento. PUCPR - CCET 11

Desenhando Fontes Similar a sprites (azulejos), quatro métodos são utilizados para gerenciar e desenhar fontes: unsigned int carregafonte(string arquivo, string apelido, int tipofonte); void removefonte(unsigned int id); bool desenhatexto(string texto, unsigned int idfonte, int x, int y, int largura, int alinhamento); bool dimensoestexto(string texto, unsigned int idfonte, int *largura, int *altura); PUCPR - CCET 12

Desenhando Fontes unsigned int carregafonte(string arquivo, string apelido, int tipofonte); O método retorna o identificador da fonte. arquivo é o nome em disco da imagem com a fonte. apelido é o nome lógico da fonte. tipofonte é o tamanho da fonte: Chien2DLite::fonte8 Chien2DLite::fonte16 Chien2DLite::fonte32 Chien2DLite::fonte64 PUCPR - CCET 13

Desenhando Fontes Uso típico: unsigned int fonte32 = video-> carregafonte( comics32.png, Comics Sans 32, Chien2DLite::fonte32); Obs: video é o ponteiro para um objeto do tipo Chien2DLitep. PUCPR - CCET 14

Desenhando Fontes void removefonte(unsigned int id); Este método remove uma fonte do sistema. Para tal, ele recebe id, o identificador único da fonte (retornado no carregafonte). PUCPR - CCET 15

Desenhando Fontes Uso típico: video->removefonte(comics32); PUCPR - CCET 16

Desenhando Fontes bool dimensoestexto(string texto, unsigned int idfonte, int *largura, int *altura); Este método retorna, em pixels, a altura e largura necessários para desenhar um texto com uma fonte. Este método retorna valores via ponteiros. O booleano retornado indica se os valores retornados são válidos ou não. PUCPR - CCET 17

Desenhando Fontes bool dimensoestexto(string texto, unsigned int idfonte, int *largura, int *altura); texto é a string a ser deenhada na tela. idfonte é o identificador único da fonte. largura: ponteiro para a largura total do texto (uma linha). altura: ponteiro para a altura total do texto, retorna a altura da fonte selecionada. PUCPR - CCET 18

Desenhando Fontes Uso típico: int largura, altura; video->dimensoestexto( Largura?, comics32, &largura, &altura); Obs: caso não tenha certeza da fonte, verifique o retorno do método. PUCPR - CCET 19

Desenhando Fontes bool desenhatexto(string texto, unsigned int idfonte, int x, int y, int largura, int alinhamento); Este método desenha um texto na tela, usando a fonte especificada. O texto é desenhada em uma certa coordenada referência. A largura é usada para efeitos de alinhamento. PUCPR - CCET 20

Desenhando Fontes bool desenhatexto(string texto, unsigned int idfonte, int x, int y, int largura, int alinhamento); texto: string desenhada na tela. idfonte: identificador único da fonte. x,y: coordenada referência do desenho do texto (canto esquerdo superior). PUCPR - CCET 21

Desenhando Fontes bool desenhatexto(string texto, unsigned int idfonte, int x, int y, int largura, int alinhamento); largura: largura máxima na qual a linha de texto vai ser desenhada. alinhamento: indica como o texto será alinhado em relação à largura: Chien2DLite::textoCentralizado Chien2DLite::textoEsquerda Chien2DLite::textoDireita Chien2DLite::textoJustificado PUCPR - CCET 22

Desenhando Fontes Uso típico: video->desenhatexto( Texto desenhado na tela, comics32, 0, 370, 640, Chien2DLite::textoCentralizado); Obs: desenha o texto centralizado na tela em relação à resolução horizontal. PUCPR - CCET 23

Exercício 01 Modifique o exercício da aula anterior para escrever um texto na tela. 1. Carregue a fonte no arquivo comics32.png no site da tutoria. 2. Desenhe o texto centralizado na tela na linha 370 (vertical). 3. Antes de encerrar o sistema de vídeo, remova a fonte da memória. PUCPR - CCET 24

Tratando a Entrada Toda entrada na SDL é tratada como um evento. Pressionar uma tecla é um evento. Soltar uma tecla é outro evento. Apertar o botão do mouse é um evento. PUCPR - CCET 25

Tratando a Entrada Analisando o código fonte main.cpp, temos a função entrada. Esta função modifica o valor da variável global sai. Para isto, ela utiliza os eventos da SDL, quando a tecla ESC é pressionada o quando o botão de fechar a janela é clicado pelo mouse. PUCPR - CCET 26

Tratando a Entrada A função entrada tem basicamente esta estrutura: void entrada() { // A estrutura que recebe os eventos SDL_Event event; // Enquanto houverem eventos a processar... while(sdl_pollevent( &event )) { // Trata aqui os eventos recebidos } } PUCPR - CCET 27

Tratando a Entrada Dois elementos chave participam desta operação: A união SDL_Event. A função SDL_PollEvent: A função SDL_PollEvent procura o próximo evento na fila do sistema. Se não existe evento, ela retorna false. Se há um evento, seus dados são preenchidos na estrutura passada por ponteiro. PUCPR - CCET 28

Tratando a Entrada A união SDL_Event tem esta aparência: typedef union{ Uint8 type; SDL_ActiveEvent active; SDL_KeyboardEvent key; SDL_MouseMotionEvent motion; SDL_MouseButtonEvent button; SDL_JoyAxisEvent jaxis; SDL_JoyBallEvent jball; SDL_JoyHatEvent jhat; SDL_JoyButtonEvent jbutton; SDL_ResizeEvent resize; SDL_ExposeEvent expose; SDL_QuitEvent quit; SDL_UserEvent user; SDL_SywWMEvent syswm; } SDL_Event; PUCPR - CCET 29

Tratando a Entrada Nos interessarão seis tipos de evento (entre parênteses, estrutura e nome do parâmetro): SDL_KEYUP (campo SDL_KeyboardEvent, key) SDL_KEYDOWN (campo SDL_KeyboardEvent, key) SDL_QUIT SDL_MOUSEBUTTONUP (SDL_MouseButtonEvent, button) SDL_MOUSEBUTTONDOWN (SDL_MouseButtonEvent, button) SDL_MOUSEMOTION (SDL_MouseMotionEvent, motion) PUCPR - CCET 30

Tratando a Entrada Exemplo: tratando pressionamento de uma tecla. case SDL_KEYDOWN: switch(event.key.keysym.sym) { // Pressionou ESC? case SDLK_ESCAPE: sai=true; break; } break; default: break; PUCPR - CCET 31

Tratando a Entrada Exemplo: tratando uma tecla deixando de ser pressionada case SDL_KEYUP: switch(event.key.keysym.sym) { // Pressionou ESC? case SDLK_ESCAPE: sai=false; break; } break; default: break; PUCPR - CCET 32

Tratando a Entrada Teclas importantes: SDLK_ESCAPE SDLK_UP, SDLK_DOWN, SDLK_LEFT, SDLK_RIGHT SDLK_SPACE SDLK_RALT, SDLK_LALT SDLK_RSHIFT, SDLK_LSHIFT PUCPR - CCET 33

Exercício 02 Modifique o exercício anterior para cumprir as seguintes etapas: 1. Desenhe um novo sprite, controlado pelo usuário, usandoas variáveis px e py para controlar a sua posição na tela. 2. Crie as variáveis globais cima, baixo, esquerda e direita, inicializadas com false. 3. Modifique a função entrada para que alterar os valores de cima, baixo, esquerda e direita de acordo com o pressionamento das teclas do cursor. 4. De acordo com o estado das teclas do cursor, mude a posição do sprite controlado pelo usuário (mude os valores de px e py). PUCPR - CCET 34

Desafio O exercício anterior possui um sprite controlado pelo teclado. Você consegue fazer um sprite ser controlado simultaneamente pelo mouse? Quando necessário, faça referência à documentação da SDL. PUCPR - CCET 35

Próxima Aula Desenhando Tilemaps. Testando colisão de sprites. PUCPR - CCET 36