13
_____________________________________________________________________________ Fatec Carapicuíba Marcel Holanda Cavalcante Ribeiro 1430431113096 ____________________________________________________________ http://www.fateccarapicuiba.edu.br/ Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected] Trabalho Professor Walter Matheos – PJD-I Aprendendo a Programar um jogo 2D ou 3D em C/C++ Utilizando a biblioteca SDL 4° Semestre Jogos Digitais - Noturnos

Trabalho pjd i-walter_matheos

Embed Size (px)

DESCRIPTION

Este trabalho busca apresentar de forma funcional como instalar, e seguir o curso básico de 36 lições para SDL(Lazy Foo' Productions) para aprender todos os recursos básicos da biblioteca.

Citation preview

Page 1: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

Trabalho Professor Walter Matheos – PJD-I

Aprendendo a Programar um jogo 2D ou 3D em C/C++ Utilizando a biblioteca SDL

4° Semestre

Jogos Digitais - Noturnos

Page 2: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

Sumário

1 APRESENTAÇÃO ............................................................................................................... 3

2 ESPECIFICAÇÕES .............................................................................................................. 3

3 PASSOS PARA INSTALAÇÃO ÁGIL................................................................................ 3

3.1 Passo_01_SDL_code ..................................................................................................... 3

3.2 Passo_02_codeblocks-10.05mingw-setup ..................................................................... 4

3.3 Passo_03_CodeBlocks .................................................................................................. 4

3.3.1 PASSOS PARA CONFIGURAÇÃO MANUAL ................................................. 5

3.4 Passo_04_TrabalhoWalter_Projetos_tutoriais .............................................................. 7

3.4.1 Estruturas das pastas de projetos do Tutorial ........................................................ 7

3.4.2 Estrutura padrão de Uma paste de Projeto - lesson01 ........................................... 8

3.4.3 Arquivo de Projeto Codeblocks *.cbp ................................................................... 8

4 RESUMO TUTORIAIS (1 ao 36): ...................................................................................... 10

5 Conclusão ............................................................................................................................ 12

6 BIBLIOGRAFIA:................................................................................................................ 13

Page 3: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

1 APRESENTAÇÃO SDL (Simple DirectMedia Layer)é uma genial biblioteca CRIADA EM 1998 usada para Games. Tem versões para praticamente todas as linguagens existentes e serve de base para muitas outras bibliotecas de games. Este trabalho busca apresentar de forma funcional como instalar, e seguir o curso básico de 36 lições para aprender todos os recursos básicos da biblioteca.

2 ESPECIFICAÇÕES Neste exemplo usarei softwares gratuitos:

Code Blocks 32bit como IDE de Desenvolvimento. E o

MinGW como compilador, Utilizando a parte 32bits da biblioteca SDL, em um So Win7 (64b) Também criei pacotes reunindo as bibliotecas e softwares utilizados para o pleno Funcionamento destes tutoriais. São os cinco arquivos listados abaixo e devem ser baixado no seguintes endereço ( http://www.4shared.com/folder/GJ8caRvP/SDL.html ):

• Passo_01_SDL_code.exe • Passo_02_codeblocks-10.05mingw-setup.exe • Passo_03_CodeBlocks.exe • Passo_04_TrabalhoWalter_Projetos_tutoriais.exe • Passo_05_Tutoriais_SDL.exe

3 PASSOS PARA INSTALAÇÃO ÁGIL Abaixo segue um passo a passo Ultra simplificado para tentar reunir o melhor dos milhares de tutoriais disponíveis na internet, para você começar a estudar em SDL (após ter feito os downloads acima..) em 5 minutos, ou menos. Se possível instale nos caminhos propostos.

3.1 Passo_01_SDL_code • Descompacte a pasta SDL_code do arquivo Passo_01_SDL_code.exe neste caminho

de raiz C:\SDL_code.

Page 4: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

3.2 Passo_02_codeblocks-10.05mingw-setup • Instale o Programa em sua pasta padrão C:\Program Files (x86)\CodeBlocks

3.3 Passo_03_CodeBlocks Após a devida instalação no passo anterior, com a IDE CodeBlocks fechado, descompacte o arquivo CodeBlocks do arquivo Passo_03_CodeBlocks.exe para atualizar as configurações do programa CodeBlocks em C:\Program Files (x86)\.

Page 5: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

3.3.1 PASSOS PARA CONFIGURAÇÃO MANUAL Caso seja necessário Configurar o SDL no CodeBlocks manualmente siga os seguintes passos:

• Abra o Menu Settings > Compiler and debbuger...

• Na aba Linker Settings Cole todas as opções abaixo em Other linker options -lmingw32 -lSDLmain -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lOpenGL32 -lglu32 -lfreeglut

Page 6: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

• Na aba Search directories, aba Compiler adicione(add) a pasta C:\SDL_code\include

• Na aba Search directories, aba Linker adicione(add) a pasta C:\SDL_code\lib

Page 7: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

• Clique em OK.

3.4 Passo_04_TrabalhoWalter_Projetos_tutoriais Voce pode descompactar esta pasta onde quiser. Nesta pasta você verá a seguinte estrutura de pastas:

3.4.1 Estruturas das pastas de projetos do Tutorial

Page 8: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

Os atalhos permitirão que você carreguem vários exemplos de uma vez no Codebloks (cuidado.. você receberá mensagens de erros se você fizer isso com muitos projetos de uma só vez.).

3.4.2 Estrutura padrão de Uma paste de Projeto - lesson01

• Pastas bin> Debug – Criadas após a compilação do projeto, contém o executável. • Pasta obj>Debug – Criadas após a compilação do projeto, contém um arquivo binário

lesson01.o (Arquivo Objeto – Arquivo gerado pelo compilador, após a validação sem erros do fonte temporário pré-processado. Todos os arquivos objetos mesclados pelo linker que geram o executável. Ou bibliotecas dinâmicas no caso do WIndows)

• • hello.bmp – Arquivo necessário do projeto. • lesson01.cbp – Arquivo XML de configuração do Projeto, será detalhado adiante • lesson01.cpp – Arquivo Fonte c++ • lesson01.depend – Arquivo XML gerado após a compilação, guarda a lista de todas as

bibliotecas c++ (*.h) dependentes, utilizadas para gerar o programa. • lesson01.layout – Arquivo XML gerado após a compilação, guarda as configurações da

janela de sua aplicação • readme.txt – arquivo do site

3.4.3 Arquivo de Projeto Codeblocks *.cbp <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 2 <CodeBlocks_project_file> 3 <FileVersion major="1" minor="6" /> 4 <Project> 5 <Option title="lesson01" /> 6 <Option pch_mode="2" /> 7 <Option compiler="gcc" /> 8 <Build> 9 <Target title="Debug"> 10 <Option output="bin\Debug\lesson01" prefix_auto="1" extension_auto="1" />

Page 9: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

11 <Option object_output="obj\Debug\" /> 12 <Option type="0" /> 13 <Option compiler="gcc" /> 14 <Compiler> 15 <Add option="-g" /> 16 </Compiler> 17 </Target> 18 <Target title="Release"> 19 <Option output="bin\Release\lesson01" prefix_auto="1" extension_auto="1" /> 20 <Option object_output="obj\Release\" /> 21 <Option type="0" /> 22 <Option compiler="gcc" /> 23 <Compiler> 24 <Add option="-O2" /> 25 </Compiler> 26 <Linker> 27 <Add option="-s" /> 28 </Linker> 29 </Target> 30 </Build> 31 <Compiler> 32 <Add option="-Wall" /> 33 <Add directory="C:\SDL_code\include" /> 34 </Compiler> 35 <Linker> 36 <Add library="mingw32" /> 37 <Add library="SDLmain" /> 38 <Add library="SDL.dll" /> 39 <Add library="user32" /> 40 <Add library="gdi32" /> 41 <Add library="winmm" /> 42 <Add library="dxguid" /> 43 <Add directory="C:\SDL_code\lib" /> 44 </Linker> 45 <Unit filename="hello.bmp" /> 46 <Unit filename="lesson01.cpp" /> 47 <Extensions> 48 <code_completion /> 49 <debugger /> 50 </Extensions> 51 </Project> 52 </CodeBlocks_project_file> Linha 5 - (Nome do projeto) Linhas 9,10,11 – Pasta saída Debug Linhas 18,19,20 – Pasta Saída Release Linhas 33 – Configuração dos includes do SDL Linhas 35 à 42 - linkers Linha 43 - Configuração das libs do SDL

Page 10: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

4 RESUMO TUTORIAIS (1 ao 36): 1 - Aprender a Carregar Imagens na tela. 2- Agora que você tem uma imagem na tela na parte 2 do último tutorial , é hora de fazer a sua superfície de carga e blitting de uma forma mais eficiente. 3- Neste tutorial você vai aprender a configurar SDL_image. Se você sabe como configurar essa extensão, você pode definir qualquer um deles para cima. 4- Este tutorial vai lhe ensinar como verificar para eventos e manipular eventos. Um evento é simplesmente algo que acontece. Poderia ser uma tecla, o movimento do mouse, o redimensionamento da janela ou, neste caso, quando o usuário quer x fora da janela. 5- Essa lição vai ensinar-lhe como remover a cor de fundo ao aplicar uma superfície. SDL_Surface A estrutura tem um elemento chamado a chave de cores. A chave é a cor que você não quer aparecer quando blitting a superfície. É o que você usa quando você quer ter fundos transparentes. 6- Nesta lição que temos uma folha de sprite com 4 pontos sprites diferentes sobre ele. Este tutorial explica como cortar um sprite de uma folha de sprite. 7- Este tutorial aborda os conceitos básicos do uso SDL_ttf. 8- Esta lição aborda como detectar teclas pressionadas. 9- Este é um tutorial simples que vai te ensinar a lidar com vários eventos de mouse para fazer um simples botão. 10- Este tutorial irá ensiná-lo a verificar se a tecla é pressionada, ao invés de eventos de monitoramento chave. 11- Este tutorial aborda os conceitos básicos reprodução de música e efeitos de som usando SDL_mixer para jogar efeitos de som e "música" que eu fiz tocando no meu monitor. 12- Nesta lição nós vamos fazer um simples temporizador que pode iniciar e parar. 13- Aqui você vai aprender a fazer uma classe com temporizador iniciar, parar, pausar e as funções que você precisa quando a programação de um jogo. 14- Ensina a limitar a taxa de quadros. 15 - Este tutorial vai ensinar você a fazer uma moldura simples por segundo teste. 16- Conceitos básicos de mover um objeto ao redor da tela. 17- Este tutorial abrange uma forma básica para verificar a colisão entre dois objetos.

Page 11: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

18- Aqui você vai aprender a obter precisão de colisão até o pixel. 19- Este tutorial vai te ensinar uma forma mais eficiente de lidar com círculos e detecção de colisão. 20- Este tutorial faz um boneco atravessar a tela para ensinar o básico de sprites animadoras. 21- Nesta lição vamos refazer o tutorial movimento só que desta vez vai ser capaz de se mover em torno de uma área de qualquer tamanho graças a rolagem. 22- Este tutorial vai ensinar você a fazer um fundo de rolagem infinita suave. 23- Fazer a nossa própria função para lidar com teclas pressionadas para obter a entrada string. 24- ensina como salvar os dados de seu jogo. 25- Aqui vamos aprender a usar a obter a entrada de um joystick / gamepad. (hw necessário ) 26- Este tutorial mostra como fazer uma janela ajustável e manipular os eventos de janela muda. 27- Neste tutorial vamos blit duas superfícies com a frente um ser capaz de fade in / out, alterando seu valor de alfa. 28- Aqui vamos fazer um motor de partículas muito simples para cercar o ponto em faíscas. 29- Aqui você vai aprender a carregar um mapa de azulejo para colocar as telhas e como interagir e mostrar telhas. 30- Este tutorial vai ensinar você a fazer uma fonte bitmap comum estilo. 31- Neste tutorial, vamos ler / escrever pixels para tornar a nossa função própria superfície inversão. 32- Aqui nós vamos fazer o movimento de pontos com base no tempo em vez de taxa de quadros por isso move o mesmo, não importa o que a taxa de quadros é. 33- Este tutorial irá apresentá-lo para as capacidades do SDL multithreading de plataforma cruzada. 34- Neste tutorial vamos usar semáforos para travar roscas para impedi-los de colidir com o outro. 35- Aqui nós vamos fazer alguma sincronização de segmento mais avançado, usando mutexes e condições.

Page 12: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

36- Quando precisar de mais potência, velocidade e flexibilidade, é hora de passar para OpenGL. Embora não vai cobrir como usar OpenGL aqui ( eu ouço há um tutorial para isso ), vamos ver como utilizar SDL para tornar OpenGL...

5 Conclusão O SDL perde o Brilho apenas para as plataformas de Desenvolvimento Ágil para games como Unity, Shiva, Construct, RPG Maker, etc. Mas é sem sombra de dúvidas a ferramenta Acadêmica perfeita para que os alunos de programação dos primeiros Semestres Desenvolvam-se na linguagem de Programação Utilizada com SDL e sejam apresentados à estrutura Básica que permanecem encapsuladas dentro das Plataformas de desenvolvimento.

Page 13: Trabalho pjd i-walter_matheos

_____________________________________________________________________________

Fatec Carapicuíba

Marcel Holanda Cavalcante Ribeiro

1430431113096

____________________________________________________________ http://www.fateccarapicuiba.edu.br/

Avenida Francisco Pignatari, 650 - Vila Gustavo Correia, Carapicuíba - SP - CEP: 06310-390 (11)4184-8404 / 4183-6849 / 4183-6827 - [email protected]

6 BIBLIOGRAFIA: SDL (biblioteca) - Origem: Wikipédia http://pt.wikipedia.org/wiki/SDL_%28biblioteca%29 Compilação de programas C/C++ http://www.pontov.com.br/site/cpp/46-conceitos-basicos/95-compilacao-de-programas-cc SDL (Site do projeto) http://www.libsdl.org SDL (Arquivos dos Tutoriais) http://lazyfoo.net/SDL_tutorials/