PlayLib Educational Game Programming Library Documentação



Documentos relacionados
GraphicsLib Biblioteca Gráfica 2D. Documentação

Introdução a Programação de Jogos

Introdução a Programação de Jogos

Introdução a Programação de Jogos

Aprendendo a Programar em C com PlayLib

Introdução a Computação

C D. C) Coleções: é usada para organizar o conteúdo de áudio, vídeo e imagens em pastas, buscando facilitar a montagem do storyboard.

Tutorial de Blender, Animação básica do tipo keyframe

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

Tutorial de Instalação do OpenCV 2.3

Microsoft Office PowerPoint 2007

PASSO A PASSO MOVIE MAKER

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Tela Principal. 2) Criação do CD para ser entregue ao cliente.

Manual do Spectacle. Boudhayan Gupta Boudhayan Gupta Tradução: André Marcelo Alvarenga

AVG Admin 2012 SQL Server 2005 Express

USANDO O ROUNDCUBE WEBMAIL

UNIVERSIDADE ESTADUAL DE CAMPINAS. Instruções para Uso do Software VISIO

INSTALAÇÃO DO CHEF FOODS NET

Roteiro de Tutorial das Ferramentas de Usabilidade. Por Heblon Motta Alves Barbosa

Manual de Utilização COPAMAIL Criando e configurando a assinatura de . Zimbra Versão 8.0.2

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

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

Tutorial: Abrindo Vídeos e Medindo Comprimentos no ImageJ

Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line)

02 - Usando o SiteMaster - Informações importantes

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

Universidade Federal de Minas Gerais UFMG Centro de Apoio à Educação a Distância CAED TUTORIAL: Possíveis Métodos para Converter Imagens em PDF

Manual Administrador - Mídia System

Sumário. Este Guia Rápido do Usuário ajuda você a começar a usar o IRIScan TM Mouse 2.

Manual do KSnapshot 2

Sumário. Este Guia Rápido do Usuário ajuda você a começar a usar o IRIScan TM Mouse Executive 2.

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Manual de operação. BS Ponto Versão 5.1

Manual de Instalação e Configuração do Primeiro Backup Versão PRO

Redimensionamento de Imagens no Catálogo de Produtos

Manual do Plone (novo portal do IFCE)

COMO UTILIZAR O EDITOR DE TEXTO

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Serviço Técnico de Informática. Curso Básico de PowerPoint

Como funciona? SUMÁRIO

Instruções para instalação do Virtual Lab (ChemLab 2.5 ou Physics 3.0)

Manual Simulador de Loja

Apostila de Windows Movie Maker

NewAgent enterprise-brain

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

MANUAL DE INSTALAÇÃO LUZ DO SABER

Sumário. 1 Tutorial: Blogs no Clickideia

Para criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.

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

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.

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

Escaneando seu computador com o Avira AntiVir 10

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

FAQ Perguntas Frequentes

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

Roteiro de Tutorial das Ferramentas de Usabilidade

Manual Equipamento ST10 Flasher Rev. 1

Índice: CMS 3 O que é Content Management System? Clientes 4 O que é o Cliente? 4 Configurando o i-menu/i-view para trabalhar. com o CMS.

O Primeiro Programa em Visual Studio.net

3.1) Baixe os arquivos necessários para preparação neste link:

INSTALAÇÃO DO SISTEMA CONTROLGÁS

Professor Paulo Lorini Najar

Nas próximas páginas, você encontrará explicações de como instalar e configurar o seu MS Money 99. Para tanto, basta seguir os passos abaixo:

CRIANDO TEMPLATES E LEGENDAS

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

Capture Pro Software. Guia de referência. A-61640_pt-br

Manual Captura S_Line

Manual da Ferramenta Construtor de Página Programa de Formação Continuada 2012

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

MANUAL ZEDIT 32 Índice:

Tutorial de Instalação do Ambiente de Programação Dev-C++

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Instruções para download e instalação da atualização de Mapa GPS (v3)

Manual das funcionalidades Webmail AASP

atube Catcher versão 3.8 Manual de instalação do software atube Catcher

Tutorial Administrativo (Backoffice)

Thunder Pro II Gold Edition Manual de operações v 8.7 Rev:b

Manual do Sistema "Fala Comigo - Sistema de Atendimento On-Line" Editorial Brazil Informatica

BACKUP ONLINE PASSOS PARA CONFIGURAÇÃO INICIAL DO PRODUTO

HCT Compatibilidade Manual do Usuário

Como criar uma avaliação?

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

Introdução ao Processamento de Imagens com o IRIS Por Rodolfo Barros

MiniPENTV ISDB-T USB TV Dongle. Manual do Usuário

Enviando Arquivos para a Neoband

W o r d p r e s s 1- TELA DE LOGIN

Dicas para usar melhor o Word 2007

MATERIAL DE APRESENTAÇÃO DO SCRATCH

TUTORIAL PARA ATUALIZAÇÃO DO PORTAL DO TJRN

Usando o simulador MIPS

Configurando um Grupo Doméstico e Compartilhando arquivos no Windows 7

PowerPoint. Prof. Claudio A. B. Tiellet. Parte II

Permissão de Usuários

MANUAL DE INSTALAÇÃO DO GERENCIADOR DO TOKEN

Transcrição:

PlayLib Educational Game Programming Library Documentação Edirlei Soares de Lima elima@inf.puc-rio.br

Sumário 1 Instalação e Configuração no Visual Studio 2010... 4 2 Estrutura de um Programa... 11 3 Loop Principal... 13 4 Coordenadas de Tela... 15 5 Desenho de Primitivas Geométricas... 16 5.1 Ponto... 16 5.2 Linha... 17 5.3 Círculo... 18 5.4 Círculo Preenchido... 19 5.5 Retângulo... 20 5.6 Retângulo Preenchido... 21 5.7 Triângulo... 22 5.8 Triângulo Preenchido... 23 5.9 Texto... 24 5.10 Modificando a Fonte do Texto... 25 5.11 Modificando a Cor... 26 5.12 Modificando a Cor de Fundo da Tela... 27 5.12 Modificando a Largura das Linhas... 28 5.13 Rotacionar Objetos... 29 6 Outras Funções... 30 6.1 Criando a Janela do Programa... 30 6.2 Executando o Programa em Tela Cheia... 31 6.3 Velocidade de Execução do Programa (FPS)... 32 6.4 Velocidade de Execução do Programa (ElapsedTime)... 33 6.5 Largura e Altura da Janela... 34 7 Imagem... 35 7.1 Carregando uma Imagem... 37 7.2 Desenhando uma Imagem... 38 7.3 Definindo a Posição uma Imagem... 39

7.4 Observações importantes sobre imagens... 40 8 Áudio... 41 8.1 Carregando um Áudio... 43 8.2 Executando um Áudio... 44 8.3 Parando a Execução de um Áudio... 45 8.4 Pausando a Execução de um Áudio... 46 8.5 Verificando se um Áudio está sendo Executando... 47 9 Interação... 48 9.1 Tratando Entradas do Teclado... 48 9.2 Tratando Cliques do Mouse... 50 9.3 Tratando o Movimento do Mouse... 51 9.5 Tratando Cliques do Mouse Sobre uma Imagem... 52

1 Instalação e Configuração no Visual Studio 2010 1) Faça o download da última versão da PlayLib: http://www.inf.puc-rio.br/~elima/playlib/ 2) Se você optar pelo instalador automático, basta executar o arquivo "PlayLib_V1.0.exe" e seguir as instruções de instalação. Por padrão, os arquivos instalados ficaram na pasta: "C:\Arquivos de Programas\PlayLib". Lembre-se que é necessário ter direitos de administrador do computador para poder usar o instalador automático. 3) Se você optar pela versão compactada, você deve descompactar o arquivo "PlayLib_V1.0.zip" para a pasta de sua preferencia. 4) Após a instalação você encontrará as seguintes pastas: 5) A pasta "doc" contém a documentação da PlayLib. 6) A pasta "include" contém os arquivos para serem incluídos nos programas criados. 7) A pasta "lib" contém algumas dlls necessárias e a biblioteca para ser utilizada nos programas criados. 8) Para utilizar a PlayLib, crie um novo projeto no Microsoft Visual Studio 2010. Este projeto deve ser do tipo Win32 Console Application na linguagem C++. Para mais informação sobre a criação de um projeto siga as instruções deste tutorial de utilização do Visual Studio 2010: http://www.inf.puc-rio.br/~elima/intro-prog/introprog_aula_04_introducao_visual_studio.pdf 9) Acesse as propriedades do projeto clicando com o botão da direita no nome do seu projeto.

10) Selecione a opção C/C++ e a sub-opção General. 11) Selecione a opção Additional Include Directories e clique em <Edit...>

12) Selecione ou digite o caminho completo para a pasta include que está dento da pasta PlayLib. 13) Clique em OK. 14) Selecione a opção Linker e a sub-opção General.

15) Selecione a opção Additional Library Directories e clique em <Edit...> 16) Selecione ou digite o caminho completo para a pasta lib que está dento da pasta PlayLib.

17) Clique em OK. 18) Selecione a opção Linker e a sub-opção Input. 19) Selecione a opção Additional Dependencies e clique em <Edit...>

20) Digite PlayLib.lib 21) Clique em OK. 22) Clique em OK para concluir a configuração do projeto.

2 Estrutura de um Programa A PlayLib é uma biblioteca educacional de programação de jogos que tem como objetivo simplificar o processo de desenvolvimento de aplicativos gráficos e auxiliar, de forma lúdica, o aprendizado de técnicas de programação aplicadas na criação de jogos. A biblioteca consiste de um conjunto de funções gráficas para a criação e manipulação de formas geométricas 2D, imagens, áudio, janelas e controle da interação pelo teclado e mouse. Destina-se a linguagem de programação C/C++ e suas funcionalidade gráficas são baseadas na API gráfica OpenGL. Com a PlayLib é possível criar jogos 2D, simulações cientificas, animações e outros aplicativos gráficos. O código a seguir ilustra a estrutura básica de um programa criado com a PlayLib: #include "Graphics.h" Inclusão da biblioteca gráfica da PlayLib Graphics graphics; int main(void) { graphics.createmainwindow(800, 600, "Teste"); graphics.startmainloop(); Instância de um objeto do tipo Graphics que permite o uso das funções gráficas. Cria uma janela de tamanho 800x600 com o título Teste Inicia o Loop principal do programa } return 0;

O programa anterior simplesmente cria uma janela de tamanho 800x600 com o título Teste como ilustrado na figura abaixo:

3 Loop Principal O Loop Principal consiste de uma função que é repetida enquanto o programa não for fechado pelo usuário. Todo processamento realizado pelo programa gráfico está de alguma forma ligado ao Loop Principal. No Loop Principal deve ser programado: Os objetos que serão desenhados na tela e como eles serão apresentados; Quais animações e movimentos os objetos terão. Toda a lógica do programa. Para criar o Loop Principal do programa é necessário criar uma função que será utilizada como Loop Principal. Em seguida é necessário indicar que a função criada será o Loop Principal do programa. #include "Graphics.h" Graphics graphics; void MainLoop() { } graphics.setcolor(0,255,0); graphics.fillrectangle2d(100, 100, 400, 200); int main(void) { graphics.createmainwindow(800, 600, "Teste"); graphics.setmainloop(mainloop); graphics.startmainloop(); Função que será usada como Loop Principal do programa Define a cor que será utilizada para desenhar objetos na tela (Formato RGB) Desenha um retângulo preenchido iniciando na posição (100,100) e indo até (200,400) Define que a função MainLoop será o Loop Principal do programa } return 0;

O programa anterior desenha na tela um retângulo preenchido iniciando na posição (100,100) e indo até (200,400) na cor verde como ilustrado na figura abaixo:

4 Coordenadas de Tela As coordenadas de tela são definidas no sistema de coordenadas cartesiano, onde o canto inferior esquerdo da tela do programa é definido na coordenada X=0 e Y=0. Esse sistema de coordenadas é ilustrado na figura abaixo: y 600 100 (200,100) 0 200 800 x

5 Desenho de Primitivas Geométricas A PlayLib fornece um conjunto de funções para o desenho de primitivas geométricas básicas. As próximas seções detalham essas funções. 5.1 Ponto void DrawPoint2D(int x, int y); graphics.drawpoint2d(200, 200); Desenha um ponto na posição (200, 200) da tela. Ilustração:

5.2 Linha void DrawLine2D(int x1, int y1, int x2, int y2); graphics.drawline2d(100, 100, 200, 100); Desenha uma linha saindo da posição (100, 100) e indo até a posição (200, 100) Ilustração:

5.3 Círculo void DrawCircle2D(int x, int y, int radius); graphics.drawcircle2d(200, 200, 20); Desenha um círculo de raio 20 na posição (200, 200) da tela. Ilustração:

5.4 Círculo Preenchido void FillCircle2D(int x, int y, int radius, int segments); graphics.fillcircle2d(200, 200, 20, 30); Desenha um círculo preenchido de raio 20 com 30 segmentos na posição (200, 200) da tela. Quantos mais segmentos, mais redondo o circulo será. Ilustração:

5.5 Retângulo void DrawRectangle2D(int x1, int y1, int x2, int y2); graphics.drawrectangle2d(100,100,200,200); Desenha um retângulo iniciando na posição (100, 100) e indo até a posição (200, 200). Ilustração:

5.6 Retângulo Preenchido void FillRectangle2D(int x1, int y1, int x2, int y2); graphics.fillrectangle2d(100,100,200,200); Desenha um retângulo preenchido iniciando na posição (100, 100) e indo até a posição (200, 200). Ilustração:

5.7 Triângulo void DrawTriangle2D(int x1, int y1, int x2, int y2, int x3, int y3); graphics.drawtriangle2d(100,100,200,100,150,200); Desenha um triângulo com o primeiro ponto na posição (100, 100), segundo ponto na posição (200, 100) e terceiro ponto na posição (150, 200). Ilustração:

5.8 Triângulo Preenchido void FillTriangle2D(int x1, int y1, int x2, int y2, int x3, int y3); graphics.filltriangle2d(100,100,200,100,150,200); Desenha um triângulo preenchido com o primeiro ponto na posição (100, 100), segundo ponto na posição (200, 100) e terceiro ponto na posição (150, 200). Ilustração:

5.9 Texto void DrawText2D(int x, int y, const char *text,...); graphics.drawtext2d(100, 100, "Pontos: %d", pontos); Escreve Pontos: seguido do valor da variáveis pontos na posição (100, 100) da tela. Ilustração:

5.10 Modificando a Fonte do Texto void SetTextFont(const char *font_name, int size, int weight, bool italic, bool underline); graphics.settextfont("times New Roman", 42, FONT_WEIGHT_BOLD, false, false); Ilustração: Altera a fonte utilizada no programa para Times New Roman, com tamanho 42, bold. Os possíveis valores para o parâmetro weight são: FONT_WEIGHT_NONE FONT_WEIGHT_THIN FONT_WEIGHT_EXTRALIGHT FONT_WEIGHT_LIGHT FONT_WEIGHT_NORMAL FONT_WEIGHT_MEDIUM FONT_WEIGHT_SEMIBOLD FONT_WEIGHT_BOLD FONT_WEIGHT_EXTRABOLD FONT_WEIGHT_HEAVY

5.11 Modificando a Cor void SetColor(float r, float g, float b); graphics.setcolor(255, 255, 0); Ilustração: Altera a cor que será usada para desenhar os objetos para o valor RGB (255,255,0). Ou seja, mistura o máximo de vermelho com o máximo de verde, o que resulta em amarelo.

5.12 Modificando a Cor de Fundo da Tela void SetBackgroundColor(float r, float g, float b); graphics.setbackgroundcolor(255, 255, 255); Altera a cor do fundo da tela para o valor RGB (255,255,255). Ou seja, mistura o máximo de todas as cores, o que resulta em branco. Ilustração:

5.12 Modificando a Largura das Linhas void SetLineWidth(float width); graphics.setlinewidth(12); Altera para 12 a largura das linhas usadas para desenhar as formas geométricas. Ilustração:

5.13 Rotacionar Objetos void RotateBegin(float angle); e void RotateEnd(); graphics.rotatebegin(30); graphics.fillrectangle2d(100,100,200,200); graphics.rotateend(); Inicia a rotação de 30 graus. Desenha um retângulo preenchido iniciando na posição (100, 100) e indo até a posição (200, 200) que sofrera a rotação de 30 graus. Finaliza a rotação. Todos os objetos desenhados depois do RotateBegin e antes do RotateEnd sofreram a rotação indicada pelo ângulo. Observação: O texto não é afetado pela rotação.

6 Outras Funções 6.1 Criando a Janela do Programa void CreateMainWindow(int sizex, int sizey, char title[]); graphics.createmainwindow(800, 600, "Nome da Janela"); Cria a janela principal do programa com o tamanho 800x600 e com o título Nome da Janela Ilustração:

6.2 Executando o Programa em Tela Cheia void SetFullscreen(bool enable); graphics.setfullscreen(true); Coloca o programa em tela cheia graphics.setfullscreen(false); Remove o programa da tela cheia

6.3 Velocidade de Execução do Programa (FPS) float GetFPS(); fps = graphics.getfps(); Coloca o número de frames por segundo na variável fps FPS (Frames per Second): Medida que nos indica quantos frames (imagens) consecutivos a placa de vídeo está conseguindo gerar por segundo.

6.4 Velocidade de Execução do Programa (ElapsedTime) float GetElapsedTime(); PosicaoX = PosicaoX + (Speed * graphics.getelapsedtime()); Calcula o deslocamento em X de forma independente da taxa de frames por segundo. Isso é muito importante, pois permite que a velocidade do deslocamento seja independente da velocidade que o jogo está sendo executado.

6.5 Largura e Altura da Janela int GetScreenWidth(); int GetScreenHeight(); width = graphics.getscreenwidth(); Coloca a largura da tela na variável width height = graphics.getscreenheight(); Coloca a altura da tela na variável height

7 Imagem Para desenhar uma imagem na tela é necessário: 1) Criar uma variável do tipo Image. Image minha_imagem; OBS: Sempre declare as variáveis Image como variáveis globais. #include "Graphics.h" Graphics graphics; Image minha_imagem1; Image minha_imagem2; int main(void) {... Variáveis Image declaradas no inicio do programa. Antes e fora da função principal ou outras funções. 2) Carregar a imagem do arquivo usando o comando LoadPNGImage. minha_imagem.loadpngimage("mario.png"); int main(void) {... minha_imagem.loadpngimage("mario.png");... } Lembre-se de colocar o arquivo Mario.png na pasta do seu projeto. Ou passe como parâmetro o caminho completo para a imagem, exemplo: C:\\Imagens\\Mario.png Carrega a imagem do arquivo Mario.png para a variável minha_imagem. OBS: Cada imagem deve ser carregada apenas uma vez. Por isso, nunca carregue a imagem diretamente de dentro do Loop Principal. 3) Desenhar efetivamente a imagem na tela usando o comando DrawImage2D. graphics.drawimage2d(200, 200, 256, 256, minha_imagem);

void MainLoop() {... graphics.drawimage2d(200, 200, 256, 256, minha_imagem);... } Desenha a imagem minha_imagem na posição (200, 200) com tamanho (256, 256) na tela. Também é possível definir a posição e tamanho das imagens em variáveis armazenadas dentro do objeto Image. Para isso, deve-se: 1) Criar uma variável do tipo Image. Image minha_imagem; 2) Carregar a imagem do arquivo usando o comando LoadPNGImage. minha_imagem.loadpngimage("mario.png"); 3) Definir a posição da imagem com o comando SetPosition. minha_imagem.setposition(100,100,256,256); 4) Desenhar a imagem na tela com o comando DrawImage2D. Posiciona a imagem minha_imagem na posição (100, 100) com tamanho (256, 256) na tela. graphics.drawimage2d(minha_imagem); Note que não é necessário passar a posição e o tamanho da imagem como parâmetro. Ela será desenhada na posição definida pelo comando SetPosition

7.1 Carregando uma Imagem void Image.LoadPNGImage(char *filename); Image mario; Declaração da variável do tipo Image que vai armazenar a imagem mario.loadpngimage("mario.png"); Carrega o arquivo Mario.png para a variável mario Ilustração:

7.2 Desenhando uma Imagem void DrawImage2D(int x, int y, int width, int height, Image image); ou void DrawImage2D(Image image); ou void DrawImage2D(int x, int y, int width, int height, int crop_x, int crop_y, int crop_width, int crop_height, Image image); Image mario; Declaração da variável do tipo Image que vai armazenar a imagem graphics.drawimage2d(200, 200, 256, 256, mario); ou graphics.drawimage2d(mario); ou Desenha a imagem mario na posição (200, 200) com tamanho (256, 256) na tela. Desenha a imagem mario na posição definida anteriormente pelo comando SetPosition. graphics.drawimage2d(200,200,128,128,0,0,128,128,sprite); Ilustração: Desenha a região de posição (0, 0) e tamanho (128, 128) da imagem sprite na posição (200, 200) com tamanho (128, 128) na tela.

7.3 Definindo a Posição uma Imagem void Image.SetPosition(int x, int y, int width, int height); mario.setposition(200, 200, 256, 256); Define a posição da imagem mario na posição (200, 200) com tamanho (256, 256) na tela. Ilustração:

7.4 Observações importantes sobre imagens Somente são aceitas imagens no formato PNG. Mas isso não é uma limitação, o formato PNG é um dos melhores formatos para esse tipo de aplicação. A principal vantagem é que ele permite o uso de transparência nas imagens. Cerifique-se de que as imagens que serão lidas estão dentro da pasta do seu projeto do Visual Studio. Se preferir armazena-las em outras pastas você deve fornecer o caminho completo para o diretório onde as imagens estão para o comando LoadPNGImage. Se a sua imagem estiver em outro formado (JPG, GIF, BMP...) você deve convertê-la para o formato PNG antes de carrega-la.

8 Áudio A PlayLib suporta arquivos de áudio no formato MP3 e WAV. Para executar um áudio (música ou efeito sonoro) com a PlayLib é necessário: 1) Incluir a biblioteca de áudio. #include "Audio.h" 2) Criar uma variável do tipo Audio. Audio minha_musica; OBS: Sempre declare as variáveis Audio como variáveis globais. #include "Graphics.h" #include "Audio.h" Graphics graphics; Audio musica1; Audio musica2; int main(void) {... Variáveis Audio declaradas no inicio do programa. Antes e fora da função principal ou outras funções. 3) Carregar o áudio do arquivo usando o comando LoadAudio. musica1.loadaudio("musica.mp3"); int main(void) {... musica1.loadaudio("musica.mp3");... } Lembre-se de colocar o arquivo Musica.mp3 na pasta do seu projeto. Ou passe como parâmetro o caminho completo para a imagem, exemplo: C:\\Imagens\\Musica.mp3 Carrega a imagem do arquivo Musica.mp3 para a variável minha_imagem. OBS: Cada áudio deve ser carregado apenas uma vez. Por isso, nunca carregue o áudio diretamente de dentro do Loop Principal.

4) Executar efetivamente o áudio usando o comando Play. musica1.play(); #include "Graphics.h" #include "Audio.h" Graphics graphics; Audio musica1; int main(void) { musica1.loadaudio("musica.mp3"); musica1.play();... Toca a música. }

8.1 Carregando um Áudio void Audio.LoadAudio(char *filename); Audio explosao; Declaração da variável do tipo Audio que vai armazenar o efeito sonoro explosao.loadaudio("explosao.mp3"); Carrega o arquivo Explosao.mp3 para a variável explosao

8.2 Executando um Áudio void Audio.Play(); Audio explosao; Declaração da variável do tipo Audio que vai armazenar o efeito sonoro explosao.loadaudio("explosao.mp3"); Carrega o arquivo Explosao.mp3 para a variável explosao explosao.play(); Toca o áudio explosao.

8.3 Parando a Execução de um Áudio void Audio.Stop(); explosao.stop(); Para a execução do áudio explosao.

8.4 Pausando a Execução de um Áudio void Audio.Pause(); explosao.pause(); Pausa a execução do áudio explosao.

8.5 Verificando se um Áudio está sendo Executando bool Audio.IsPlaying(); if (explosao.isplaying() == false) { explosao.play(); } Verifica se áudio explosao não está sendo executado. Toca o áudio explosao.

9 Interação A PlayLib oferece suporte para a interação pelo teclado e mouse. 9.1 Tratando Entradas do Teclado Para poder tratar os eventos gerados pelo teclado (teclas sendo pressionadas) é necessário criar uma função para essa tarefa. Essa função deve ter a seguinte sintaxe: void KeyboardInput(int key, int state, int x, int y) { /* Bloco de Comandos */ } Também é necessário indicar que essa é a sua função para tratar eventos de teclado usando a função SetKeyboardInput: graphics.setkeyboardinput(keyboardinput); Dessa forma, sempre que uma tecla do teclado for pressionada a função KeyboardInput será executada e o parâmetro key indicará qual tecla foi pressionada. O parâmetro state indicará se a tecla foi pressionada ou liberada. E os parâmetros x e y indicam a posição do mouse quando a tecla foi pressionada. void KeyboardInput(int key, int state, int x, int y) { if ((key == 'f')&&(state == KEY_STATE_DOWN)) { } graphics.setfullscreen(true); if ((key == KEY_RIGHT)&&(state == KEY_STATE_DOWN)) { } posicao_personagem_x = posicao_personagem_x + 2; if ((key == KEY_ESC)&&(state == KEY_STATE_DOWN)) { exit(0); Se a letra f for pressionada Coloca o programa em tela cheia Se a letra a seta direcional direita for pressionada Incrementa em +2 uma variável que representa a posição de um personagem Se a tecla Esc for pressionada Fecha o programa } }

Os códigos das teclas especiais são os seguintes: KEY_LEFT KEY_UP KEY_RIGHT KEY_DOWN KEY_PAGE_UP KEY_PAGE_DOWN KEY_HOME KEY_END KEY_INSERT KEY_ESC KEY_ENTER KEY_BACKSPACE KEY_LEFTCTRL KEY_RIGHTCTRL KEY_LEFTSHIFT KEY_RIGHTSHIFT KEY_LEFTALT KEY_RIGHTALT KEY_TAB KEY_F1 KEY_F2 KEY_F3 KEY_F4 KEY_F5 KEY_F6 KEY_F7 KEY_F8 KEY_F9 KEY_F10 KEY_F11 KEY_F12 Os códigos dos estados das teclas são os seguintes: KEY_STATE_DOWN KEY_STATE_UP

9.2 Tratando Cliques do Mouse Para poder tratar os eventos gerados pelo mouse (cliques do mouse) é necessário criar uma função para essa tarefa. Essa função deve ter a seguinte sintaxe: void MouseClickInput(int button, int state, int x, int y) { /* Bloco de Comandos */ } Também é necessário indicar que essa é a sua função para tratar eventos de clique do mouse usando a função SetMouseClickInput: graphics.setmouseclickinput(mouseclickinput); Dessa forma, sempre que um botão do mouse for pressionado a função MouseClickInput será executada e o parâmetro button indicará qual botão foi pressionado. Os parâmetros x e y indicam a posição na tela em que mouse estava quando o clique foi realizado. Se o botão esquerdo do mouse void MouseClickInput(int button, int state, int x, int y) foi pressionado { if ((button == MOUSE_LEFT_BUTTON)&&(state == MOUSE_STATE_DOWN)) { } } destino_x = x; destino_y = y; As variáveis destino_x e destino_y recebem a posição x e y do mouse no momento do clique, ou seja, onde o usuário clicou. Os códigos dos botões do mouse são os seguintes: MOUSE_LEFT_BUTTON MOUSE_MIDDLE_BUTTON MOUSE_RIGHT_BUTTON Os estados que estes botões podem assumir são os seguintes: MOUSE_STATE_DOWN MOUSE_STATE_UP

9.3 Tratando o Movimento do Mouse Para poder tratar os eventos de movimento gerados pelo mouse é necessário criar uma função para essa tarefa. Essa função deve ter a seguinte sintaxe: void MouseMotionInput(int x, int y) { /* Bloco de Comandos */ } Também é necessário indicar que essa é a sua função para tratar eventos de movimento do mouse usando a função SetMouseClickInput: graphics.setmousemotioninput(mousemotioninput); Dessa forma, sempre que o mouse for movimentado pelo usuário a função MouseClickInput será executada e os parâmetros x e y indicaram a posição do mouse na tela. void MouseMotionInput(int x, int y) { mouse_x = x; mouse_y = y; } As variáveis mouse_x e mouse_y recebem a posição x e y do mouse, ou seja, o local onde o usuário está com o cursor do mouse.

9.5 Tratando Cliques do Mouse Sobre uma Imagem Para poder tratar os eventos de clique do mouse sobre uma determinada imagem é necessário definir uma função para essa tarefa. A função para tratar esse evento deve ter a seguinte sintaxe: void MouseClickMinhaImagem(int button, int state, int x, int y) { /* Bloco de Comandos */ } Também é necessário indicar que essa é a sua função para tratar eventos de clique do mouse sobre a imagem em questão usando o comando SetOnClick: MinhaImagem.SetOnClick(MouseClickMinhaImagem); Dessa forma, sempre que o usuário clicar sobre a imagem MinhaImagem, a função MouseClickMinhaImagem será executada e o parâmetro button indicará qual botão foi pressionado. Os parâmetros x e y indicam a posição na tela relativa a imagem em que mouse estava quando o clique foi realizado. void MouseClickMinhaImagem(int button, int state, int x, int y) { carregando_imagem = true; } Observação Importante: Para poder usar este evento é necessário que a posição da imagem tenha sido definida com o comando SetPosition. Image minha_imagem; void MouseClickMinhaImagem(int button, int state, int x, int y) { clicou_na_imagem = true; } int main(void) { minha_imagem.loadpngimage("marvin.png"); minha_imagem.setposition(0,100,256,256); minha_imagem.setonclick(mouseclickmarvin); }

PlayLib Educational Game Programming Library CREATED BY Edirlei Soares de Lima elima@inf.puc-rio.br