Ana Queiroga (aicmq) André Guedes (agl) Bruno Batista (bamb)

Slides:



Advertisements
Apresentações semelhantes
GUI Criação de Interface de Usuário
Advertisements

Dosvox.
Autor: Pedro Demasi Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi
Introdução à Programação Exercício - Interação via Teclado - Estrutura de Repetição 2º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
2º Semestre 2011 > PUCPR > Design Digital
Introdução à Programação Exercício F13 - Minigame - Interação - Imagens 1º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
Imagens e elementos multimédia
Imprimir apresentações em diversos formatos
coloca todas as letras no formato de maiúscula.
Programação para Engenharia I
Algoritmos e Estrutura de Dados I
Para ações em Vigilância do Óbito
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Computação Gráfica: Rendering e Rasterização
Listas com Ponteiros Listas encadeadas Listas circulares.
POWER POINT O POWER POINT é um editor de apresentações, pertencente ao
Fundamentos de Programação 1
Links Rollover image Tabelas
Layers Possuem a intenção de substituir as tabelas na função de diagramação das páginas para a internet. Eles possuem uma idéia ótima e são totalmente.
Revisão da Linguagem C.
7 - Criação de Páginas Web
Fundamentos da Informática
Microsoft Office Excel
Listas ordenadas e comando Marquee
Programação de Scripts
VISÃO GERAL DO APLICATIVO.
Introdução à Programação
Biblioteca Allegro Monitoria de Introdução à computação – if669ec
Ameliara Freire O comando de entrada de dados é utilizado quando desejamos fornecer um valor para um nosso programa. Os dispositivos.
Rodrigo de Toledo Luiz Fernando Estevão
PROGRAMAÇÃO ESTRUTURADA II
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
Treinamento do Microsoft® Word 2010
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Thiago Francisco Bergmann-
Seminário 1: Revisão de C
Usando a Biblioteca Gráfica Allegro
POWER POWER POINT POINT.
Windows Sistema operacional da Microsoft
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
Técnicas de Desenvolvimento de Programas
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
ÁREA DE TRABALHO DO WINDOWS
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
APRESENTANDO O TECLADO
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Professor Julian Palavro Dutra- Porto Alegre/ RS.
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
Introdução à Linguagem C
Aula Prática 4 Monitoria IP/CC (~if669).
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Introdução ao aplicativo Lync da Windows Store Lync 2013.
Desenhos Tridimensionais
Ana Queiroga (aicmq) André Guedes (agl) Bruno Batista (bamb) Bruno Lins (bfol)
Aula Prática 3 Funções Monitoria Introdução à Programação.
Editor de Texto do Dosvox
Introdução à Programação
Abra um novo arquivo Siga o roteiro desta apresentação para fazer sua atividade.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Aula 2 Conhecimento básico do Windows (ícones, menus,pastas, arquivos); Aprender a usar pen drive e fazer a transferência de fotos de câmera digital.
Manipulação de Imagens em OpenGL
Linguagem de Programação
Estrutura de Dados Prof. André Cypriano M. Costa
TV de Bolso TV de Bolso apresenta Tutorial: editando seu vídeo no Movie Maker.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Informática Básica Karine Alessandra Córdova  Conjunto de programas; São funções do Sistema Operacional  Gerenciamento de I/O (Input/Output) – cuida.
Aline Oliveira Everton Godoy Gabriel Leoni Lenilton Rocha Nelson Deda.
Transcrição da apresentação:

Ana Queiroga (aicmq) André Guedes (agl) Bruno Batista (bamb) Bruno Lins (bfol)

A Biblioteca Allegro Biblioteca para construção de jogos e aplicações multimídia em geral Free Source Voltada mais especialmente para jogos 2D Conhecida pela facilidade de adicionar entrada de dados via teclado, mouse e joystick Grande comunidade de desenvolvedores

Características Multi-plataforma DOS Windows Linux Mac (OS X) BeOS QNX Primitivas Gráficas Rectas, círculos, elipses Polígonos (sólidos, texturados, transparentes) Texto em modo gráfico Animações

Características (cont.) Gere mouse, teclado, joystick Suporta arquivos de configuração e de dados comprimidos Temporizadores

Usando Allegro Incluir <allegro.h> depois de todos os demais includes Deve sempre aparecer uma chamada à função allegro_init() o mais perto possível do início do programa. Da mesma forma devem ser chamadas, a seguir, as funções install_keyboard(), install_mouse() e install_timer(). Nota: as funções normais do C para teclado não irão mais funcionar.

Usando Allegro A função allegro_exit() deve ser chamada no final do programa. Colocar a macro END_OF_MAIN() logo após a chave final da rotina main() Ao compilar, incluir a biblioteca alleg: gcc -o test test.c –lalleg

Especificar Modo Gráfico Especificado antes de começar a desenhar: int set_gfx_mode (int card, int w, int h, int v_w, int v_h); Onde: card é usualmente GFX_AUTODETECT, GFX_AUTODETECT_FULLSCREEN ou GFX_AUTODETECT_WINDOWED w , h largura e altura v_w , v_h largura e altura virtual (normalmente, 0)

Desenhar Objectos – BITMAP’s Bitmaps são matrizes de pixels, em que cada valor indica uma cor Desenho se dá sobre estruturas chamadas BITMAPs Tela é um BITMAP especial chamado screen BITMAPs adicionais podem ser criados com: BITMAP *bmp = create_bitmap(int width, int height); Chamado antes de set_gfx_mode

Desenhar Objectos – BITMAP’s Os vectores X e Y, estão posicionados da maneira diferente quando comparamos os planos, desta forma, quando desenharmos a linha, devemos ter em mente a direcção do traço.

Desenhar Objectos – BITMAP’s Alguns exemplos de rotinas gráficas simples: void putpixel (BITMAP *bmp, int x, int y, int color); void vline(BITMAP *bmp, int x, int y1, int y2, int color); void hline(BITMAP *bmp, int x1, int y, int x2, int color); void line(BITMAP *bmp, int x1, int y1, int x2, int y2, int color); void triangle(BITMAP *bmp, int x1, y1, x2, y2, x3, y3, int color); void rect(BITMAP *bmp, int x1, int y1, int x2, int y2, int color); void rectfill(BITMAP *bmp, int x1, int y1, int x2, int y2, int color); void circle(BITMAP *bmp, int x, int y, int radius, int color);

Cores Modelo depende do modo gráfico sendo o default 8 (256 cores). Cada cor é expressa com três números, cada um numa escala de 0 a 63 (intensidade) Para armazenar cores no Allegro: typedef struct RGB { unsigned char r, g, b; } RGB;

Cores A cor azul é formada através da RGB [0,0,255]

Animação Dar a impressão de que coisas se movem Pode significar mover um pixel ao longo da tela mas, geralmente, significa uma mudança repetitiva da apresentação de algo para que dê a ideia de que se move. Qual a técnica mais simples? limpamos a tela, desenhamos os objectos, limpamos a tela novamente, desenhamos os objectos nas novas posições

Animação Qual o problema desta técnica? Instante 1 Instante 2: Limpar a tela Instante 3 Efeito Flicker - efeito de cintilação ou vibração de uma imagem na tela do computador

Animação Qual a solução? Double Buffering Buffer Tela Instante 2: Limpar a tela Instante 1 Instante 3 Buffer Instante 1 Instante 3 Tela Instante 2

Periféricos de Entrada - Teclado install_keyboard() /* Para inicializar as rotinas do teclado */ Tecla Código na Array A, B ... Z KEY_A, KEY_B...KEY_Z Teclado Numérico 0 a 9 KEY_0_PAD ... KEY_9_PAD Teclado Normal 0 a 9 KEY_0 ... KEY_9 Esc KEY_ESC Enter KEY_ENTER Seta para a Direita KEY_RIGHT Seta para a Esquerda KEY_LEFT Seta para Cima KEY_UP Seta para Baixo KEY_DOWN Pause KEY_PAUSE Barra de Espaço KEY_SPACE Print Screen KEY_PRTSCR Shitf Esquerdo KEY_LSHIFT Shift Direito KEY_RSHIFT Control Esquerdo KEY_LCONTROL Control Direito KEY_RCONTROL Alt esquerdo KEY_ALT Alt Direito KEY_ALTGR Váriável global int key[] permite ver quais teclas estão pressionadas. constantes definidas para identificar cada tecla

Periféricos de Entrada - Teclado Mover coisas na tela: void processa_teclado(int* x, int* y) { if (key[KEY_UP]) { *y = *y - 1; } else if (key[KEY_DOWN]){ *y = *y + 1; } else if (key[KEY_RIGHT]){ *x = *x + 1; } else if (key[KEY_LEFT]){ *x = *x - 1; }

Periféricos de Entrada - Mouse install_mouse() /* Para inicializar as rotinas do mouse */ Retorna -1 em caso de falha ou o número de botões que o mouse tem em caso de sucesso Usa-se a função show_mouse para que o cursor do mouse seja mostrado no bitmap especificado Passando NULL como parâmetro esconde o cursor do mouse Deve-se ter cuidado ao desenhar algo na tela pois o cursor do mouse pode passar por cima e estragar o desenho, por isso é sempre bom escondê-lo antes de desenhar qualquer coisa show_mouse(screen); /* mostra o mouse na tela */ show_mouse(NULL); /* esconde o mouse */

Periféricos de Entrada - Mouse As variáveis mouse_x e mouse_y contêm a posição do cursor do mouse na tela. A variável mouse_b contém o estado dos botões. (mouse_b & 1) é verdadeiro se o botão esquerdo estiver pressionado. (mouse_b & 2) é verdadeiro se o botão direito estiver pressionado.

Som Som digital: WAV. Música: MID. Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma: /* declaração das variáveis que guardarão sons e músicas */ SAMPLE *som1; /* SAMPLE = arquivos de som digital */ MIDI *musica; /* MIDI = arquivos de música */ /* carrega os arquivos usando-se as respectivas funções */ som1 = load_wav(“arquivo.wav”); /* para arquivos wav */ musica = load_midi(“arquivo.mid”); /* para arquivos mid */ Ponteiro nulo -> arquivo não encontrado.

Som – MIDI’s Para tocar uma música usa-se a função play_midi. O primeiro parâmetro é o arquivo MIDI carregado, o segundo indica se ele tocará em loop ou não. /* Exemplo para tocar um arquivo MIDI */ MIDI *musica; /* declaração da variável a ser usada */ musica = load_midi(“musica.mid”); /* carrega arquivo */ play_midi(musica,TRUE); /* toca a música em loop */ Para parar de tocar uma música usa-se a função stop_midi().

Som - Samples Para tocar um som digital usa-se a função play_sample. Os cinco parâmetros indicam: arquivo carregado, volume (0 a 255), equilíbrio entre as caixas (0 a 255, 128 é meio a meio), freqüência (1000 usa a frequência original, 500 usa a metade da freqüência original etc.) e se vai ser tocado em loop Função stop_sample() pára de tocar /* Exemplo para tocar um arquivo de som WAV */ SAMPLE *som; /* declaração da variável a ser usada */ som = load_wav(“som.wav”); /* carrega arquivo */ play_sample(som,255,128,1000,FALSE); /* toca som */

Timming no Allegro Executar pedaço de código em velocidades diferentes Para isso, colocar cada um dos trechos de código numa função diferente Allegro só permite o uso de 16 timers int install_int(void (*proc)(), int speed) /* cria timer */ install_timer(); /*inicializa timer, opcional */ void remove_int(void (*proc)()) /* remove função da lista */

Timming no Allegro Notas: Todas variáveis globais acessadas nos timers devem ser trancadas com a macro LOCK_VARIABLE() Todas as funções de "timer" devem ser trancadas com LOCK_FUNCTION() speed representa milésimos de segundo

Timming no Allegro Exemplo: volatile int x=0; //Variável glogal modificada em um timer void Anda(void) { //Timer x++;} END_OF FUNCTION(Anda); //Necessário após a declaração de um timer int main(void) { //Nosso programa ... install_timer(); //Opcional, porém mais legível LOCK_FUNCTION(Anda); //Obrigatório trancar os timers usados LOCK_VARIABLE(x); //Obrigatório trancar as variáveis globais dos timers install_int(Anda, BPS_TO_TIMER(10)); //"Anda" executado 10 vezes por segundos while(!Fim_Jogo) {} //Lógica do jogo return(1); }

Exemplo de Jogos Swear

Exemplo de Jogos Icy Tower

Como Obter Mais Ajuda Arquivos de documentação do Allegro, principalmente faq.txt e allegro.txt. Links na própria página do Allegro. Demo do Allegro (\allegro\demo). Exemplos do Allegro (\allegro\examples). Newsgroups e listas de discussão. Vários programas já desenvolvidos usando o Allegro fornecidos com o código fonte.

Instalando Allegro Devc++ Clique no botão Install e selecione o caminho onde você salvou o pacote de instalação do Allegro:

Usando Allegro no Devc++ Crie um Novo Projeto no DevC++, Selecione a aba MultiMedia, e clique em Allegro Application(static):

Bibliografia Site principal do Allegro http://alleg.sourceforge.net Site principal de aplicações (games) em allegro http://www.allegro.cc Tutorial allegro vivace http://www.grandgent.com/gfoot/vivace/vivace.html

Exercício Ex1: Construa um Círculo Trigonométrico a partir das primitivas (reta, retângulo, círculo) do Allegro. Ex2: Faça o joginho de Surf, para tal, utiliza as imagens surf.bmp e teahupoo.bmp