ebook img

Introdução À Ciência da Computação Com Jogos PDF

266 Pages·2009·13.701 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Introdução À Ciência da Computação Com Jogos

Preencha a ficha de cadastro no final deste livro e receba gratuitamente informações sobre os lançamentos e as promoções da Elsevier. Consulte também nosso catálogo completo, últimos lançamentos e serviços exclusivos no site www.elsevier.com.br computacao.indb 2 18/9/2009 14:51:56 RostoIntrodCienciaComputacaoJogos_SBC_ok.ai 150.00 lpi 45.00° 9/23/09 1:39:23 PM Process Black Bruno Feijó, Esteban Clua e Flavio S. Corrêa da Silva Introdução à Ciência da Computação com Jogos Aprendendo a programar com entretenimento © 2010, Elsevier Editora Ltda. Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros. Copidesque: Adriana Kraner Revisão: Marília Pinto de Oliveira Editoração Eletrônica: SBNIGRI Artes e Textos Ltda. Elsevier Editora Ltda. Conhecimento sem Fronteiras Rua Sete de Setembro, 111 – 16o andar 20050-006 – Centro – Rio de Janeiro – RJ – Brasil Rua Quintana, 753 – 8o andar 04569-011 – Brooklin – São Paulo – SP – Brasil Serviço de Atendimento ao Cliente 0800-0265340 [email protected] ISBN 978-85-352-3419-0 Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digitação, impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questão. Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, originados do uso desta publicação. CIP-Brasil. Catalogação-na-fonte. Sindicato Nacional dos Editores de Livros, RJ _________________________________________________________________________ FF332288ii Feijó, Bruno Introdução à ciência da computação com jogos : aprendendo a programar com entretenimento / Bruno Feijó, Esteban Clua e Flavio S. Corrêa da Silva. – Rio de Janeiro: Elsevier, 2010. Apêndice ISBN 978-85-352-3419-0 1. Programação (Computadores). 2. Jogos por computador. 3. Ani- mação por computador. 4. Computação. I. Clua, Esteban. II. Silva, Flavio S. Corrêa da. III. Título. 09-4873. CCDDDD:: 000055..11 ____________________________________________________________CC__DD_UU__:: _00_00_44__..44_22__ Cad_00.indd 4 22/9/2009 13:44:07 Agradecimentos Muitas pessoas contribuíram para a realização desta obra. Em primeiro lugar estão as nossas famílias, que se privaram do nosso convívio e da nossa atenção durante a nossa contínua e exagerada jornada extra de trabalho. Para eles vão os agradecimentos, literalmente infi nitos, pelos apoio, compreensão e paciência. Bruno agradece à sua esposa Carmem e aos seus fi lhos Marcelo e Leonardo. Esteban agradece à sua esposa Luciana. Flávio agradece à sua espo- sa Renata e à sua fi lha Maria Clara. Este livro não teria surgido sem o espírito inovador de Karin Breitman (professora e pesquisadora do Departamento de Informática da PUC-Rio) que, na qualidade de Diretora de Publicações da Sociedade Brasileira de Com- putação, deu toda a atenção e todo o estímulo aos autores. Agradecimentos efusivos vão para a equipe da Editora Campus Elsevier que com rigor, competência e muita paciência nos acompanharam passo a passo. Em especial, gostaríamos de citar André Gerhard Wolff , Vanessa Vilas Bôas Huguenin e Silvia Barbosa Lima. Sem a ajuda de Lucas Machado e Rodrigo Martins, o motor javaPlay não teria sido possível. Não temos como agradecer sufi cientemente a dedicação desses dois pesquisadores do VisionLab/PUC-Rio. Raros profi ssionais no país têm a competência desses dois pioneiros da área de jogos digitais. A equipe por detrás deste livro é ainda maior e a muitos devemos pala- vras de agradecimento: Luciana Rocha Mariz Clua, por sua ajuda em design gráfi co; Fernando Ribeiro e Pablo Bioni, pela arte nos elementos visuais dos jogos; Anselmo Antunes Montenegro e Dante Corbucci Filho, professores do Instituto de Computação/UFF, como consultores em Java; e Marcelo Pana- computacao.indb 5 18/9/2009 14:51:56 ro Zamith, pela ajuda no material de demonstração colocado no site. Com o receio de não sermos sufi cientemente abrangentes e considerando o grande número de pessoas, nos limitamos a agradecer, em bloco, a todos os nossos alunos – nossa primeira fonte de inspiração e de colaboração na pesquisa e no ensino – por seus permanentes questionamentos, suas incuráveis mentes criativas e suas alegrias em aprender e ajudar. computacao.indb 6 18/9/2009 14:51:56 Os Autores Bruno Feijó possui graduação em Engenharia Aeronáutica pelo ITA, mestrado em simulação dinâmica pela PUC-Rio e doutorado em CAD (Computer-Aided Design) pela University of London. Atualmente é professor associado do DI (Departamento de Informática) da PUC-Rio, no Grupo de Computação Gráfi ca e Entretenimento Digital, e Coordenador do VisionLab/ PUC-Rio – Laboratório de Visualização, TV/Cinema Digital, Games e Produ- ção de Conteúdo Digital. É pioneiro em 3 áreas de pesquisa em Informática no país: CAD, Animação e Jogos. Foi um dos criadores da Comissão Especial da SBC em Jogos e Entretenimento Digital e foi o seu primeiro Presidente. Ele também é um dos fundadores do SBGames (Simpósio Brasileiro de Jogos e Entretenimento Digital). Foi o idealizador da Rede Brasileira de Visualização (RBV) ligada ao MCT. Também foi um dos principais colaboradores na ideali- zação do curso profi ssionalizante do Núcleo de Pesquisa em Educação, criado pelo Instituto Oi Futuro. Na pós-graduação do Departamento de Informática da PUC-Rio, da qual já foi Coordenador, ministra cursos de jogos, animação e efeitos especiais. Na graduação do DI/PUC-Rio, da qual já foi Coordenador, tem ministrado os cursos de introdução à ciência da computação por cerca de 15 anos. Esteban Clua possui graduação em Computação pela USP, mestrado pela PUC-Rio e doutorado também pela PUC-Rio. Atualmente é professor do Instituto de Computação da UFF e coordenador geral do UFF Media Lab, além de atuar na pós-graduação dessa universidade. Atua especialmente na área de Computação Gráfi ca em tempo real, Games, Realidade Virtual, GPUs, computacao.indb 7 18/9/2009 14:51:56 visualização e simulação. É membro do conselho administrativo da ABRA- GAMES, membro da Comissão Especial de Jogos e Entretenimento Digital da SBC e um dos pioneiros na área de pesquisa científi ca em jogos e entrete- nimento digital. Também é um dos criadores do SBGames e um grande entu- siasta da área de jogos digitais. Flávio S. Correa da Silva possui graduação em Engenharia de Pro- dução pela USP, mestrado pela Politécnica da USP e doutorado em Inteligên- cia Artifi cial pela University of Edinburgh. Atualmente é professor associado da USP, revisor do Journal of Information Technology Research e membro do corpo editorial da Applied Intelligence (Boston). computacao.indb 8 18/9/2009 14:51:56 Prefácio Estamos vivendo a revolução do mundo digital, onde ter noções de programação é tão essencial quanto saber o básico da matemática, da física, da economia, e quem sabe até dos primeiros socorros médicos... Até mesmo artistas e designers já perceberam que programar está na essência das novas mídias. Se você abriu este livro, muito provavelmente você ou é um fi ssurado por jogos, ou é um estudante, ou é um educador, ou pelo menos é um curioso incorrigível (uma das maiores qualidades do novo profi ssional criativo). Em qualquer desses casos, você deve estar buscando uma introdução à arte de pro- gramar que esteja mais próxima das novas demandas do mundo digital e que seja menos maçante para acompanhar. Você também pode estar procurando uma introdução à arte de desenvolver jogos digitais, quer porque você almeja ser um profi ssional da área, quer porque lhe disseram que o jogo digital é uma aplicação onde convergem os maiores desafi os da computação (um jogo tem que ser multimídia, visualmente elaborado, distribuído, artifi cialmente inte- ligente ... e tudo isso rodando em tempo real). Como educador, muito pro- vavelmente você deve estar buscando um texto mais leve e estimulante para a geração de jovens Y. Este livro pretende atender a todas essas expectativas. Muita coisa mudou desde que a primeira linguagem de programação de alto nível foi lançada há mais de 50 anos. Desde então, as linguagens e os para- digmas de programação têm evoluído constantemente. Linguagens caem em desuso e novas surgem. E qual a melhor linguagem para aprender no momen- to? Essa é uma pergunta que vem sendo formulada desde o momento em que surgiram duas linguagens diferentes e os primeiros cursos de computação; e provavelmente continuará a ser feita até o dia em que não precisaremos mais dos computadores... Muito difi cilmente haverá um consenso na resposta a essa computacao.indb 9 18/9/2009 14:51:56 pergunta, mesmo entre os mais conceituados cientistas de computação do país. Não existe a situação ideal de que podemos aprender os conceitos da ciência da computação sem nos incomodarmos com as idiossincrasias e as complexidades de uma particular linguagem. Talvez o Lisp seja a que mais tenha se aproxima- do deste ideal (sua qualidade é atestada pelo fato de ser a segunda mais antiga linguagem do planeta ainda viva). Mas o Lisp está longe de ser uma opção para as novas demandas do mundo digital. A linguagem C já está distante dos novos paradigmas de programação. C++ é muito efi ciente, especialmente no mundo dos jogos 3D, mas além de estar se tornando antiga, não é uma linguagem de fácil aprendizado. Neste livro optamos pela linguagem Java por várias razões. Primeiro, o Java possibilita aplicações em uma grande variedade de plataformas: internet nos servidores, PCs, celulares e sistemas embarcados. Segundo, o Java roda em mais de um sistema operacional (Windows, Linux, ...) e conta com um bom ambiente de desenvolvimento gratuito (NetBeans). Terceiro, o Java é uma linguagem orientada a objetos – um paradigma atual de programação. Quarto, Java é o ponto de partida para a programação da internet – a invenção que de- terminará o futuro da computação. Quinto, a próxima geração de linguagens orientadas a objetos será a evolução natural do Java (como já o é a linguagem C#). Sexto, Java serve muito bem para desenvolver jogos 2D – o tipo de aplica- ção que estamos usando neste livro. Independente da escolha do Java, este livro procura, antes de mais nada, apresentar os conceitos e os bons hábitos da arte de programar. Dessa manei- ra, o livro está organizado em duas partes. A primeira parte se concentra na programação procedimental estruturada (capítulos 2 a 6) e a segunda parte é dedicada aos paradigmas de orientação orientada a objetos e de programação guiada a eventos (capítulos 7 a 9). Introduzir o conceito de orientação a ob- jetos não é uma tarefa fácil, mas é indispensável no cenário atual da ciência da computação. Este livro procura ir trazendo esse novo conceito aos poucos, sem pretender esgotar o assunto, nem aspirar ser usado como um livro de referência. Este é um livro didático que funciona como ponto de partida para os modernos conceitos em ciência da computação. O projeto deste livro inclui uma terceira parte, disponível na internet, que pode sustentar um curso mais avançado e/ou pode dar continuidade a uma especialização na área de desen- volvimento de jogos: www.inf.puc-rio.br/livroicc computacao.indb 10 18/9/2009 14:51:56 A melhor maneira de usar este livro é implementar cada exemplo citado no texto e fazer os exercícios no fi nal de cada capítulo. Um motor de jogo 2D, chamado javaPlay, foi especialmente desenvolvido para este livro. O javaPlay é conciso, didático, mas tem uma estrutura profi ssional, moderna e com pos- sibilidade de ser usado com efi ciência pela indústria. O javaPlay é apresen- tado em várias versões de graus crescentes de complexidade: Mini (a versão minimalista, para começar), Versão 00 (a versão intermediária) e Versão 0 (a versão-base mais completa). A Versão 1 deverá ser a que o leitor mais dedica- do certamente criará. Os apêndices complementam o estudo e servem de referência. Reco- mendamos, em especial, que sejam feitos os projetos de jogos do Apêndice B. Os amantes de desenvolvimento de jogos acharão muito interessante o Apên- dice A. Os Apêndices C e D servem de referência para o motor de jogo java- Play. Este é um livro texto para um primeiro curso de introdução à ciência da computação, usando a criação de jogos digitais como instrumento de apren- dizado e motivação. Esta obra é organizada em uma sequência de tópicos que correspondem a um curso de 64 horas, em blocos de 4h/semana (16 semanas, ao total). Sugestões de sequência de assuntos e material de suporte ao profes- sor e ao aluno podem ser encontrados na página Web citada anteriormente. Uma possível sequência para 16 semanas pode ser: semana 1: apresentação e cap.1 semana 2: cap.2 semana 3: cap.3 semanas 4 a 6: cap.4 semana 7: cap.5 semana 8: cap.6 semanas 9 a 11: cap.7 semanas 12 a 14: cap.8 semanas 15 e 16: cap.9 Uma outra sequência de aprendizado pode ser proposta através de dois cursos, com mais tempo para elaborar os conceitos: Curso I – Programação Procedimental Estruturada Cap. 1 ao Cap. 5 Cap.6 como preparação ao Curso II computacao.indb 11 18/9/2009 14:51:56

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.