Você está na página 1de 4

Apresentao

Conhece um jogo chamado FreeCell? um jogo de pacincia,


muito conhecido, em que voc precisa manipular as cartas
de um baralho, com o objetivo de coloc-las em sequncia.
As cartas so armazenadas em Pilhas e s podem ser movimentadas de acordo com regras bem especficas. Como
voc desenvolveria um jogo como o FreeCell? Como faria
para armazenar as cartas em Pilhas e garantir que elas sejam
movimentadas de acordo com as regras do jogo?
E jogos do tipo Snake, voc j jogou? O personagem principal desse jogo uma cobra composta por diversos pedacinhos coloridos. Ao se movimentar e comer alguma
coisa, a cobra vai ganhando ou perdendo pedacinhos, crescendo ou diminuindo, e tornando o jogo cada vez mais
difcil. um jogo de habilidade. Se voc fosse desenvolver
um jogodo tipo Snake, como representaria no programa
a cobra e cada um de seus pedacinhos? Como faria para
retirar ou acrescentar os pedacinhos e para mant-los na
sequncia correta?
Pense agora em um jogador humano disputando contra o computador. O jogo em si
pode ser simples, como um Jogo da Velha, por exemplo, mas no um jogo da velha
qualquer; um jogo inteligente, no qual o computador escolhe
a melhor jogada em funo da jogada do adversrio, sempre
visando situaes com as maiores chances de vitria. Como
voc implementaria essa inteligncia em um jogo? Como faria
o seu jogo prever todas as possveis jogadas e depois escolher,
conscientemente, a melhor opo?

Objetivos do livro
O livro Estruturas de dados com jogos tem por objetivo prepar-lo para implementar estruturas de dados para representao e armazenamento de conjuntos de informaes
em um programa. Conjuntos de informaes como uma pilha de cartas, uma fila de
espera, uma lista de passageiros ou de compras, por exemplo.
O foco do livro no so os jogos em si. A ideia que voc aprenda estruturas de dados
desenvolva habilidades slidas de programao, enquanto cria alguns jogos. Os jogos
tornaro seu crescimento mais divertido!

Apresentao

Os jogos e os captulos
So quatro jogos para voc desenvolver. Quatro desafios. O primeiro
desafio desenvolver uma adaptao do FreeCell. Para desenvolver um bom
jogo, voc estudar o Captulo1 e o Captulo2 de Estruturas de dados com
jogos. Voc vai conhecer uma estrutura de dados chamada Pilha. Voc
vai aprender como implementar uma Pilha de Cartas e como deixar seus
jogos bem flexveis. Assim ser fcil ajustar o software do jogo a novas
regras e a novas situaes.

Seu segundo desafio desenvolver um jogo do tipo Snake. Enquanto desenvolve seu
prprio Snake, voc estudar os Captulos3,4 e5, e conhecer outra estrutura de dados
chamada Fila. Voc perceber que uma
Fila muito til para implementar um
jogo como o Snake. Voc ir comparar
duas tcnicas de implementao e escolher uma dessas tcnicas para implementar sua prpria Fila e seu prprio Snake.
No terceiro desafio, voc ser apresentado a um jogo chamado
Spider Shopping. Seu objetivo ser desenvolver uma adaptao desse jogo ou um jogo diferente que mantenha algumas
das caractersticas do Spider Shopping. Para isso, estudar outro
tipo de estrutura de dados: a Lista Cadastral. Nos Captulos6
e7, voc estudar diversas tcnicas para implementar uma Lista
Cadastral e usar sua criatividade para conceber seu prprio
jogo sua prpria aplicao das Listas Cadastrais.
O ponto-chave do quarto desafio construir a
inteligncia do jogo. Poder ser o Jogo da Velha
ou outro jogo, mas o jogo precisar prever as
prximas jogadas, para ento optar pela alternativa que oferea maior chance de vitria. Estudando os Captulos8 e9, voc conhecer uma
estrutura de dados chamada rvore e algumas
de suas aplicaes. Voc perceber que com
uma rvore poder implementar a Previso
deJogadas e a inteligncia do seu jogo.
Nos quatro desafios, voc ter a oportunidade de adaptar o jogo sugerido e criar
seu prprio jogo: um jogo com personalidade prpria; um jogo com a sua cara!
Voc poder at propor jogos totalmente novos. Mas, para que voc desenvolva
as habilidades pretendidas, os jogos tero que manter algumas das caractersticas
de cada desafio. Em essncia, os quatro jogos precisaro ser aplicaes de quatro
estruturas de dados fundamentais que estudaremos ao longo deste livro: Pilhas,
Filas, Listas Cadastrais e rvores.

vi

Apresentao

Materiais Complementares
Para facilitar sua compreenso de alguns dos conceitos e algoritmos, voc poder assistir a vdeos com explicaes e exemplos.
Alm dos vdeos, os Materiais Complementares de Estruturas de
dados com jogos contm algumas animaes. As animaes lhe
mostraro graficamente a execuo de um trecho de programa.
Voc poder interagir
com as animaes,
avanando a execuo
do programa passo a passo enquanto observa uma
representao visual do que est acontecendo. O
papel dos vdeos e das animaes complementar
a leitura, mas nunca substitu-la. Estude o texto, faa
os exerccios e complemente seu estudo com os
vdeos e animaes dos Materiais Complementares.
Se voc ainda no tiver prtica em programao utilizando interfaces grficas, poder consultar nos Materiais Complementares um
Tutorial de Programao Grfica. Passo a passo, o tutorial lhe
ajudar a instalar uma biblioteca grfica e a desenvolver seu primeiro
jogo. Estude o tutorial em paralelo ao estudo das estruturas de dados.
Coloque um foco em seu estudo: viabilizar o desenvolvimento de seus
quatro jogos. Ser mais produtivo e mais divertido aprender assim.
A biblioteca grfica utilizada no tutorial apenas uma sugesto; voc
poder utilizar a ferramenta grfica de sua preferncia.
Voc encontrar tambm, nos Materiais Complementares, um Banco de Jogos. So jogos-exemplo, desenvolvidos por pessoas como voc, que aceitaram o desafio de aprender estruturas de dados de
um modo bem divertido. E que tal voc desenvolver
jogos legais e disponibiliz-los nesse banco de jogos?
Que tal tornar seus jogos pblicos e conhecidos? Que
tal participar de uma competio de jogos?

Acesso aos Materiais Complementares


Os Materiais Complementares estaro sua disposio a qualquer tempo. Consulte-os
quando quiser a partir do link a seguir:
http://www.elsevier.com.br/edcomjogos
Voc tambm encontrar, ao longo do texto, cones representando os vdeos, as animaes, o Tutorial de Programao Grfica e os jogos-exemplo. Quando encontrar um desses cones, significa que existem materiais complementares pertinentes ao
assunto que voc est estudando e que esse ser um bom momento para voc consultar
esses materiais, caso desejar. Dependendo de qual verso do livro estiver utilizando, voc
poder inclusive acessar os Materiais Complementares clicando nos cones ou fazendo
a leitura do QR-Code associado ao link.
vii

Apresentao

Vdeos

Animaes

Tutorial de Programao Grfica

Banco de Jogos

Notao conceitual
Os algoritmos que estudaremos sero apresentados e discutidos em notao conceitual,
sem construes de uma linguagem de programao especfica. Isso permite que os conceitos sejam compreendidos em sua essncia e implementados em qualquer linguagem.
Para exemplificar a implementao dos conceitos em uma linguagem de programao, em
alguns momentos-chave so apresentados cdigos em C e em C++. Mas perfeitamente
possvel utilizar este livro como referncia e implementar os algoritmos
em qualquer outra linguagem de
programao.

A chave
para um bom
aproveitamento:
praticar
No tenha como meta apenas conhecer ou entender.
Isso no suficiente. Tenha como meta desenvolver
habilidades para projetar estruturas de armazenamento de dados, para implementar essas estruturas
e para utiliz-las na prtica, seja no mundo dos
games, seja em outro contexto. E para realmente
desenvolver essas habilidades, voc precisar fazer
uma coisa: praticar.
Pratique! Pratique muito! Voc encontrar muitos exerccios neste livro e solues para
boa parte deles. Faa os exerccios! Proponha uma primeira soluo, erre, faa de novo,
erre menos, faa de novo e ento acerte! S consulte as solues fornecidas aps propor
sua prpria soluo ou, pelo menos, aps tentar exaustivamente.

Encare o desafio!
Aprenda estruturas de dados. Aprenda pra valer! Em paralelo a isso, desenvolva seus
jogos! D personalidade prpria a eles! Torne-os divertidos! Projete uma interface legal!
Mostre os jogos para seus amigos! Participe de uma competio de jogos! Envolva seus
colegas; desenvolva jogos junto com eles; cresa junto com eles! Divulgue seus jogos
na internet! Faa seus jogos bombar!
Aprender a programar pode ser divertido!
http://www.elsevier.com.br/edcomjogos
viii