Introdução à Programação

Slides:



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

Programação em Java Prof. Maurício Braga
Lógica de programação de jogos
Autor: Pedro Demasi Visão Geral e Introdução à Biblioteca Allegro para Programação de Jogos Autor: Pedro Demasi
Linguagem C Marco Reis.
Introdução à Programação usando Processing Programação Gráfica 2D Estrutura de Seleção Exercício Estrutura de Seleção 2º Semestre 2009 > PUCPR > Design.
Introdução à Programação usando Processing Programação Gráfica 2D Estrutura de Seleção Exercícios de Revisão Estrutura de Seleção 14/10/09 Bruno C. de.
Introdução à Programação Exercício - Interação via Teclado - Estrutura de Repetição 2º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
Introdução à Programação Exercício F13 - Minigame - Interação - Imagens 1º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
Apostila para o 7º ano Profª Yandra
Programação II Estruturas de Dados Aula 01
Programação para Engenharia I
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Algoritmos e Estrutura de Dados I
Arquiteturas de jogos e Animação 2D baseada em Sprites
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Ana Queiroga (aicmq) André Guedes (agl) Bruno Batista (bamb)
Linguagem C Strings.
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
O Portal do Estudante de Computação
HTML Técnicas em Programação para Internet
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Biblioteca Allegro Monitoria de Introdução à computação – if669ec
Aula prática 6 Vetores e Matrizes
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
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
Exercicios de revisão Exercicio tirados de
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
CADEIA DE CARACTERES (Strings)
Laboratório de Programação I 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.
Lógica de Programação de Jogos
Thiago Francisco Bergmann-
Interpretador Python.
Seminário 1: Revisão de C
Usando a Biblioteca Gráfica Allegro
Estruturas de Dados Módulo 3 – Controle de Fluxo
Cascading Style Sheets Folhas de Estilo em Cascata
Programa Expresso de Capacitação Módulo J2ME Aula 4 – Interface de alto e baixo nível.
HTML 1ª aula.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Aula prática 7 Strings Monitoria de Introdução à Programação
Estruturas de Dados Aula 17: Estruturas Genéricas
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
O Tux Paint é um software de desenho voltado a crianças alfabetizadas ou não. Possui várias ferramentas para que qualquer usuário iniciante possa, com.
Aula Prática 4 Monitoria IP/CC (~if669).
Programação e Aplicações Gráficas
O que você está construindo
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Introdução ao MATLAB 5.3 para Hidrólogos
Aula Prática 11 Operações com Arquivos Monitoria
Linguagem C - Funções Automação Industrial Informática Básica
Ana Queiroga (aicmq) André Guedes (agl) Bruno Batista (bamb) Bruno Lins (bfol)
Aula Prática 3 Funções Monitoria Introdução à Programação.
Caio Paes, Demontiê Junior, Tales Pimentel
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Introdução ao C++ para programadores OO Instrutores: Francisco Carvalho, João Paulo do Monte, Renato Viana Ferreira {fcfl, jpsml,
Aula prática 7 Strings Monitoria de Introdução à Programação.
Manipulação de Imagens em OpenGL
Aula de Programação de Games
Aula Prática 6 Vetores e Matrizes Monitoria
Linguagem de Programação
Alexandre Gomes da Costa
Aline Oliveira Everton Godoy Gabriel Leoni Lenilton Rocha Nelson Deda.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Transcrição da apresentação:

Introdução à Programação Aula Prática Biblioteca Allegro Monitoria 2013.1

O que é? Allegro é uma biblioteca gráfica Open Source escrita em C e voltada para o desenvolvimento de jogos 2D em C/C++ Fornece rotinas básicas necessárias ao programador como funções de input, gráficas, som, texto, temporizadores, etc.

Sites para aprender mais Site oficial do Allegro: www.allegro.cc Tutoriais: http://cinacademy.wikia.com/wiki/Allegro http://www.dcc.ufrj.br/~abdalla/allegro.html http://www.geocities.ws/weissengeist/allegro.html

Esquema básico de um Jogo Antes do jogo começar devem ser feitas algumas inicializações da biblioteca bem como o carregamento das mídias do jogo e outras variáveis A parte principal está no game loop onde acontece a atualização do estado do jogo e o desenho dos frames Quando acaba o jogo o programa sai do loop e geralmente precisa liberar alguma memória utilizada e/ou executar alguma rotina de finalização

Double Buffering Desenhar diretamente na tela do jogo geralmente não é uma técnica eficaz. Uma alternativa é utilizar a técnica de double buffering Usa-se uma tela auxiliar para montar todo o frame e quando ele está pronto Desenha-se a tela auxiliar na tela do jogo e depois limpa-se a tela auxiliar para recomeçar o processo

O eixo Y invertido... Se alguém perguntar, é para não gerar ambiguidade com o “while”

COR As cores são valores inteiros e são representadas no formato RGB, podendo ser obtidas através da função int makecol(int r, int g, int b). Ex: int cor_amarela = makecol(255, 255, 0); O rosa puro (255, 0, 255) é utilizado como cor transparente no allegro. Ao ser desenhado um BITMAP, todos os pixels que estiverem nessa cor não serão desenhados.

Inicializando a biblioteca

BITMAPS BITMAP* create_bitmap(int width, int height); O allegro possui o tipo estruturado BITMAP que serve para manipular imagens. Para criar um BITMAP se usa a função: BITMAP* create_bitmap(int width, int height); Ex: BITMAP* buffer = create_bitmap(800, 600); Para carregar uma imagem externa se usa: BITMAP* load_bitmap(const char *filename, RGB *pal); Ex: BITMAP* imagem = load_bitmap(“imagem.bmp”, NULL); Para liberar um BITMAP se utiliza: void destroy_bitmap(BITMAP* bitmap); Ex: destroy_bitmap(imagem);

DESENHANDO BITMAPS Há várias funções para desenhar BITMAPS. Eis as principais: void draw_sprite(BITMAP *bmp, BITMAP *sprite, int x, int y); void blit(BITMAP *source, BITMAP *dest, int source_x, int source_y, int dest_x, int dest_y, int width, int height); void draw_trans_sprite(BITMAP *bmp, BITMAP *sprite, int x, int y); * void rotate_sprite(BITMAP *bmp, BITMAP *sprite, int x, int y, fixed angle); void pivot_sprite(BITMAP *bmp, BITMAP *sprite, int x, int y, int cx, int cy, fixed angle); void stretch_sprite(BITMAP *bmp, BITMAP *sprite, int x, int y, int w, int h);

DESENHANDO FIGURAS PRIMITIVAS Além de BITMAPS é possível desenhar várias figuras geométricas diferentes. Estas são algumas delas: void putpixel(BITMAP *bmp, int x, int y, 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); void circlefill(BITMAP *bmp, int x, int y, int radius, int color); void ellipse(BITMAP *bmp, int x, int y, int rx, int ry, int color); void ellipsefill(BITMAP *bmp, int x, int y, int rx, int ry, int color); void arc(BITMAP *bmp, int x, y, fixed ang1, ang2, int r, int color);

TECLADO O Allegro possui um array de teclas que atualiza constantemente. Cada posição representa o estado de uma tecla (TRUE/FALSE) key[MAXKEY]; Para acessar uma tecla específica existem defines para cada tecla: Ex: if( key[KEY_ENTER] ) faz_algo(); if( key[KEY_A] && !key[KEY_B] ) //Se pressionar A mas sem pressionar B faz_outra_coisa(); Para utilizar teclas especiais usa-se a variável global ‘key_shifts’ juntamente com algumas flags próprias para essas teclas fazendo um AND bit-a-bit: Ex: if (key[KEY_W]) { if (key_shifts & KB_SHIFT_FLAG) /* Usuário está pressionando shift + W. */ else /* Apenas tecla W está sendo pressionada */ }

TEXTO Para desenhar textos há duas funções principais: void textout_ex(BITMAP *bmp, const FONT *f, const char *s, int x, int y, int color, int bg); void textprintf_ex(BITMAP *bmp, const FONT *f, int x, int y, int color, int bg, const char *fmt, ...); No parâmetro de fonte pode-se utilizar a variável da fonte padrão do allegro ‘font’ ou carregar suas próprias fontes formato PCX usando as funções: FONT *load_font(const char *filename, RGB *pal, void *param); void destroy_font(FONT *f); No parâmetro ‘bg’ você escolhe a cor do fundo do texto. Para um fundo transparente se utiliza o valor -1 Ex: imprimindo uma string azul com a fonte padrão textprintf_ex(buffer, font, 10, 20, makecol(0,0,255), -1, “Seu nome eh: %s”, nome);

SOM - MIDI O Allegro 4 usa MIDI como formato padrão de música de fundo. Apenas 1 midi pode ser tocado por vez. Há o tipo estruturado MIDI para a manipulação dessas músicas. Para carregar arquivos .mid usa-se a função MIDI* load_midi(const char *filename); Ex: MIDI* musica = load_midi(“musica.mid”); Para liberar os midis alocados usa-se a função void destroy_midi(MIDI* midi); Ex: destroy_midi(musica); Para tocar, pausar, resumir ou parar um midi usa-se as funções: int play_midi(MIDI* midi, int loop); void midi_pause(); void midi_resume(); void stop_midi(); A variável global ‘midi_pos’ indica a posição sendo tocada no momento e é um valor negativo quando não há midis tocando A variável global ‘midi_time’ indica a o tempo transcorrido em segundos do midi sendo tocado (possui valor zero quando não há midis tocando).

SOM - SAMPLE O Allegro 4 usa WAV como formato padrão de efeitos sonoros. Vários efeitos podem ser tocados simultaneamente. Há o tipo estruturado SAMPLE para a manipulação desses efeitos. Para carregar arquivos .wav usa-se a função: SAMPLE* load_sample(const char *filename); Ex: SAMPLE* efeito = load_sample(“efeito.wav”); Para liberar os samples carregados usa-se a função: void destroy_sample(SAMPLE *spl); Ex: destroy_sample(efeito); Para tocar um sample usa-se a função: int play_sample(const SAMPLE* spl, int vol, int pan, int freq, int loop);

Dúvidas?

Exercício Escreva um jogo simples de pegar objetos. O jogador controla um boneco através das setas direcionais e deve pegar uma bola que começará em uma posição aleatória da tela. Quando isso ocorrer deve-se incrementar um score mostrado em tela e mover a bola para outra posição aleatória. O jogo acaba quando o usuário pressionar a tecla ESC. Você também deve usar os sons fornecidos ou outros de sua preferência para colocar uma música de fundo no jogo e um efeito sonoro ao capturar a bola.

Exercício Para detectar a colisão entre o personagem e a bola você pode usar a função: int bounding_box_collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { if( (x1 > x2 + w2) || (y1 > y2 + h2) || (x2 > x1 + w1) || (y2 > y1 + h1) ) return FALSE; else return TRUE; } Os parâmetros representam a posição (x, y), a largura e altura dos dois objetos a que se quer testar uma possível colisão