Escolar Documentos
Profissional Documentos
Cultura Documentos
Desenvolvendo Jogos 2D
com C# e Microsoft XNA
Desenvolvendo Jogos 2D
com C# e Microsoft XNA
Volume nico Andr Luiz Brazil
Lcia Blondet Baruque
Apoio:
Fundao Cecierj / Extenso
Rua Visconde de Niteri, 1364 Mangueira Rio de Janeiro, RJ CEP 20943-001
Tel.: (21) 2334-1569 Fax: (21) 2568-0725
Presidente
Masako Oya Masuda
Vice-presidente
Mirian Crapez
Material Didtico
B827d
Brazil, Andr Luiz.
Desenvolvendo Jogos 2D com C# e Microsoft XNA: volume nico /
Andr Luiz Brazil, Lcia Blondet Baruque. Rio de Janeiro: Fundao
CECIERJ, 2010.
192p.; 19 x 26,5 cm.
ISBN: 978-85-7648-571-1
1. Jogos 2D. 2. Visual C#. 3. XNA Game Studio. I. Baruque, Lcia
Blondet. I. Ttulo.
CDD: 006.6
2010/1
Referncias Bibliogrficas e catalogao na fonte, de acordo com as normas da ABNT e AACR2.
Governo do Estado do Rio de Janeiro
Governador
Srgio Cabral Filho
Universidades Consorciadas
PREFCIO
intuitiva e de fcil aprendizado. Destina-se principalmente a iniciantes ou
curiosos que estejam interessados em saber mais sobre como se produz
um jogo 2D. O livro assume que o leitor j possui algum conhecimento
de lgica de programao e o ensina a programar jogos na linguagem
C#.
O livro exemplifica a construo de um jogo espacial. completo
e aborda desde a origem e histria da evoluo dos jogos e o panorama
atual dos jogos na educao at conceitos mais rebuscados, como a pre-
parao de um plano para a construo do jogo, orientao a objetos,
exibio de texturas, movimentao de personagens, incorporao de
sons ao jogo, colises entre objetos do jogo e inteligncia artificial.
Ao ler o livro, o leitor tambm aprender a instalar e configurar o
Visual Studio o ambiente que permite a programao em C#. Ao longo
de cada aula, so encontrados diversos exemplos e atividades prticas
para exercitar e consolidar o aprendizado.
CEC I E R J E X T E N S O E M G O V E R N A N A 9
introduo
Java Bsico e Orientao a Objeto | Introduo
CEC I E R J E X T E N S O E M G O V E R N A N A 13
Java Bsico e Orientao a Objeto | Introduo
S TA K E H O L D E R S
So aquelas pessoas A governana corporativa tornou-se um tema dominante
ou instituies que nos negcios por ocasio dos vrios escndalos financeiros
possuem algum tipo ocorridos nos EUA em meados de 2002 Enron, Worldcom e
de envolvimento Tyco, para citar apenas alguns. A gravidade de tais escndalos
profissional ou abalou a confiana de investidores, realando a necessidade
pessoal com uma das empresas de proteger o interesse de seus S TA K E H O L D E R S .
empresa: investido- A governana corporativa tem a gerncia de risco como um
res, clientes, funcio- de seus principais componentes, que so: planejamento estra-
nrios, fornecedores, tgico, liderana, definio de processos, acompanhamento
credores, acionistas, e gerncia de riscos.
usurios, parceiros
etc.
Sociedade da
Informao aquela cujo
modelo de desenvolvimento
ssocial e econmico baseia-se na
info
informao como meio de criao do
conhecimento. Ela desempenha papel
fundamental na produo de riqueza
e na contribuio para o bem-estar e
a qualidade de vida dos cidados.
Tal sociedade encontra-se em
processo de formao e
expanso.
CEC I E R J E X T E N S O E M G O V E R N A N A 15
Java Bsico e Orientao a Objeto | Introduo
CEC I E R J E X T E N S O E M G O V E R N A N A 17
Java Bsico e Orientao a Objeto | Introduo
Referncias Bibliogrficas
AULA
Conhecendo melhor os jogos
Meta da aula
Apresentar as caractersticas dos jogos e
suas categorias de aprendizado.
objetivos
INTRODUO
Vamos aprender
mais sobre os jogos!
Voc gosta de jogos? Que bom! Eles existem por toda parte. Os mais comuns
hoje em dia so os jogos de tabuleiro e os de videogame, mas temos tambm
diversos outros tipos, como os jogos olmpicos, por exemplo.
Voc sabia que o jogo de tabuleiro mais antigo surgiu em 3500 a.C.?
O nome do jogo era Senet. Dizem que era um jogo de corrida para dois jogadores com
um tabuleiro de trinta casas.
O jogo foi encontrado nas tumbas do antigo Egito e simbolizava uma espcie de talism
para ajudar a enfrentar a jornada ps-vida, devido ao elemento sorte e crena egpcia
no determinismo.
The Brooklyn Museum, New York City
1
bilhes de dlares, quase atingindo o faturamento anual da indstria do cinema.
AULA
Veja a seguir dois exemplos de consoles de videogame: o Atari, lanado em
1977, e o XBOX 360, lanado em 2006.
Microsoft
Figura 1.2: Atari 2600, lanado em 1977. Atari Inc.
Fonte: http://upload.wikimedia.org/wikipedia/
commons/thumb/d/dc/Atari2600a.JPG/300px-
Atari2600a.JPG
Figura 1.3: XBOX 360, lanado em 2006.
Fonte: http://upload.wikimedia.org/wikipedia/
commons/thumb/6/69/Xbox360.png/250px-
Xbox360.png
Pense em algum jogo que voc j jogou. Tente agora definir o que
voc acha que caracteriza um jogo. Chris Crawford, grande produtor
de jogos e escritor, relacionou quatro caractersticas necessrias e que
precisam estar presentes em um jogo:
Representao: o jogo apresenta de forma subjetiva um
subconjunto da realidade.
Interao: o jogador faz as coisas acontecerem, modifica o
ambiente e os resultados.
Conflito: a presena constante de desafios e objetivos dentro do
jogo testa a habilidade do jogador.
Segurana: os resultados de um jogo so sempre menos
dramticos que as situaes reais.
CEC I E R J E X T E N S O E M G O V E R N A N A 21
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
Atividade de reflexo
Pense agora num jogo de que voc gosta e indique quais caractersticas, dentre 1
as citadas, voc acha que se encontram presentes nesse jogo. Explique tambm
por que essas caractersticas esto presentes no jogo.
______________________________________________________________________________
______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
________________________________________________________________________
AULA
Agora tente selecionar outros jogos que fazem parte da categoria de aprendizado 3
jogos tradicionais:
( ) Jogo da memria
( ) Jogo de gamo
( ) Counter-strike (CS)
( ) Pacincia
Adventures/quest games
CEC I E R J E X T E N S O E M G O V E R N A N A 23
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
Nemesis informtica
Lucasfilm Games
Figura 1.4: Gruta de Maquin (1989), jogo de Figura 1.5: The Secret of Monkey Island (1990).
adventure brasileiro. Fonte: http://www.worldofmi.com/images/categories/2/
Fonte: http://bertelli.name/stuffs/misc/2007/11/ screen03.gif
grutademaquine.png
Ubisoft Montreal
Simulaes
1
especficas podem ser tipicamente encaixados ou obtidos com
AULA
esse tipo de jogo.
Ensemble Studios
Mumbo Jumbo
Figura 1.7: Age of Empires (1997). Figura 1.8: Lemonade Tycoon II (2004).
Fonte: http://image.com.com/gamespot/ Fonte: http://image.com.com/gamespot/images/
images/screenshots/0/90380/ageof_ 2004/screen0/922248_20040810_screen002.jpg
screen002.jpg
Microsoft Game Studios
Figuras 1.9 e 1.10: Microsoft Flight Simulator X (2006). Simulador de vo para treinar pilotos.
Fonte: http://image.com.com/gamespot/images/2006/284/reviews/931252_20061012_screen001.jpg
Fonte: http://image.com.com/gamespot/images/2006/288/reviews/931252_20061016_screen010.jpg
Jogos de corrida
CEC I E R J E X T E N S O E M G O V E R N A N A 25
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
Sphere Inc.
Figura 1.11: Stunt Driver (1990).
Fonte: http://upload.wikimedia.org/wikipedia/
en/thumb/0/01/Stunt_Driver_splash_screen.jpg/
250px-Stunt_Driver_splash_screen.jpg
EA Black Box, EA UK
Jogos de labirinto
1
obstculos, objetivos ou fases a atingir;
AULA
possveis desafios relativos a tempo, habilidades de memria
e/ou motores e planejamento;
conhecimentos de estratgia, organizao, raciocnio rpido
e tomada de decises sob presso podem ser tipicamente
encaixados nesse tipo de jogo.
Hiroyuki Imabayashi
CEC I E R J E X T E N S O E M G O V E R N A N A 27
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
THQ
1
AULA
Figura 1.16: Brain Age (2006).
Fonte: http://image.com.com/gamespot/images/
titles/product/7/931667.jpg
Criativos/construo de modelos
CEC I E R J E X T E N S O E M G O V E R N A N A 29
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
Chris Sawyer
Figura 1.18: Roller Coaster Tycoon (1999).
Fonte: http://image.com.com/gamespot/images/titles/product/6/132866.jpg
Jogos de tiro/arcade
Figura 1.19: Soldier of Fortune (1999). Figura 1.20: Typing of the Dead (1999), para
Fonte: http://image.com.com/gamespot/images/ matar os zumbis o jogador precisa digitar
screenshots/9/198689/sof_screen001.jpg rapidamente!
Fonte: http://upload.wikimedia.org/wikipedia/
en/thumb/9/9c/Typingdeadgameplay.jpg/250px-
Typingdeadgameplay.jpg
1
AULA
Figura 1.21: Medal of Honor: Airborne (2007).
Fonte: http://image.com.com/gamespot/images/2007/
247/931484_20070905_screen004.jpg
Jogos tradicionais
CEC I E R J E X T E N S O E M G O V E R N A N A 31
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
Interplay
Figura 1.23: ChessMaster 5000 (1996).
Fonte: http://image.com.com/gamespot/images/
screenshots/6/196906/ches5000_screen002.jpg
1
AULA
Agora que voc j aprendeu um pouco sobre as categorias de aprendizado dos 3
jogos, abra o seu navegador e procure na internet um exemplo de jogo para cada
uma das categorias de aprendizado exibidas.
Dica: experimente utilizar sites de informaes sobre jogos, tais como
www.gamespot.com.
CEC I E R J E X T E N S O E M G O V E R N A N A 33
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
Atividade 2
Procure na internet algum exemplo de jogo eletrnico ou de tabuleiro que tenha 4
RESUMO
CEC I E R J E X T E N S O E M G O V E R N A N A 35
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Conhecendo melhor os jogos
1
( x ) Jogo da memria
( x ) Jogo de gamo
( ) Counter-strike (CS)
( x ) Pacincia
Dos quatro jogos j apresentados, o Counter-strike (CS) o nico que no faz
parte da categoria de aprendizado jogos tradicionais. Como ele um jogo de tiro,
pertence categoria de aprendizado jogos de tiro/arcade.
AULA
Idealizando o seu jogo
Meta da aula
Apresentar idias e ferramentas para a
criao dos jogos.
objetivos
Pr-requisitos
Conhecer e identificar as categorias de aprendizado,
conceito abordado na Aula 1.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Idealizando o seu jogo
INTRODUO
Pois bem, agora que voc j conhece um pouco mais sobre jogos, vai aprender
um pouco tambm sobre as ferramentas que ir utilizar para desenvolver seu
prprio jogo, alm dos diversos profissionais envolvidos na criao desses
jogos.
A esta altura, voc deve estar se perguntando o que significam essas duas siglas
esquisitas, C# e XNA. Pois bem, veja a explicao:
C# (pronuncia-se
C-Sharp) uma poderosa linguagem
de programao criada pela Microsoft em
2001. Ela faz parte do ambiente de
programao Visual Studio.
Voc sabia que a linguagem C# tem suas origens baseadas na linguagem C, que foi criada
em 1972 por Dennis Ritchie, um estudante de Fsica e Matemtica da Universidade de
Harvard?
Os sistemas operacionais atuais Windows e Linux (isso mesmo, os que voc usa hoje!) foram
produzidos com o C++, que uma verso evoluda da linguagem C.
2
Existe um ajudante, muito competente por sinal, que vai indicando tudo o
AULA
que voc escreveu errado no seu programa e dando dicas para voc fazer as
correes. Esse ajudante o Visual Studio.
O Visual Studio
um ambiente de programao
tambm
t criado pela Microsoft, que
at
atualmente permite que escrevamos
programas em trs linguagens de
programao diferentes: C#,
Visual Basic e J#.
O Visual Studio costuma chamar um grande amigo quando vai produzir algo
mais complicado, como um jogo. Esse amigo muito esperto e organizado,
e consegue se comunicar mais facilmente com outras partes do computador,
como vdeo e som, por exemplo. O nome dele XNA.
CEC I E R J E X T E N S O E M G O V E R N A N A 39
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Idealizando o seu jogo
O XNA, que em
ingls significa Next
Generation Architecture, ou
a arquitetura da prxima gerao,
uma estrutura de desenvolvimento
FRAMEWORK (F R A M E W O R K ) que possui um conjunto de
uma estrutura de fu
funes especficas para a produo
organizao criada de jogos. Sua primeira verso foi
para padronizar lanada pela Microsoft no
e facilitar o final de 2005.
desenvolvimento de
um programa.
2
imagem do boneco e a posio onde ela vai ficar na tela que o XNA vai cuidar
AULA
do resto, independentemente de o seu computador ser mais lento ou mais
rpido ou de quanta memria ele tem. Moleza! Voc ver esse procedimento
com mais detalhes na Aula 6.
IDEALIZAO DO JOGO
CEC I E R J E X T E N S O E M G O V E R N A N A 41
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Idealizando o seu jogo
Atividade de reflexo 1
Vamos idealizar um jogo! Seguindo as trs diretrizes listadas e o exemplo do plano 2
de jogo, enquadre seu jogo em uma ou mais categorias de aprendizado, detalhe
os personagens principais e crie uma trama em torno deles.
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________
_______________________________________
AULA
__________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
________________________________________________________________________________
___________________________________________________________________________
CEC I E R J E X T E N S O E M G O V E R N A N A 43
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Idealizando o seu jogo
Atividade de reflexo 2
Crie agora as regras bsicas para o seu jogo. Estabelea pelo menos sete regras 2
para o seu jogo com base no que foi dito e no exemplo.
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________
2
chama-se plano de desenvolvimento do jogo. Quando esse plano
AULA
bem feito, pode reduzir as inconsistncias e erros no jogo e facilitar sua
produo.
Uma vez pronto, o plano de desenvolvimento normalmente
repassado a um designer grfico para que ele comece a produzir os
personagens do jogo, baseando-se nos detalhes descritos. A partir desse
ponto, a trilha sonora do jogo tambm pode comear a ser produzida,
com base nas informaes descritas de poca, atmosfera e gnero do
jogo.
CEC I E R J E X T E N S O E M G O V E R N A N A 45
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Idealizando o seu jogo
2
tudo que j foi idealizado, planejado, desenhado e elaborado, ou seja,
AULA
juntar os trabalhos dos outros profissionais e produzir um produto
final, que o jogo propriamente dito. o responsvel por fazer a coisa
acontecer.
Atividade de reflexo 3
De quem voc precisa para produzir o seu jogo? Defina quais dos profissionais 3
citados voc precisa para desenvolver seu jogo e quantas pessoas voc acha que
seriam necessrias para constru-lo. Diga tambm com qual ou quais profissionais voc
se identifica mais, ou seja, qual das funes voc acharia mais interessante assumir se
fizesse parte de uma equipe de desenvolvimento.
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
________________________________________________________________________________
_______________________________________________________________________________
____________________________________________________________________________
CEC I E R J E X T E N S O E M G O V E R N A N A 47
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Idealizando o seu jogo
Atividade online
Agora que voc j sabe mais sobre como idealizar um jogo, ento v sala de aula
virtual e resolva as atividades propostas pelo tutor.
RESUMO
CEC I E R J E X T E N S O E M G O V E R N A N A 49
3
AULA
Instalando o Visual C# e o XNA
Game Studio
Meta da aula
Instalar corretamente as ferramentas
necessrias para a criao dos jogos.
objetivos
Pr-requisitos
Conhecer os conceitos Visual Studio e XNA Game
Studio, abordados na Aula 2; possuir um computador
com o sistema operacional Windows XP ou o Vista.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Instalando o Visual C# e o XNA Game Studio
INTRODUO
Para voc iniciar a criao e a programao dos seus jogos, precisa aprender
como instalar as seguintes ferramentas no seu computador:
Visual C#.
XNA Game Studio.
CEC I E R J E X T E N S O E M G O V E R N A N A 53
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Instalando o Visual C# e o XNA Game Studio
Atividade prtica 1
Siga os trs passos apresentados e verifique qual sistema operacional voc possui 1
e qual pacote de atualizaes voc tem instalado no seu computador.
______________________________________________________________________________
______________________________________________________________________________
3
AULA
Agora que voc j sabe qual verso do sistema operacional est no
seu computador e qual pacote de atualizaes est instalado, verifique
se seu computador est pronto para instalar as ferramentas para a
produo dos jogos.
Voc possui o computador com o sistema operacional Windows
XP com service pack 3 instalado ou ento o Windows Vista com o
service pack 1 instalado?
Caso a sua resposta seja sim, pode pular para o prximo tpico:
instalao da ferramenta Visual C#.
Caso contrrio, a vo os endereos de internet para voc baixar
o pacote de atualizaes service pack 3 para o Windows XP e o service
pack 1 para o Windows Vista.
Service pack 3 para o Windows XP:
http://www.microsoft.com/downloads/details.aspx?FamilyID=5
b33b5a8-5e76-401f-be08-1e1555d4f3d4&DisplayLang=pt-br
Caso seu sistema operacional seja de 64 bits, acesse o link anterior e utilize
a interface de busca da Microsoft para procurar o pacote de atualizaes
correto.
CEC I E R J E X T E N S O E M G O V E R N A N A 55
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Instalando o Visual C# e o XNA Game Studio
Atividade prtica 2
Siga essas orientaes instale o pacote de atualizaes no seu computador. Caso 1
encontre algum erro, escreva o erro encontrado e envie o problema para o frum,
a fim de que seus amigos possam ajud-lo.
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
________________________________________________________________________
3
pacote de atualizaes instalado.
AULA
Instalao da ferramenta Visual C#
CEC I E R J E X T E N S O E M G O V E R N A N A 57
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Instalando o Visual C# e o XNA Game Studio
Atividade prtica 3
Siga as orientaes e instale a ferramenta Visual C# no seu computador. Caso 2
encontre algum erro, escreva o erro encontrado e envie o problema para o frum,
a fim de que seus amigos possam ajud-lo.
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
Aps acessar, voc ver uma tela semelhante tela a seguir. Clique
no boto Download para baixar o arquivo de instalao do XNA
Game Studio.
3
iniciar a instalao.
AULA
Atividade prtica 4
Siga as orientaes e instale a ferramenta XNA Game Studio no seu computador. 2
Caso encontre algum erro, escreva a seguir o erro encontrado e envie o problema
para o frum, a fim de que seus amigos possam ajud-lo.
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
_____________________________________________________________________________
Atividade online
Agora que voc j est com o computador pronto para desenvolver seus jogos, v sala
de aula virtual e resolva as atividades propostas pelo tutor.
CEC I E R J E X T E N S O E M G O V E R N A N A 59
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Instalando o Visual C# e o XNA Game Studio
RESUMO
Na prxima aula, voc ver como criar e codificar classes de objetos utilizando
a linguagem Visual C#.
AULA
Criando a classe Espaonave
Meta da aula
Mostrar como funciona a programao
orientada a objeto.
objetivos
Pr-requisitos
Conhecer a ferramenta XNA Game Studio,
conceito abordado na Aula 2; possuir um plano de
desenvolvimento do jogo, construdo na Aula 2.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Criando a classe Espaonave
4
Repare que, nas regras do nosso plano de jogo espacial, podemos verificar que
AULA
a ideia de uma nave aparece duas vezes, uma para a espaonave do jogador
e outra para as naves inimigas dos soldados do espao.
CEC I E R J E X T E N S O E M G O V E R N A N A 63
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Criando a classe Espaonave
Atributo uma
caracterstica encontrada
em
e um ou mais objetos que
desejamos acrescentar ao
jogo.
Mtodo uma
ao ou procedimento
executado por um ou mais
e
objetos que desejamos
acrescentar ao jogo.
4
AULA
Classe
rvore
??????
(Qualquer uma.
Abstrata.)
CEC I E R J E X T E N S O E M G O V E R N A N A 65
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Criando a classe Espaonave
Classe a
generalizao de um
ou mais objetos. Os objetos
o
pertencentes a uma mesma classe
pert
possuem
po todos os atributos e
mtodos de sua classe.
Voc pode, ento, criar uma classe de objetos chamada Espaonave, que possui
os atributos vida, velocidade e potncia do tiro e os mtodos Atirar, Mover e
Levantar Escudo. A nave do jogador e as naves inimigas dos soldados do espao
so objetos que podem pertencer classe de objetos Espaonave.
4
Atividade
AULA
Com base no plano de jogo que foi elaborado na Aula 2, escolha um dos personagens 2
e defina uma classe para ele, composta de pelo menos 5 atributos e 3 mtodos.
Escreva a seguir o nome da classe, os atributos e os mtodos.
____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
public Espaconave()
{
_energia = 50;
_velocidade = 5;
CEC I E R J E X T E N S O E M G O V E R N A N A 67
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Criando a classe Espaonave
_velocidade_tiro = 5;
}
4
esses atributos.
AULA
Perceba que as palavras string e int aparecem antes do nome
dos atributos. Elas servem para indicar de que tipo so os atributos.
O atributo _nome, por exemplo, do tipo string, ou seja, um conjunto de
caracteres para guardarmos o nome da espaonave. J o atributo _energia
do tipo int, ou seja, s pode armazenar nmeros inteiros. Esse atributo
vai dizer quantos pontos de vida a espaonave ainda tem.
Agora observe este outro trecho:
public Espaconave()
{
_energia = 50;
_velocidade = 5;
_velocidade_tiro = 5;
}
CEC I E R J E X T E N S O E M G O V E R N A N A 69
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Criando a classe Espaonave
4
Atividade
AULA
Com base no exemplo de cdigo apresentado, escreva na linguagem Visual C# o 2
cdigo para descrever a classe que voc idealizou na Atividade 1 desta aula.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_____________________________________________________________________________
_______________________________________________________________________
CEC I E R J E X T E N S O E M G O V E R N A N A 71
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Criando a classe Espaonave
Atividade online
Agora que voc idealizou a sua classe de objetos, v sala de aula virtual e resolva
as atividades propostas pelo tutor.
RESUMO
AULA
Na prxima aula, voc ver como iniciar um projeto de jogo dentro da
ferramenta que acabou de instalar no seu computador, o Visual C#!
CEC I E R J E X T E N S O E M G O V E R N A N A 73
5
AULA
Iniciando o projeto de um jogo
no Visual C#
Metas da aula
Criar e testar o cdigo de um projeto de
jogo produzido por meio das ferramentas
Visual C# e XNA Game Studio.
objetivos
Pr-requisitos
Conhecer a ferramenta XNA Game Studio, conceito
abordado na Aula 2; possuir um computador com as
ferramentas Visual C# e XNA Game Studio instaladas,
conforme explicado na Aula 3; conhecer os conceitos de
classe e objeto, abordados na Aula 4.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
INTRODUO Na aula anterior, voc estudou como instalar as ferramentas Visual C# e XNA
Game Studio, necessrias para a criao de um projeto de jogo. Agora que
voc possui um plano de jogo e as ferramentas disponveis no computador, j
pode iniciar o desenvolvimento do seu projeto de jogo.
Como faremos ento para criar um novo projeto de jogo dentro do Visual
C#?
Precisamos entrar no ambiente Visual C# e iniciar um novo projeto. Para tal:
1) A partir do menu "Iniciar" do Windows, chame a ferramenta Visual C#. Em
seguida, aparecer a tela inicial do Visual C#, contendo:
Uma lista de projetos recentemente acessados pela ferramenta no canto
esquerdo, dentro da seo Recent Projects.
Ainda no canto esquerdo aparecem alguns tutoriais de desenvolvimento,
agrupados na seo Get Started.
Por ltimo aparecem as sees Visual C# Headlines ( esquerda) e Visual C#
Developer News" (ao centro), contendo informativos e notcias relacionadas
ferramenta Visual C#.
3) Voc ver uma tela contendo os tipos de projetos disponveis para o Visual
C#. Selecione no lado esquerdo a opo XNA Game Studio para listar do
lado direito os tipos de projeto correspondentes ao XNA. Por fim, selecione
do lado direito o tipo de projeto Windows Game, ou seja, jogo para Windows.
Na parte inferior da janela, aparecem os seguintes campos:
Name coloque aqui o nome do seu projeto de jogo.
Location indica a pasta onde ser salvo o projeto. Preencha com
C:\ProjetosXNA.
Solution Name significa o nome da soluo. Para projetos grandes, pode
existir mais de uma soluo dentro de um mesmo projeto. Para o nosso caso,
deixe preenchido com o mesmo nome do projeto.
Agora aperte o boto OK para confirmar a criao do seu projeto de jogo.
CEC I E R J E X T E N S O E M G O V E R N A N A 77
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
Atividade prtica 1
Siga os trs passos apresentados e crie um projeto de jogo chamado JogoEspacial, 1
Aps ter criado seu projeto de jogo, voc ver uma janela contendo
um cdigo um pouco estranho. o cdigo de programao do projeto
JogoEspacial, que voc acabou de criar, escrito na linguagem C#. E agora,
o que significa cada parte desse cdigo?
Logo no incio, voc observa uma srie de instrues contendo a
palavra using. Veja s:
using System;
using System.Collections.Generic;
5
using Microsoft.Xna.Framework;
AULA
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;
Biblio-
teca de comandos
ou funes um arquivo que
contm vrias instrues agrupa-
con
das, prontas para serem utili-
da
zadas dentro de outros
projetos.
using Microsoft.Xna.Framework.Audio;
CEC I E R J E X T E N S O E M G O V E R N A N A 79
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
Palavra reservada
aquela com significado
especial para o Visual C#. Palavras
desse
d tipo aparecem na cor azul dentro
d
do cdigo do projeto e no podem ser
utilizadas para dar nome aos objetos
criados dentro do projeto.
5
namespace:
AULA
namespace JogoEspacial
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1: Microsoft.Xna.Framework.Game
{
CEC I E R J E X T E N S O E M G O V E R N A N A 81
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
Herana
uma propriedade que indica
que
q todos os mtodos e atributos de
uma
um classe pai pertencero automatica-
mente tambm classe filha.
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}
5
{
AULA
// TODO: Add your initialization logic here
base.Initialize();
}
Ah! Aqui est a grande diferena entre a estrutura do XNA
e a das outras ferramentas de produo de jogos: organizao.
O mtodo Initialize e os outros a seguir foram criados para ajudar voc,
programador, a estruturar melhor o seu jogo.
Esse mtodo foi criado para voc colocar valores iniciais para os
objetos do seu jogo. Voc poderia, por exemplo, colocar aqui energia_
inicial = 50, indicando que todas as espaonaves teriam 50 pontos de
energia ao iniciar o jogo.
Existe ainda a palavra override, que indica que esse mtodo
Initialize est substituindo outro mtodo com o mesmo nome Initialize.
Como assim? que, quando herdamos os atributos e mtodos da classe
Microsoft.XNA.Network.Game, ela j possua esse mtodo Initialize
tambm. Portanto, estamos substituindo o mtodo Initialize da classe
Microsoft.XNA.Network.Game pelo nosso prprio mtodo Initialize.
Dentro do mtodo Initialize, aparece tambm a instruo
base.Initialize(), que serve para chamar o mtodo Initialize da classe
pai, a Microsoft.XNA.Network.Game. Ela foi colocada aqui para no
perdermos tudo que foi codificado no mtodo Initialize original, que foi
herdado da classe Microsoft.XNA.Network.Game.
Veja os mtodos LoadContent e UnloadContent:
CEC I E R J E X T E N S O E M G O V E R N A N A 83
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
{
// TODO: Unload any non ContentManager content here
}
Esses mtodos foram criados para voc colocar dentro deles todos
os objetos grficos a serem carregados (load) ou descarregados (unload)
dentro do seu jogo, incluindo imagens, texturas, modelos de personagem
etc. Veja tambm que ele inicializa o conjunto de sprites spriteBatch,
deixando-o pronto para que voc possa carregar suas imagens dentro
dele.
Veja agora o mtodo Update:
base.Update(gameTime);
}
5
== ButtonState.Pressed)
AULA
this.Exit();
Isso quer dizer que se (if) a tecla Esc (Buttons.Back) for apertada
(ButtonState.Pressed), o jogo se encerra (this.Exit).
Repare que esse mtodo recebe tambm um parmetro de entrada,
o gameTime, ou seja, o tempo do jogo; esse parmetro ser utilizado
para controlar, entre outras coisas, de quanto em quanto tempo a tela
do jogo ser redesenhada, por exemplo.
Por ltimo, o mtodo Draw:
base.Draw(gameTime);
}
Esse mtodo ser chamado toda vez que a tela do jogo precisar ser
redesenhada, seja porque o tempo passou e a tela precisa ser atualizada
com as naves e os tiros desenhados em uma nova posio, seja para exibir
a famosa mensagem Game Over, quando o jogo acabar.
Qualquer instruo para atualizar graficamente o cenrio ou os
personagens do jogo deve ser includa dentro desse mtodo.
Repare que o XNA j coloca um comando dentro desse mtodo,
o GraphicsDevice.Clear. Esse comando limpa a tela, preenchendo o
fundo com a cor que voc quiser; no caso, foi definida a cor azul (Color.
CornflowerBlue). Para um jogo espacial, seria mais apropriada a cor
preta, no acha?
CEC I E R J E X T E N S O E M G O V E R N A N A 85
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
Atividade prtica 2
Altere o cdigo do jogo e mude a cor de fundo da tela para uma outra cor qualquer, 2
de acordo com seu plano de jogo. Escreva a seguir como ficou o seu mtodo Draw,
aps as alteraes.
______________________________________________________________________________
______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
________________________________________________________________________
public Espaconave()
{
_energia = 50;
_velocidade = 5;
_velocidade_tiro = 5;
}
5
}
AULA
public void Atirar()
{
// Cria um tiro
}
}
Para voc incluir esse cdigo dentro do seu projeto, basta coloc-
lo logo abaixo da classe Game1, aps a chave }, que indica o fim da
classe.
Contudo, esse cdigo apenas define a classe de objetos
Espaonave. O que estamos querendo, na realidade, criar a nave do
jogador dentro do jogo. Para tal, precisaremos:
1) Criar um objeto da classe Espaonave dentro do jogo, que vai
ser a nave do jogador. Vamos dar a esse objeto o nome NaveJogador.
Podemos fazer isso no incio do cdigo do jogo, onde j esto definidos
todos os atributos principais (classe Game1). Veja s como fica:
public class Game1: Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
CEC I E R J E X T E N S O E M G O V E R N A N A 87
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
base.Initialize();
}
base.Initialize();
}
5
antemo que isso que voc tentou fazer no vai dar certo. Por qu?
AULA
Verifique na definio da classe Espaonave como foi criado o atributo
_nome:
private string _nome;
CEC I E R J E X T E N S O E M G O V E R N A N A 89
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
Sobrecarga
de mtodos uma proprie-
dade
d do Visual C# que permite que vrios
mtodos
mt possuam o mesmo nome, desde que
tenham uma forma diferente de ser
chamados.
base.Initialize();
}
Atividade prtica 3
Agora que voc j aprendeu a criar os mtodos de atualizao e acesso para o 3
atributo _nome, faa o mesmo para os demais atributos da classe Espaonave.
Que tal tentar verificar se est tudo certo? Para testar o cdigo do
seu projeto de jogo, selecione a opo Build\Build Solution, conforme a
tela a seguir, ou aperte a tecla F6:
CEC I E R J E X T E N S O E M G O V E R N A N A 91
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
Atividade prtica 4
Teste o cdigo do seu projeto de jogo seguindo as instrues j vistas. Caso o 3
Visual C# exiba algum erro , escreva-o nas linhas a seguir e tente solucion-lo
revendo os exemplos que foram dados nas aulas anteriores e procurando ajuda no
frum. Boa sorte!
______________________________________________________________________________
_______________________________________________________________________________
________________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
____________________________________________________________________________
RESUMO
Para voc criar um novo projeto de jogo no Visual C#, selecione a opo
File/New Project no menu superior.
Em seguida, aparecer uma janela com os tipos de projetos que voc
pode criar. Selecione do lado esquerdo a opo XNA Game Studio e do
lado direito a opo Windows Game.
Em seguida, preencha os campos Name, location e Solution Name com
os valores: JogoEspacial, C:\ProjetosXNA e JogoEspacial. Depois
aperte o boto OK para criar o seu novo projeto de jogo.
Dentro do cdigo do jogo voc ver que existem vrias palavras
reservadas, que aparecem na cor azul: using, namespace, public e class,
por exemplo. Essas palavras so especiais para o Visual C# e no podem
ser utilizadas para nomear objetos.
A grande diferena entre a estrutura do XNA e as outras ferramentas de
produo de jogos a organizao. Os mtodos Initialize, LoadContent,
UnloadContent, Update e Draw foram criados para ajudar voc,
programador, a estruturar melhor seu jogo.
Para voc incluir no seu projeto de jogo o cdigo da classe Espaonave,
que foi visto na Aula 4, basta coloc-lo logo abaixo da classe Game1,
aps a chave }, que indica o fim da classe. Repare que ser necessrio
adicionar tambm novos mtodos dentro da classe Espaonave para
acessar e atualizar os valores dos atributos da classe, que so privados.
Para testar o cdigo do seu projeto de jogo, selecione a opo Build\
Build Solution, ou ento aperte a tecla F6. Caso no obtenha sucesso,
aparecer uma listagem dos erros encontrados; basta que voc clique
duas vezes sobre os erros listados para ir at o local onde est ocorrendo
o problema. Os erros impedem que o cdigo seja executado.
CEC I E R J E X T E N S O E M G O V E R N A N A 93
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Iniciando o projeto de um jogo no Visual C#
AULA
Exibindo e movimentando a sua
espaonave
Metas da aula
Exibir e movimentar a espaonave do
jogador na tela do jogo.
objetivos
Pr-requisitos
Conhecer a ferramenta XNA Game Studio, conceito
abordado na Aula 2; possuir um computador com as
ferramentas Visual C# e XNA Game Studio instaladas,
conforme explicado na Aula 3; conhecer os conceitos de
classe e objeto, abordados na Aula 4; ter iniciado seu
projeto de jogo com a ferramenta Visual C# e acrescen-
tado a classe Espaonave ao jogo,
conforme visto na Aula 5.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
Textura uma
imagem utilizada para
rev
revestir os objetos criados em
duas ou trs dimenses dentro
dua
de um projeto de jogo.
Veja na Figura 6.1 alguns exemplos de imagens que podemos utilizar como
texturas para as espaonaves do jogador e as naves inimigas:
As texturas tambm podem ser utilizadas para dar mais realismo a outros objetos criados
dentro do jogo. Na Figura 6.2, podemos observar alguns exemplos de texturas que podem
ser usadas para revestir objetos como paredes, portas e pisos criados dentro do jogo:
6
AULA
Reveja a nossa classe Espaonave.
public class Espaconave
{
private string _nome;
private int _energia;
private int _velocidade;
private int _potencia_tiro;
private int _velocidade_tiro;
private int _escudo;
public Espaconave()
{
_energia = 50;
_velocidade = 5;
_velocidade_tiro = 5;
}
CEC I E R J E X T E N S O E M G O V E R N A N A 97
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
{
// Cria um tiro
}
}
// Novos atributos
private int _posicaox;
private int _posicaoy;
private Texture2D _textura;
6
_posicaox = 10;
AULA
_posicaoy = 10;
}
CEC I E R J E X T E N S O E M G O V E R N A N A 99
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
Sprite a
definio de uma rea de tela
para o carregamento de texturas.
6
O retngulo ser desenhado nas posies _posicaox e _posicaoy da
AULA
espaonave e ter a altura e a largura iguais s da textura que est sendo
desenhada. Alm disso, tambm estabelecida uma cor de fundo branca
(Color.White) para o desenho.
Atividade prtica 1
Seguindo os cinco passos descritos, abra seu projeto de jogo espacial na ferramenta 1
Visual C# e altere o cdigo da classe Espaonave dentro do seu projeto de jogo
para acrescentar a ele os atributos e os mtodos necessrios para carregar e desenhar
as texturas.
CEC I E R J E X T E N S O E M G O V E R N A N A 101
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
6
esse arquivo e clique no boto Add. Veja a Figura 6.5.
AULA
Figura 6.5: Procurando e selecionando o arquivo de imagem da espaonave.
Fonte: Visual C#.
Atividade prtica 2
Procure na internet uma imagem para a espaonave do jogador e acrescente-a ao seu 1
projeto de jogo, seguindo os trs passos descritos anteriormente. O ideal que essa
imagem seja do tipo jpeg (.jpg) ou portable network graphics (.png). Dica: para encontrar
mais facilmente a imagem, utilize o aplicativo Cooliris: http://www.cooliris.com/.
CEC I E R J E X T E N S O E M G O V E R N A N A 103
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
base.Draw(gameTime);
}
6
AULA
1
Abra o seu projeto de jogo espacial na ferramenta Visual C# e altere o cdigo do seu
projeto de jogo acrescentando a ele as chamadas para os mtodos CarregarTextura
e Desenhar da classe Espaonave, seguindo os dois passos j descritos nesta aula.
CEC I E R J E X T E N S O E M G O V E R N A N A 105
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
Atividade prtica 4
Abra o seu projeto de jogo espacial na ferramenta Visual C# e execute-o para ver 1
se a espaonave vai aparecer na tela do jogo. Caso aparea, altere o cdigo do jogo
para fazer a espaonave do jogador aparecer em outra posio da tela que no seja no
canto superior esquerdo. Caso a espaonave no aparea na tela, reveja o seu cdigo do
projeto de jogo e procure ajuda no frum.
1
W W
W W
4 2
3
6
dentro do mtodo Mover duas variveis temporrias, que so deslo-
AULA
camento_x e deslocamento_y.
Varivel um
valor associado a um nome
que criamos para identificar esse
valor.
CEC I E R J E X T E N S O E M G O V E R N A N A 107
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
{
deslocamento_y = - _velocidade;
}
// Executando o movimento
_posicaox = _posicaox + deslocamento_x;
_posicaoy = _posicaoy + deslocamento_y;
}
6
maxima, int p_posicaoy_maxima)
AULA
{
// Variveis temporrias
int deslocamento_x, deslocamento_y;
deslocamento_x = 0;
deslocamento_y = 0;
CEC I E R J E X T E N S O E M G O V E R N A N A 109
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
Atividade prtica 5
2
Seguindo os dois passos descritos, abra seu projeto de jogo espacial na ferramenta
Visual C# e altere o cdigo da classe Espaonave dentro do seu projeto de jogo
para acrescentar a ele o cdigo do mtodo Mover.
6
Espaconave NaveJogador;
AULA
// Definindo um leitor de teclas do teclado
KeyboardState teclado;
CEC I E R J E X T E N S O E M G O V E R N A N A 111
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
}
if (teclado.IsKeyDown(Keys.Left))
{
NaveJogador.Mover(4, this.Window.ClientBounds
.Width, this.Window.ClientBounds.Height);
}
base.Update(gameTime);
}
Atividade prtica 6
Abra seu projeto de jogo espacial na ferramenta Visual C# e altere o cdigo do 2
seu projeto de jogo acrescentando a ele o atributo leitor das teclas do teclado
(KeyboardState) e as chamadas para o mtodo Mover da classe Espaonave, seguindo
os dois passos descritos. Depois, execute seu projeto de jogo e pressione as setas para
verificar se a espaonave est se movimentando corretamente.
Atividade prtica 7
2
Com base no conhecimento adquirido para criar e desenhar espaonaves, abra 1
seu projeto de jogo espacial na ferramenta Visual C# e crie dentro do seu jogo
uma espaonave inimiga chamada Soldado do Espao e programe sua movimentao
sempre na direo 3 (andar para baixo).
6
AULA
Existe uma pequena falha no cdigo de movimentao da classe Espaonave. 2
Quando a espaonave se movimenta para o canto direito ou inferior da tela, ela
ainda some. Tente melhorar o mtodo Mover da classe Espaonave para que isso no
acontea. Dica: Utilize a altura e a largura da textura da espaonave (_textura.Width
e _textura.Height).
Atividade online
Agora que voc j est com o seu cdigo de projeto do jogo ajustado para exibir e
movimentar a espaonave, v sala de aula virtual e resolva as atividades propostas
pelo tutor.
RESUMO
CEC I E R J E X T E N S O E M G O V E R N A N A 113
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Exibindo e movimentando a sua espaonave
AULA
Acrescentando tiros e um cenrio
espacial ao seu jogo
Metas da aula
Atirar com a espaonave e movimentar o
cenrio de fundo do jogo.
objetivos
Pr-requisitos
Estar familiarizado com a ferramenta XNA Game
Studio, conceito abordado na Aula 2; possuir um
computador com as ferramentas Visual C# e XNA
Game Studio instaladas, conforme explicado na Aula 3;
reconhecer os conceitos de classe e objeto, abordados
na Aula 4; ter o seu projeto de jogo com a ferramenta
Visual C# atualizado para exibir e movimentar a
espaonave do jogador, conforme visto na Aula 6.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
CEC I E R J E X T E N S O E M G O V E R N A N A 117
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
7
identificar quais aes um tiro vai desempenhar no jogo:
AULA
mover;
explodir.
Repare que nem todos os tiros iro explodir. Dessa forma, vamos
nos concentrar primeiro em criar um mtodo para movimentar os tiros: o
mtodo Mover da classe Tiro. Ele uma verso simplificada do mtodo
Mover da classe Espaonave.
Observe que o tiro possui sua prpria direo. Assim, o mtodo
Mover da classe Tiro no receber a direo como parmetro. Tambm
no precisaremos verificar se o tiro saiu da tela, como fazamos no
mtodo Mover da classe Espaonave. Veja como ficou:
public void Mover()
{
// Variveis temporrias
int deslocamento_x, deslocamento_y;
deslocamento_x = 0;
deslocamento_y = 0;
CEC I E R J E X T E N S O E M G O V E R N A N A 119
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
// Executando o movimento
_posicaox = _posicaox + deslocamento_x;
_posicaoy = _posicaoy + deslocamento_y;
}
7
_textura = Texture2D.FromFile(p_dispositivo,
AULA
p_local);
}
p_sprite.Begin();
p_sprite.Draw(_textura, new Rectangle(
_posicaox, _posicaoy, _textura.Width,
_textura.
Height), Color.White);
p_sprite.End();
}
Atividade prtica 1
Seguindo os trs passos descritos, abra seu projeto de jogo espacial na ferramenta 1
CEC I E R J E X T E N S O E M G O V E R N A N A 121
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
7
{
AULA
// Criando efetivamente a espaonave do jogador
NaveJogador = new Espaconave();
base.Initialize();
}
CEC I E R J E X T E N S O E M G O V E R N A N A 123
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
NaveJogador.Mover(2, this.Window.
ClientBounds.Width, this.Window.ClientBounds.
Height);
}
if (teclado.IsKeyDown(Keys.Down))
{
NaveJogador.Mover(3, this.Window.
ClientBounds.Width, this.Window.ClientBounds.
Height);
}
if (teclado.IsKeyDown(Keys.Left))
{
NaveJogador.Mover(4, this.Window.
ClientBounds.Width, this.Window.ClientBounds.
Height);
}
base.Update(gameTime);
}
Perceba que utilizamos um novo comando para percorrer a lista
de tiros, o comando foreach. Para cada tiro na lista de tiros disparados,
chamamos o mtodo Mover desse tiro (oTiro.Mover) para que ele atu-
alize sua posio e se movimente pela tela do jogo.
O mtodo de exibio do jogo (Draw) tambm precisa ser
atualizado. Acrescente uma instruo para desenhar cada um dos
tiros do jogo, de forma semelhante ao que fizemos anteriormente para
movimentar os tiros:
protected override void Draw(GameTime
gameTime)
7
GraphicsDevice.Clear(Color.Black);
AULA
// TODO: Add your drawing code here
NaveJogador.Desenhar(spriteBatch);
base.Draw(gameTime);
}
CEC I E R J E X T E N S O E M G O V E R N A N A 125
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
CEC I E R J E X T E N S O E M G O V E R N A N A 127
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
{
NaveJogador.Mover(2, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
if (teclado.IsKeyDown(Keys.Down))
{
NaveJogador.Mover(3, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
if (teclado.IsKeyDown(Keys.Left))
{
NaveJogador.Mover(4, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
//Apertou o tiro
if (teclado.IsKeyDown(Keys.Space))
{
NaveJogador.Atirar(graphics.GraphicsDevice,
../../../Content/Imagens/tiro.png,
TirosDisparados);
}
base.Update(gameTime);
}
7
barra de espaos foi pressionada. Caso tenha sido, chamamos o mtodo
AULA
Atirar da espaonave do jogador, passando para ele o dispositivo grfico
do jogo, o local da imagem do tiro e a lista de tiros do jogo.
Repare tambm que utilizamos a imagem tiro.png para os tiros da
espaonave do jogador. Esse arquivo de imagem precisa ser acrescentado
ao projeto de jogo, da mesma forma como fizemos na Aula 6 para a
imagem da espaonave do jogador.
CEC I E R J E X T E N S O E M G O V E R N A N A 129
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
if (teclado.IsKeyDown(Keys.Down))
{
NaveJogador.Mover(3, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
if (teclado.IsKeyDown(Keys.Left))
{
NaveJogador.Mover(4, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
if (teclado.IsKeyDown(Keys.Space))
//Apertou o tiro
{
NaveJogador.Atirar(graphics.
GraphicsDevice, ../../../Content/Imagens/
tiro.png, TirosDisparados);
}
7
do tiro (oTiro. Mover). Testamos se a posio do tiro (coordenadas x e
AULA
y) menor que 1 ou maior que a largura (this.Window.ClientBounds.
Width) ou a altura (this.Window. ClientBounds.Height) da tela. Nesse
caso, retiramos o tiro da lista de tiros do jogo por meio do comando
Remove(oTiro).
Atividade prtica 2
1
Seguindo as respostas dadas para as trs questes levantadas, abra seu projeto de
jogo espacial na ferramenta Visual C# e incorpore a criao de tiros ao seu jogo, de
forma que eles sejam criados sempre que o jogador pressionar a barra de espao.
Atividade prtica 3
Existe uma pequena falha no jogo que faz com que vrios tiros sejam criados de 1
uma s vez quando o jogador aperta apenas uma vez a barra de espao. Ajuste o
cdigo do jogo para que, a cada vez que o jogador aperte a barra de espao, apenas
um nico tiro seja gerado.
Dicas:
Utilize o comando IsKeyUp(Keys.Space) para verificar quando a barra de espao deixou
de ser apertada.
Crie no jogo um atributo do tipo verdadeiro/falso (boolean) para controlar exatamente
quando a barra de espao j foi pressionada ou solta.
Atividade prtica 4
Existe outro pequeno problema no jogo. Quando o tiro criado, ele sai do canto 1
esquerdo da espaonave. Modifique o cdigo do jogo para fazer com que o tiro
saia do meio da espaonave.
Dicas:
Crie na classe Tiro os mtodos para atualizar a posio do tiro (coordenadas x e y).
Utilize o comando _textura.Width para obter a largura da textura da espaonave.
CEC I E R J E X T E N S O E M G O V E R N A N A 131
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
7
AULA
// Colocando um nome para a nave do jogador
NaveJogador.Nome(Falco Justiceiro);
apertou_tiro = false;
base.Initialize();
}
CEC I E R J E X T E N S O E M G O V E R N A N A 133
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
7
ClientBounds.Width, this.Window.
AULA
ClientBounds.
Height);
}
if (teclado.IsKeyDown(Keys.Space) &&
!apertou_tiro) //Apertou o tiro
{
NaveJogador.Atirar(graphics.
GraphicsDevice, ../../../Content/Imagens/
tiro.png, TirosDisparados);
apertou_tiro = true;
}
if (teclado.IsKeyUp(Keys.Space) &&
apertou_tiro)
{
apertou_tiro = false;
}
CEC I E R J E X T E N S O E M G O V E R N A N A 135
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
7
oTiro.Desenhar(spriteBatch);
AULA
}
base.Draw(gameTime);
}
CEC I E R J E X T E N S O E M G O V E R N A N A 137
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando tiros e um cenrio espacial ao seu jogo
Atividade prtica 5
2
Seguindo os cinco passos descritos, abra seu projeto de jogo espacial na ferramenta
Visual C# e altere-o para carregar um cenrio de fundo para o jogo.
Atividade prtica 6
2
Agora faa com que o cenrio de fundo do jogo se mova na posio horizontal, ao
invs da vertical. Dica: utilize a instruo this.Window.ClientBounds.Width para
obter a altura da tela do jogo.
Atividade online
Agora que voc j est com seu cdigo de projeto do jogo ajustado para adicionar tiros
e o cenrio de fundo ao jogo, v sala de aula virtual e resolva as atividades propostas
pelo tutor.
RESUMO
Da mesma forma que voc criou uma classe para as suas espaonaves,
preciso criar uma classe para todos os tiros disparados no jogo, a classe
Tiro. Ela ser composta pelos atributos potncia, direo, velocidade,
posio e imagem e os mtodos Mover, CarregarTextura, Desenhar,
Textura, PosicaoX e PosicaoY.
CEC I E R J E X T E N S O E M G O V E R N A N A 139
8
AULA
Acrescentando sons ao seu jogo
Meta da aula
Incorporar trilha sonora e som de tiros ao
jogo espacial.
objetivos
Pr-requisitos
Conhecer a ferramenta XNA Game Studio, conceito
abordado na Aula 2; possuir um computador com as
ferramentas Visual C# e XNA Game Studio instaladas,
conforme explicado na Aula 3; ter seu projeto de jogo
atualizado conforme o contedo da Aula 7, que inclui a
produo de tiros pela espaonave.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
INTRODUO
O XACT, ou Microsoft
Cross-Plataform Audio Creation
Tool, uma ferramenta includa no
pacote
pac de instalao do XNA Game Studio
que
qu serve para criar bancos de sons para
utilizar nos jogos desenvolvidos
com o XNA.
CEC I E R J E X T E N S O E M G O V E R N A N A 143
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
8
name o texto: SonsJogoEspacial. A Figura 8.4 ilustra o procedimento.
AULA
Em seguida, clique no boto Save para criar seu novo projeto de sons.
Atividade prtica 1
Seguindo os procedimentos descritos, abra a ferramenta XACT e crie um projeto 1
de sons para o seu jogo. importante que esse projeto de sons seja criado dentro
da pasta C:\ProjetosXNA\JogoEspacial\JogoEspacial\Content\audio de seu projeto
de jogo.
Agora j temos o projeto de sons, mas ele est vazio. Para adicionar
os sons ao nosso projeto de jogo, precisamos criar um banco de ondas
(Wave Bank) e um banco de sons (Sound Bank) dentro do projeto. Para
tal, siga estes passos:
CEC I E R J E X T E N S O E M G O V E R N A N A 145
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
8
jogador.
AULA
Ateno: A ferramenta XACT s trabalha com arquivos de som
do tipo WAV (Wave Audio File).
Procure nas pastas do seu computador esses dois arquivos e copie-os
para a pasta audio do seu projeto de jogo. Em seguida, abra a pasta audio
e arraste e solte cada um deles dentro da janela do banco de ondas, para
adicion-los ao seu projeto de sons.
Repare que aparecero agora dois arquivos em vermelho dentro
da janela do banco de ondas (Wave Bank), como mostra a Figura 8.8.
Os dois arquivos escolhidos foram musica.wav e tiro.wav.
CEC I E R J E X T E N S O E M G O V E R N A N A 147
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
Figura 8.10: Arrastando arquivos do seu banco de ondas para seu banco de sons.
Fonte: XACT.
8
Basta salv-lo utilizando a opo File\Save Project do menu superior da
AULA
ferramenta XACT, ou apertando as teclas Control + S.
Atividade prtica 2
1
Seguindo os passos descritos no tpico anterior, copie os arquivos de som para den-
tro da pasta audio do seu projeto de jogo e acrescente-os a seu projeto de sons.
CEC I E R J E X T E N S O E M G O V E R N A N A 149
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
8
{
AULA
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
CEC I E R J E X T E N S O E M G O V E R N A N A 151
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
8
gameTime)
AULA
{
// Atualizando o dispositivo de audio do jogo
audioEngine.Update();
CEC I E R J E X T E N S O E M G O V E R N A N A 153
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
8
if (teclado.IsKeyDown(Keys.Down))
AULA
{
NaveJogador.Mover(3, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
if (teclado.IsKeyDown(Keys.Left))
{
NaveJogador.Mover(4, this.Window.
ClientBounds.Width, this.Window.
ClientBounds.Height);
}
if (teclado.IsKeyDown(Keys.Space) &&
!apertou_tiro) //Apertou o tiro
{
NaveJogador.Atirar(graphics.
GraphicsDevice, ../../../Content/
Imagens/tiro.png, TirosDisparados);
apertou_tiro = true;
CEC I E R J E X T E N S O E M G O V E R N A N A 155
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
Atividade prtica 3
Seguindo os passos descritos nos tpicos "Acrescentando o projeto de sons ao seu 2
projeto de jogo" e "Utilizando os sons dentro do projeto de jogo", abra seu projeto
de jogo espacial na ferramenta Visual C# e incorpore a ele o projeto de sons que voc
criou. Faa tocar a trilha sonora do jogo e quando algum tiro for disparado pela espao-
nave do jogador, o som dele tambm dever ser tocado.
Atividade prtica 4
Aps ter completado a Atividade Prtica 3 e executado o jogo, repare que a trilha 2
sonora toca apenas uma nica vez. Altere seu projeto de sons do jogo utilizando
a ferramenta XACT e configure o arquivo da trilha sonora do jogo para que ele toque
indefinidamente, reiniciando a trilha sonora sempre que a msica chegar ao fim.
Dica: Utilize apenas a ferramenta XACT para alterar seu projeto de sons. O ajuste deve
ser feito clicando no arquivo de som da trilha sonora localizada dentro da janela de banco
de sons (SoundBank).
Atividade online
Agora que voc j est com seu cdigo de projeto do jogo ajustado para tocar os sons,
v sala de aula virtual e resolva as atividades propostas pelo tutor.
AULA
Para acrescentar sons a seu projeto de jogo, voc precisa utilizar a
ferramenta XACT (Microsoft Cross-Plataform Audio Creation Tool). Ela
j est includa no pacote de instalao do XNA Game Studio.
Inicie a ferramenta XACT clicando no boto Iniciar do Windows e selecione
no menu a opo Programas\Xna Game Studio\Tools\Microsoft Cross-
Plataform Audio Creation Tool (XACT). Para criar um novo projeto de
sons, basta selecionar a opo File\New Project e definir como local
de salvamento para o projeto a pasta Content/audio do seu projeto
de jogo.
Agora voc precisa criar um novo banco de ondas e um banco de sons no
seu projeto de sons. Para tal, clique com o boto direito no item Wave
Bank do menu esquerdo do XACT e selecione a opo New Wave Bank.
Faa o mesmo para o banco de sons.
O XACT suporta apenas arquivos de som do tipo WAV (Wave Audio File).
Para acrescentar arquivos de sons ao seu projeto de sons, mantenha
aberta a janela do banco de ondas (Wave Bank) e arraste os arquivos
desejados para dentro dela. Em seguida, abra a janela do banco de sons
(Sound Bank) e arraste para o canto inferior dela (abaixo de Cue Name)
os arquivos que esto dentro da janela do banco de ondas (Wave Bank).
Ao final, salve o projeto de jogo utilizando a opo File\Save Project do
menu superior.
Voc ainda precisa incluir o projeto de sons dentro do seu projeto de
jogo. Arraste a pasta audio na qual voc colocou todos os seus arquivos
de som e o projeto de sons para dentro da pasta Content no Solution
Explorer do seu projeto de jogo.
Para poder tocar os sons dentro do jogo, ser necessrio ajustar o cdigo
do projeto de jogo criando trs atributos novos: AudioEngine, WaveBank
e SoundBank. Alm disso, voc precisa alterar tambm o mtodo de
carga de contedo (LoadContent), para que seja feita a carga dos
arquivos correspondentes do seu projeto de sons dentro do projeto de
jogo. Por fim, acrescente a chamada audioEngine.Update ao mtodo de
atualizao do jogo (Update) e utilize o comando soundBank.PlayCue
para tocar os sons.
CEC I E R J E X T E N S O E M G O V E R N A N A 157
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Acrescentando sons ao seu jogo
AULA
Tratando colises de objetos
no jogo
Meta da aula
Fazer desaparecer da tela do jogo a
espaonave inimiga quando
um tiro acert-la.
objetivo
Pr-requisitos
Estar familiarizado com a ferramenta XNA Game
Studio, conceito abordado na Aula 2; possuir um
computador com as ferramentas Visual C# e XNA Game
Studio instaladas, conforme explicado na Aula 3; ter
seu projeto de jogo atualizado conforme o contedo da
Aula 7, que inclui a produo de tiros pela espaonave.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
Voc se lembra da lei da Fsica que diz que dois objetos no podem ocupar o
mesmo lugar no espao ao mesmo tempo?
Exatamente! Para trazer um pouco mais de realismo ao jogo, agora voc vai
aprender como tratar as colises entre os objetos do jogo.
9
JOGO
AULA
Veja agora como funciona um teste de coliso simples.
Textura 1
(x1, y2)
(x2, y2)
Textura 2
CEC I E R J E X T E N S O E M G O V E R N A N A 161
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
AULA
mtodos para configurar as posies x e y da espaonave e retornar
textura:
CEC I E R J E X T E N S O E M G O V E R N A N A 163
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
9
{
AULA
GraphicsDevice.Clear(Color.Black);
CEC I E R J E X T E N S O E M G O V E R N A N A 165
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
Atividade prtica 1
Procure uma imagem para a espaonave inimiga. Seguindo os procedimentos 1
descritos anteriormente, abra seu projeto de jogo na ferramenta Visual C# e acres-
cente ao seu jogo a espaonave inimiga e uma verificao de colises simples entre os
tiros disparados e a espaonave inimiga, fazendo a nave inimiga e o tiro desaparecerem
da tela do jogo aps a coliso.
9
DO JOGO
AULA
Voc vai agora aprender a verificar colises de forma mais deta-
lhada.
O mtodo ColisaoSimples resolve a maioria das colises existen-
tes. Contudo, algumas texturas possuem uma parte transparente. Para
esses casos, precisaremos utilizar um teste mais avanado de coliso
das texturas.
Para o teste avanado de coliso de texturas, vamos verificar:
se as reas das texturas esto sobrepostas ColisaoSimples;
caso estejam, se dentro da rea sobreposta existe algum ponto
no transparente da textura 1 sobrepondo-se outro ponto no trans-
parente da textura 2.
Textura1.GetData<uint>(BitsTextura1);
Textura2.GetData<uint>(BitsTextura2);
CEC I E R J E X T E N S O E M G O V E R N A N A 167
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
9
para extrair as cores dos pontos existentes nas duas texturas. Essas
AULA
cores so armazenadas dentro de duas listas, que so BitsTextura1 e
BitsTextura2.
Por fim, toda a rea sobreposta entre as duas texturas percorrida
utilizando dois comandos de repetio (for) encadeados. Dentro deles
realizado um teste para ver se em alguma parte da rea sobreposta
ambos os pontos so coloridos, ou seja, se o valor da cor de uma posio
na lista BitsTextura1 maior que 20 e se o valor da cor nessa mesma
posio na lista BitsTextura2 tambm maior que 20. Isso configura a
coliso avanada de texturas.
Vamos agora modificar nosso teste de coliso entre os tiros
disparados e a espaonave inimiga no mtodo de atualizao do jogo
(Update), trocando a chamada ColisaoSimples por ColisaoAvancada:
CEC I E R J E X T E N S O E M G O V E R N A N A 169
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
Atividade prtica 2
Seguindo os procedimentos descritos, abra seu projeto de jogo na ferramenta 1
Visual C# e acrescente a seu jogo a verificao de colises avanadas entre os
tiros e a espaonave inimiga, fazendo a nave inimiga e o tiro desaparecerem da tela do
jogo aps a coliso.
Atividade prtica 3
2
Agora que voc j sabe verificar as colises, programe dentro do seu projeto de
jogo um teste de coliso avanada entre a espaonave do jogador e a espaonave
inimiga.
Atividade online
Agora que voc j est com seu cdigo de projeto do jogo ajustado para verificar coli-
ses entre objetos do jogo, v sala de aula virtual e resolva as atividades propostas
pelo tutor.
AULA
Uma coliso simples ocorre quando a rea ocupada por uma textura
invadida por alguma outra textura do jogo.
Para verificar colises entre objetos no seu projeto de jogo, voc precisa
testar se o retngulo correspondente primeira textura intercepta o
retngulo referente a uma segunda textura.
necessrio acrescentar uma espaonave inimiga ao jogo para realizar
essas verificaes. Isso implica:
o acrescentar o atributo NaveInimiga ao cdigo de criao do jogo;
o configurar o atributo NaveInimiga dentro do mtodo de inicializao
do jogo (Initialize);
o acrescentar os mtodos PosicaoX, PosicaoY e Textura classe
Espaconave para configurar a posio das espaonaves e obter a
textura da espaonave;
o carregar a textura da espaonave inimiga no mtodo de carga de
contedo do jogo (LoadContent);
o desenhar a espaonave inimiga no mtodo de exibio do jogo
(Draw).
necessrio tambm acrescentar o teste de coliso simples entre o tiro
disparado e a espaonave inimiga no mtodo de atualizao do jogo
(Update).
Para o teste avanado de coliso de texturas, verifica-se:
o se as reas das texturas esto sobrepostas ColisaoSimples;
o caso estejam, se dentro da rea sobreposta existe algum ponto no
transparente da textura 1 sobrepondo outro ponto no transparente
da textura 2.
CEC I E R J E X T E N S O E M G O V E R N A N A 171
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tratando colises de objetos no jogo
10
AULA
duradouros (exploses)
no jogo
Meta da aula
Fazer explodir a espaonave inimiga
quando um tiro acert-la.
objetivo
Pr-requisitos
Estar familiarizado com a ferramenta XNA Game
Studio, conceito abordado na Aula 2; possuir um
computador com as ferramentas Visual C# e XNA Game
Studio instaladas, conforme explicado na Aula 3; ter
seu projeto de jogo atualizado conforme o contedo
das Aulas 8 e 9, que incluem a gerao de sons para
os eventos do jogo e a verificao de colises entre os
tiros disparados e a espaonave inimiga.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Produzindo efeitos duradouros (exploses) no jogo
Agora vamos trazer um pouco mais de emoo ao jogo! Voc aprender como
produzir exploses e outros efeitos duradouros.
Efeitos duradouros so
aqueles
a que possuem seu incio e fim
in
independentes da frequncia com que
o mtodo de atualizao do jogo
(Update) chamado.
CEC I E R J E X T E N S O E M G O V E R N A N A 175
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Produzindo efeitos duradouros (exploses) no jogo
AULA
// Movendo os tiros do jogo
foreach (Tiro oTiro in TirosDisparados.
GetRange(0,TirosDisparados.Count))
{
oTiro.Mover();
explodiu = true;
CEC I E R J E X T E N S O E M G O V E R N A N A 177
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Produzindo efeitos duradouros (exploses) no jogo
AULA
Procure uma imagem para a exploso. Seguindo os quatro passos descritos ante- 1
riormente, abra seu projeto de jogo na ferramenta Visual C# e programe uma
exploso com durao de 100 milissegundos dentro do seu jogo, quando a espaonave
inimiga for acertada por algum tiro. Faa tambm a nave inimiga e o tiro desaparecerem
da tela aps o fim da exploso.
Atividade prtica 2
1
Agora que voc j sabe programar as exploses, crie dentro do seu projeto de jogo
um efeito de exploso de ambas as espaonaves quando ocorrer uma coliso entre
a espaonave do jogador e a espaonave inimiga.
Atividade online
Agora que voc j est com o seu cdigo de projeto do jogo ajustado para produzir as
exploses, v sala de aula virtual e resolva as atividades propostas pelo tutor.
CEC I E R J E X T E N S O E M G O V E R N A N A 179
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Produzindo efeitos duradouros (exploses) no jogo
RESUMO
Pr-requisitos
Estar familiarizado com a ferramenta XNA Game
Studio, conceito abordado na Aula 2; possuir um
computador com as ferramentas Visual C# e XNA Game
Studio instaladas, conforme explicado na Aula 3; ter
seu projeto de jogo atualizado conforme o contedo da
Aula 9, que inclui a verificao de colises entre os tiros
disparados e a espaonave inimiga.
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tornando a espaonave inimiga mais inteligente
INTRODUO Na ltima aula, voc aprendeu a programar efeitos duradouros dentro do jogo,
como exploses. Acrescentamos o efeito de exploso quando uma espaonave
inimiga era acertada pelo tiro disparado pela nave do jogador.
Agora, vamos trazer um pouco mais de inteligncia ao jogo. Voc ver
como programar algumas tticas para a espaonave inimiga se tornar mais
desafiadora.
Inteligncia artificial
a programao de aes automticas
a serem
se tomadas pelos objetos do jogo, de
acordo com os acontecimentos nele
ocorridos.
AULA
inimiga, com base nas aes do jogador durante o jogo.
Quais aes automticas podem tornar a espaonave inimiga mais
inteligente?
esquivar-se dos tiros disparados pelo jogador;
atirar na espaonave do jogador;
aproximar-se da espaonave do jogador.
CEC I E R J E X T E N S O E M G O V E R N A N A 183
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tornando a espaonave inimiga mais inteligente
// Fugir de um tiro
public void Escapar(int p_posicaox_objeto, int
p_posicaoy_objeto, int p_posicaox_maxima, int p_
posicaoy_maxima)
{
// Testando se o objeto est prximo da espaonave
if ( Proximo(50, p_posicaox_objeto, p_posicaoy_
objeto) )
{
// Tiro abaixo e esquerda - mover para cima e
direita
if (p_posicaox_objeto >= _posicaox && p_posicaoy_
objeto > _posicaoy)
{
Mover(1, p_posicaox_maxima, p_posicaoy_maxima);
Mover(4, p_posicaox_maxima, p_posicaoy_maxima);
}
AULA
as posies-limite x e y da tela.
Observe que o movimento da espaonave sempre na direo
contrria posio atual do objeto em relao a ela, ou seja, se o objeto
est abaixo e esquerda da nave, por exemplo, esta se movimentar
para cima e para a direita.
Passo 3: Acrescente ao mtodo de atualizao do jogo (Update)
uma instruo para chamar o mtodo Escapar da espaonave inimiga.
O melhor local para fazer isso logo aps a movimentao de cada
tiro. Veja como ficou:
CEC I E R J E X T E N S O E M G O V E R N A N A 185
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tornando a espaonave inimiga mais inteligente
Atividade prtica 1
Seguindo os trs passos descritos, abra seu projeto de jogo na ferramenta Visual 1
C# e programe o mtodo Escapar da classe Espaonave para fazer a nave inimiga
tentar escapar dos tiros disparados pela do jogador.
AULA
// Cria um tiro
oTiro = new Tiro(_potencia_tiro, p_direcao_tiro,
_velocidade_tiro, _posicaox, _posicaoy);
CEC I E R J E X T E N S O E M G O V E R N A N A 187
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tornando a espaonave inimiga mais inteligente
Atividade prtica 2
Seguindo os trs passos descritos, abra seu projeto de jogo na ferramenta Visual 2
Aproximando-se do jogador
AULA
e esquerda
if (p_posicaox_objeto >= _posicaox && p_
posicaoy_objeto > _posicaoy)
{
Mover(3, p_posicaox_maxima, p_posicaoy_maxima);
Mover(2, p_posicaox_maxima, p_posicaoy_maxima);
}
CEC I E R J E X T E N S O E M G O V E R N A N A 189
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tornando a espaonave inimiga mais inteligente
Atividade prtica 3
Seguindo os dois passos descritos, abra seu projeto de jogo na ferramenta Visual 3
C# e programe o mtodo Aproximar da classe Espaonave para fazer a espao-
nave inimiga agir na ofensiva, aproximando-se da nave do jogador quando esta chega
perto dela.
Atividade prtica 4
Existe uma pequena falha no cdigo do jogo. Repare que a espaonave inimiga 1
tenta escapar dos seus prprios tiros. Ajuste o cdigo do jogo de forma que a nave
inimiga tente escapar apenas dos tiros disparados pela espaonave do jogador.
Dica: Ser necessrio criar na classe Tiro um atributo para indicar quem disparou o tiro.
Atividade online
Agora que voc j est com o seu cdigo de projeto do jogo ajustado para tornar a
espaonave inimiga mais inteligente, v sala de aula virtual e resolva as atividades
propostas pelo tutor.
RESUMO
CEC I E R J E X T E N S O E M G O V E R N A N A 191
Desenvolvendo Jogos 2D com C# e Microsoft XNA | Tornando a espaonave inimiga mais inteligente
9 788576 485711