SlideShare uma empresa Scribd logo
1 de 85
Baixar para ler offline
Desenvolvimento de Jogos 2D
com XNA
Kleber de Oliveira Andrade
pdjkleber@gmail.com

Universidade de São Paulo – USP

Escola de Engenharia de São Carlos – EESC
Departamento de Dinâmica de Sistemas e Controles
Maio/2010
• Bacharel em Ciência da Computação
– Escola de Engenharia de Piracicaba (EEP)
– Título: Um algoritmo evolutivo para adaptação dos NPCs em um
jogo de ação.

• Mestrando em Engenharia Mecânica
– Escola de Engenharia de São Carlos (USP/EESC)
– Título: Planejadores neurais para manobra de baliza de um
automóvel de passeio utilizando sensor laser, ultrassônicos e
visão artificial.

• Jogador a mais de 20 anos desde a época do Atari.
2010 © Kleber de Oliveira Andrade

2
• Uma breve Introdução
• A Indústria de Jogos Digitais
• Visão sobre o XNA
• Conhecimentos básicos de XNA
• Revisão de Programação C#
• Criando um Jogo 2D completo
2010 © Kleber de Oliveira Andrade

3
2010 © Kleber de Oliveira Andrade

4
1958: “Tennis for Two” jogo que
funcionava em um osciloscópio
(Willy Higinbotham)

1961: “Space Wars” jogo
desenvolvido no computador
PDP-1 por Steve Russel, o jogo
tinha 2Kb

2010 © Kleber de Oliveira Andrade

5
Década de 70 é considerada uma Odisséia
Comercial, muitos jogos foram desenvolvidos.
Depois do Crash da Indústria
em 1983/84, surgiu uma
revolução nos jogos

1979: Asteroids
A década de 90,
muitos
consoles
foram lançados e em
1992 uma nova
evolução com os
jogos FPS.

Donkey Kong (1984)

Wolf 3D (1992)
2010 © Kleber de Oliveira Andrade

6
Qualidade gráfica evidência a
evolução no desenvolvimento de
jogos, assim como sua Inteligência
Artificial.

God of War III
Jogos que envolvem centenas de
profissionais das mais diversas
áreas, e altos orçamentos.

X Games SnoCross
2010 © Kleber de Oliveira Andrade

7
• A discussão não se restringe apenas à gráficos ou
inteligência artificial.
• O que esperar então ?
–
–
–
–
–

Facilidade de criação ?
Comunidades ?
Interface com o jogador ?
Inovação?
Prazer de jogar por horas e horas ?
2010 © Kleber de Oliveira Andrade

8
The Harvest 3

Racing Game
2010 © Kleber de Oliveira Andrade

City Rain
9
2010 © Kleber de Oliveira Andrade

10
• É uma das mais rentáveis do mundo
– Faturamentos de 2007 supera a indústria de
música e cinema juntos.

• Parece coisa de criança, mas não é.
– 75% dos chefes de família jogam
– Média de idade de jogadores: 30 anos
– Média de idade de compradores: 37 anos
Dados da ESA (“2008 video-game indutry facts”), http://www.theesa.com

2010 © Kleber de Oliveira Andrade

11
• Serious Game (Treinamento e Capacitação)

Econorte (Oniria)

Battlezone

Blossom
2010 © Kleber de Oliveira Andrade

12
• Advergames (Propagandas)

1983 - Pepsi Invaders

1993 - Cool Spot (7-Up)

Rooftop Racer

1990 - Yo! Noid (Domino’s Pizza)
2010 © Kleber de Oliveira Andrade

13
• Educacionais (Jogos cujo objetivo é ensinar)

Project Beauty

Alice

Big Brain Academy: Wii Degree
2010 © Kleber de Oliveira Andrade

14
• “God” games (Softwares Toys)

Black & White

The Sims
2010 © Kleber de Oliveira Andrade

15
• Criar jogos demanda muito conhecimento técnico.
• Acesso aos Kits de desenvolvimento
– Restrito
– Caro
– Complexo

• Desenvolver para qual plataforma?
• Faltavam comunidades!
• Quais as chances de sucesso para quem esta começando?
2010 © Kleber de Oliveira Andrade

16
2010 © Kleber de Oliveira Andrade

17
Xna Não é um Acrônimo

2010 © Kleber de Oliveira Andrade

18
2010 © Kleber de Oliveira Andrade

19
• Para desenvolver / jogar no PC
– Nenhum!
– Tudo através de ferramentas gratuitas (Visual C# Express
Edition, XNA Game Studio e recursos da comunidade).

• Para desenvolver / jogar no Xbox 360.
– Licença XNA Creators Club
• US$ 99,00 por ano ou
• US$ 49,00 por 4 meses

2010 © Kleber de Oliveira Andrade

20
• Principal API utilizada pra desenvolvimento de jogo
• Aplicativos desenvolvidos em C++
• Desenvolvimento para Windows
• API construída sobre o DirectX
• Jogos desenvolvidos com linguagens .NET
• Desenvolvimento para plataforma Windows
• API construída utilizando como base o MDX (substituiu o MDX)
• Aplicativos desenvolvidos em C#
• Desenvolvimento para Windows, Xbox 360 e Zune

2010 © Kleber de Oliveira Andrade

21
Jogos

Extended
Framework

Core
Framework

Plataforma

Legenda:

Starter Kits

Code

Content

Application Model

Graphics

Audio

Direct3D

XNA Provê

Components

Content Pipeline

Input

Math

XACT

Você cria
2010 © Kleber de Oliveira Andrade

Storage

XINPUT

Network

XCONTENT

Comunidade
22
Jogos

Extended
Framework

Core

Starter Kits

Code

Content

Application Model

Graphics

Audio

Components

Content Pipeline

Input

Math

Storage

Network

Framework

Plataforma

Direct3D

XACT

2010 © Kleber de Oliveira Andrade

XINPUT

XCONTENT

23
Modifique os jogos e crie o seu próprio

2010 © Kleber de Oliveira Andrade

24
Jogos

Extended
Framework

Core

Starter Kits

Code

Content

Application Model

Graphics

Audio

Components

Content Pipeline

Input

Math

Storage

Network

Framework

Plataforma

Direct3D

XACT

2010 © Kleber de Oliveira Andrade

XINPUT

XCONTENT

25
Mantenha-se focado no jogo e não em qual plataforma
está rodando
•
•
•
•
•

Faz o serviço chato e trabalhoso para você
Desenvolvimento acelerado
Possui recursos avançados
Extensível
Game

2010 © Kleber de Oliveira Andrade

26
• Liberdade de escolha
– Ferramentas de criação de conteúdo
– Game engines

• Menos código para a criação
– Mais tempo para a criação do jogo

• Forte integração entre código e conteúdo
– Build de código e de conteúdo unificados
2010 © Kleber de Oliveira Andrade

27
2010 © Kleber de Oliveira Andrade

28
Jogos

Extended
Framework

Core

Starter Kits

Code

Content

Application Model

Graphics

Audio

Components

Content Pipeline

Input

Math

Storage

Network

Framework

Plataforma

Direct3D

XACT

2010 © Kleber de Oliveira Andrade

XINPUT

XCONTENT

29
• Fornece recursos de renderização de baixo nível
• Construído em cima do Direct3D 9
• APIs atualizadas que seguem as regras do .NET
–
–
–
–

Efeitos
Recursos
Lock / Unlock
Vertex streams

• Recursos fornecidos
– Model, Mesh e Bones
– Textures
– Effects e Shaders
2010 © Kleber de Oliveira Andrade

30
• Baseado no XACT (Cross-Platform Audio Creation
Tool)
– Adiciona sons
– Ajusta propriedades
– Construir bancos de sons

• Fácil integração para desenvolvedores
– Acesse-os via seus nomes lógicos
– Looping, streaming, e gerenciamento de memória
– Sem gerenciamento de buffer de baixo nível

2010 © Kleber de Oliveira Andrade

31
• Torna fácil a obtenção de dados de entrada
• Dispositivos
– Keyboard
– Mouse (apenas para Windows)
– Xbox 360 (Gamepad, guitarra, tambores, volantes, etc...)

• Modelo de programação imediato
– Não demanda inicialização
– Não demanda gerenciamento de estados
– Basicamente tira uma fotografia dos estados de todos os botões
2010 © Kleber de Oliveira Andrade

32
• Fornece um jeito fácil para ler e salvar informações
do jogo
• Atua como um sistema de arquivos virtuais
– Arquivos armazenados no local correto de cada plataforma
– Suporta múltiplos dispositivos de armazenamento e perfis
no Xbox 360

• Baseado em Streams, o que facilita a integração com
o System.IO
2010 © Kleber de Oliveira Andrade

33
• Biblioteca de funções matemáticas para jogos
– Vector, Matriz, Quaternion, Plane, AABB, Sphere, Ray,
Frustum, Curve
– Regra-da-mão-direita por default
– Fácil integração
– Testes de interesecções
– Facilitadores para movimentos
2010 © Kleber de Oliveira Andrade

34
• Conexão entre Xbox 360 e PC
• Conexão local e via LIVE!
• Inclui suporte a LIVE! MatchMaking
– Conecta você a pessoas com perfil semelhantes

• Na versão 3.1
– Ranked matchmaking
– Venda de jogos na Live Community!
– Conexão de até 8 Zunes em rede ad-hoc

2010 © Kleber de Oliveira Andrade

35
Jogos

Extended
Framework

Core

Framework

Plataforma

Starter Kits

Code

Content

Application Model

Graphics

Direct3D

Audio

Components

Content Pipeline

Input

XACT

2010 © Kleber de Oliveira Andrade

Math

XINPUT

Storage

XCONTENT

36
Distortion

Skinning & Animation

3D Particles

Shatter Effects
2010 © Kleber de Oliveira Andrade

37
• AbduX
– Jogo completo, feito em 4 dias, por 1 pessoa
– Explora recursos gráficos, sons, input e fontes no XNA além
de reconhecimento de voz

2010 © Kleber de Oliveira Andrade

38
• Dungeon Quest
– Desenvolvido em apenas 4 dias
– Equipe: 1 desenvolvedor e 1 designer

2010 © Kleber de Oliveira Andrade

39
2010 © Kleber de Oliveira Andrade

40
2010 © Kleber de Oliveira Andrade

41
• Para desenvolver:
– Windows XP SP2 ou superior
– Visual C# 2008 Expresse Edition ou versão Professional
– Runtime do DirectX

• Para rodar:
–
–
–
–
–

Placa de vídeo compatível com DirectX 9.0 e Shaders 2.0
Runtime do XNA e do DirectX
PC: Windows XP SP2 ou superior
Xbox 360: deve haver HD
Zune: pronto para rodar!

2010 © Kleber de Oliveira Andrade

42
• É uma ferramenta de desenvolvimento (IDE) criada pela
Microsoft.
• Sua interface é simples e intuitiva.
• Muito recomendada para usuários iniciantes em
programação na linguagem C#.
• A versão Express não tem custo e você pode registrá-la.
– Visual C# 2008 Express Edition

2010 © Kleber de Oliveira Andrade

43
• O XNA é um framework gratuito e robusto com
interface amigável desenvolvido pela Microsoft para
criar jogos tanto para PC quanto para o console XBox
360.
– XNA 3.1 (lançada em 03/07/2009)

• Ao concluir o download do XNA 3.1 é hora de
instalar. Após possuir o XNA instalado em seu
computado, chega a hora de ver se tudo está
funcionando corretamente.
2010 © Kleber de Oliveira Andrade

44
• File  New Project

Solution Explorer

2010 © Kleber de Oliveira Andrade

45
• Após criar seu novo projeto, você já pode testá-lo.
• Para isso, aperte F5.
• Se tudo der certo, espera-se o seguinte resultado.

2010 © Kleber de Oliveira Andrade

46
Initialize()

LoadContent()

Update()

Game Loop

Término da aplicação
Draw()

UnloadContent()

2010 © Kleber de Oliveira Andrade

47
2010 © Kleber de Oliveira Andrade

48
• Pasta Content, botão direito do mouse... Add -> Existing Item
• Criar uma variável do tipo Texture2D
Texture2D image;

• Carregar a imagem (método LoadContent)
image = Content.Load<Texture2D>(“fantasma”);

• Desenhar a imagem na tela (método Draw)
spriteBatch.Begin();
spriteBatch.Draw(imagem, new Vector(100.0f, 100.0f), Color.White);
spriteBatch.End();

2010 © Kleber de Oliveira Andrade

49
• Espera-se obter o seguinte resultado ao compilar o
exemplo.

2010 © Kleber de Oliveira Andrade

50
• Adicione duas novas variáveis.
Vector2 position = new Vector2(100.0f, 100.0f);
KeyboardState keyState;

• No método Draw, troque new Vector2(100.0f, 100.0f) pela variável
position que criamos.

• No método Update, adicione as seguintes linhas
keyState = Keyboard.GetState();

if (keysboardState.IsKeyDown(Keys.Up)) position.Y -= 5.0f;
if (keysboardState.IsKeyDown(Keys.Down)) position.Y += 5.0f;
if (keysboardState.IsKeyDown(Keys.Left)) position.X -= 5.0f;
if (keysboardState.IsKeyDown(Keys.Right)) position.X += 5.0f;
2010 © Kleber de Oliveira Andrade

51
• Comente as linhas do método Update que manipulam a
imagem com o teclado.
• Adicione uma variável de estado para o mouse
MouseState mState;

• No método Update digite.
mState = Mouse.GetState();
position.X = mState.X - image.Width / 2;
position.Y = mState.Y - image.Height / 2;

• Para fazer a seta aparecer coloque no Initialize.
IsMouseVisible = true;

2010 © Kleber de Oliveira Andrade

52
• Add -> New Item

2010 © Kleber de Oliveira Andrade

53
• É gerado um arquivo xml. Mude a seguinte informação dele
<FontName>Arial</FontName>

• Crie uma variável do tipo SpriteFont
SpriteFont sFont;

• Carregue a font que você criou no método LoadContent
sFont = Content.Load<SpriteFont>(“fontArial”);

• Escreva as informações na tela dentro do método Draw, entre
os comandos Begin() e End()
spriteBatch.DrawString(sFont, "X = " + position.X.ToString(), new
Vector2(10.0f, 10.0f), Color.White);
spriteBatch.DrawString(sFont, "Y = " + position.Y.ToString(), new
Vector2(10.0f, 30.0f), Color.White);
2010 © Kleber de Oliveira Andrade

54
• Espera-se obter o seguinte resultado ao compilar o
exemplo.

2010 © Kleber de Oliveira Andrade

55
• Adicione as seguintes linhas
movimentos do personagem.

2010 © Kleber de Oliveira Andrade

após

fazer

os

56
• Adicione a música na pasta Content do seu projeto
Add -> Existent Item

• Declare uma variável do tipo Song
Song music;

• Carregar a música no LoadContent
music = Content.Load<Song>(“music”);

2010 © Kleber de Oliveira Andrade

57
• Para tocar a música digite o seguinte código também
no LoadContent
MediaPlayer.Play(music);
• Para fazer a música ficar em loop infinito digite:
MediaPlayer.IsRepeating = true;

2010 © Kleber de Oliveira Andrade

58
• Adicione o efeito sonoro na pasta Content do seu
projeto
Add -> Existent Item

• Declare uma variável do tipo SoundEffect
SoundEffect collision;

• Carregar a música no LoadContent
collision = Content.Load<SoundEffect>(“collision”);
2010 © Kleber de Oliveira Andrade

59
• Declare uma váriavel de colisão como booleana
bool collsion;

• No método Update, deixe collision sempre como
falso e quando acontecer uma colisão do fantasma
com a parede troque o valor para verdadeiro.
• Então verifica se collision é verdadeiro e toque o
som.
if (collision) sound.Play();
2010 © Kleber de Oliveira Andrade

60
Raio r2

Raio r1

Colisão em X
Centro C2

Colisão em Y

Centro C1

Existe colisão se:
dist(c1,c2) < r1 + r2
Colisão completa
2010 © Kleber de Oliveira Andrade

61
• GameComponent
– Automatiza alguma métodos sobrecarregando-os, menos a
parte de desenho
– Exemplo prático

• DrawableGameComponent
– Automatiza alguma métodos sobrecarregando-os, inclusive
a parte de desenho
– Exemplo prático

• GameServices
– Disponibiliza serviços de objetos para outras classes
– Exemplo prático
2010 © Kleber de Oliveira Andrade

62
2010 © Kleber de Oliveira Andrade

63
• A Linguagem C#:
– É uma linguagem orientada a objeto, moderna, desenhada
a fim de aumentar a produtividade do programador. C# é
utilizado por milhares de programadores e analistas e
provê acesso total a tecnologia utilizando o .Net
Framework, O Compact Framework e mais recentemente o
XNA Framework

2010 © Kleber de Oliveira Andrade

64
• namespace – é usada para declarar um escopo. Este
escopo permite você organizar o código e oferece
uma maneira parar criar tipos exclusivos.

2010 © Kleber de Oliveira Andrade

65
• #region e #endregion – directiva para incluir uma
região dentro do código, facilitando a vida do
programador, podendo este visualizar apenas o
código de interesse no momento.

2010 © Kleber de Oliveira Andrade

66
• Comentários – /* ... */ e //

2010 © Kleber de Oliveira Andrade

67
• Using – mesmo conceito do #include da linguagem
C/C++ ou import da linguagem Java

com using

sem using
2010 © Kleber de Oliveira Andrade

68
• Variáveis:
Tipos C#

Valores possíveis de se armazenar

bool

true ou false (valores booleanos)

byte

0 a 255 (8 bits)

sbyte

-128 a 127 (8 bits)

char

Um caractere qualquer (16 bits)

decimal

±1.0 x 10-28 a ±7.9 x 1028 (128 bits)

double

±5.0 x 10-324 a ±1.7 x 10308 (64 bits)

float

±1.5 x 10-45 a ±3.4 x 1038 (32 bits)

int

-2,147,483,648 a 2,147,483,647 (32 bits)

uint

0 a 4,294,967,295 (32 bits)

long

-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (64 bits)

ulong

0 a 18,446,744,073,709,551,615 (64 bits)

object

Qualquer tipo

short

-32,768 a 32,767 (16 bits)

ushort

0 a 65,535 (16 bits)

string

Seqüência de caracteres (16 bits por caractere)

2010 © Kleber de Oliveira Andrade

69
• Operadores
Category

Operator(s)

Associativity

Primary

(x) x.y f(x) a[x] x++ x- - new typeof sizeof checked unchecked

Left

Unary

+ - ! ~ ++x - -x (T)x

Left

Multiplicative

* / %

Left

Additive

+ -

Left

Shift

<< >>

Left

Relational

< > <= >= is

Left

Equality

== !=

Right

Logical AND

&

Left

Logical XOR

^

Left

Logical OR

|

Left

Conditional AND

&&

Left

Conditional OR

||

Left

Ternary

? :

Right

Assignment

= *= /= %= += -= <<= >>= &= ^= |=

Right

2010 © Kleber de Oliveira Andrade

70
• Vetores Multidimensionais (arrays):

2010 © Kleber de Oliveira Andrade

71
• Entrada e Saída padrão:

2010 © Kleber de Oliveira Andrade

72
• Estrutura condicional IF/ELSE:

2010 © Kleber de Oliveira Andrade

73
• Laço de repetição FOR:

2010 © Kleber de Oliveira Andrade

74
• Laço de repetição WHILE:

2010 © Kleber de Oliveira Andrade

75
• Laço de repetição FOREACH:
– O laço foreach é usado quando queremos percorrer todos os
elementos de um array (matriz) ou de coleções de dados, tais como
uma ArrayList.

2010 © Kleber de Oliveira Andrade

76
• Listas:

2010 © Kleber de Oliveira Andrade

77
• Tratamento de erros:

2010 © Kleber de Oliveira Andrade

78
• Classes
• Construtor
• Atributos e métodos

2010 © Kleber de Oliveira Andrade

79
• Herança, Polimorfismo, Encapsulamento e
Enumeradores.

2010 © Kleber de Oliveira Andrade

80
2010 © Kleber de Oliveira Andrade

81
2010 © Kleber de Oliveira Andrade

82
• “XNA Tap”
– Construção de um jogo
simples
– Construção de um
gerenciador de telas
– O jogador deve acertar as
baratas com o jornal

2010 © Kleber de Oliveira Andrade

83
•
•
•
•

•

Sharp, John. Microsoft Visual C#: Passo a passo (Tradução: Altair Dias Caldas de
Moraes). Porto Alegre : Bookman, 2007. 504 p. ISBN 978-85-60031-17-7.
Kleber Andrade. Curso de XNA. http://kleberandrade.wordpress.com/xna –
[acessado em abril de 2010].
Sharp Games. http://www.sharpgames.net - [acessado em abril de 2010]
XNA Developer Center, http://msdn.microsoft.com/xna/ - [acessado em março de
2010]
XNA Creators Club, http://creators.xna.com – [acessado em abril 2010]

2010 © Kleber de Oliveira Andrade

84
Obrigado !
Kleber de Oliveira Andrade
pdjkleber@gmail.com
http://kleberandrade.wordpress.com

Mais conteúdo relacionado

Semelhante a Curso (2010) - Desenvolvimento de Jogos 2D com XNA

A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisKelvin Oliveira
 
Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Felipe Pedroso
 
Interfaces de Games para Diferentes Telas
Interfaces de Games para Diferentes TelasInterfaces de Games para Diferentes Telas
Interfaces de Games para Diferentes TelasPedro Kayatt
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaEllison Leão
 
Palestra - A Dinâmica do Mercado de Jogos Eletrônicos
Palestra - A Dinâmica do Mercado de Jogos EletrônicosPalestra - A Dinâmica do Mercado de Jogos Eletrônicos
Palestra - A Dinâmica do Mercado de Jogos EletrônicosFabio Lima
 
TDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games MiddlewareTDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games Middlewaretdc-globalcode
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus PartyJosé Farias
 
Palestra Indústria de Jogos - Estrutura e Organização da Cadeia Produtiva
Palestra Indústria de Jogos - Estrutura e Organização da Cadeia ProdutivaPalestra Indústria de Jogos - Estrutura e Organização da Cadeia Produtiva
Palestra Indústria de Jogos - Estrutura e Organização da Cadeia ProdutivaFabio Lima
 
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameFLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameLucas Mousinho
 
Xna Touch Campus Party
Xna Touch  Campus PartyXna Touch  Campus Party
Xna Touch Campus PartyJosé Farias
 
Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013José Farias
 
Desenvolvendo aplicações com Kinect
Desenvolvendo aplicações com KinectDesenvolvendo aplicações com Kinect
Desenvolvendo aplicações com KinectErick Mendonça
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoesFábio Costa
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoesFábio Costa
 

Semelhante a Curso (2010) - Desenvolvimento de Jogos 2D com XNA (20)

Apresentação TCC Games
Apresentação TCC GamesApresentação TCC Games
Apresentação TCC Games
 
Computação no Desenvolvimento de Jogos Digitais
Computação no Desenvolvimento de Jogos DigitaisComputação no Desenvolvimento de Jogos Digitais
Computação no Desenvolvimento de Jogos Digitais
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos Digitais
 
Comparativo entre Engines de Jogos em 3d
Comparativo entre Engines de Jogos em 3dComparativo entre Engines de Jogos em 3d
Comparativo entre Engines de Jogos em 3d
 
Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8
 
Interfaces de Games para Diferentes Telas
Interfaces de Games para Diferentes TelasInterfaces de Games para Diferentes Telas
Interfaces de Games para Diferentes Telas
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma Xna
 
Palestra - A Dinâmica do Mercado de Jogos Eletrônicos
Palestra - A Dinâmica do Mercado de Jogos EletrônicosPalestra - A Dinâmica do Mercado de Jogos Eletrônicos
Palestra - A Dinâmica do Mercado de Jogos Eletrônicos
 
Mobile Game Development.pptx
Mobile Game Development.pptxMobile Game Development.pptx
Mobile Game Development.pptx
 
TDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games MiddlewareTDC 2013 SP | Trilha Games: Acelerando Games Middleware
TDC 2013 SP | Trilha Games: Acelerando Games Middleware
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus Party
 
Palestra Indústria de Jogos - Estrutura e Organização da Cadeia Produtiva
Palestra Indústria de Jogos - Estrutura e Organização da Cadeia ProdutivaPalestra Indústria de Jogos - Estrutura e Organização da Cadeia Produtiva
Palestra Indústria de Jogos - Estrutura e Organização da Cadeia Produtiva
 
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGameFLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
FLISOL 2015 - Desenvolvimento de jogos para Linux com MonoGame
 
Oficina kinect
Oficina kinectOficina kinect
Oficina kinect
 
Projeto de Jogos
Projeto de JogosProjeto de Jogos
Projeto de Jogos
 
Xna Touch Campus Party
Xna Touch  Campus PartyXna Touch  Campus Party
Xna Touch Campus Party
 
Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013
 
Desenvolvendo aplicações com Kinect
Desenvolvendo aplicações com KinectDesenvolvendo aplicações com Kinect
Desenvolvendo aplicações com Kinect
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoes
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoes
 

Mais de Kleber de Oliveira Andrade

Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...
Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...
Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...Kleber de Oliveira Andrade
 
Estratégias de monetização em aplicativos móveis e jogos
Estratégias de monetização em aplicativos móveis e jogosEstratégias de monetização em aplicativos móveis e jogos
Estratégias de monetização em aplicativos móveis e jogosKleber de Oliveira Andrade
 
Palestra (2014) - Jogos eletrônicos aplicados em reabilitação
Palestra (2014) - Jogos eletrônicos aplicados em reabilitaçãoPalestra (2014) - Jogos eletrônicos aplicados em reabilitação
Palestra (2014) - Jogos eletrônicos aplicados em reabilitaçãoKleber de Oliveira Andrade
 
Palestra (2014) - O mundo do desenvolvimento de jogos
Palestra (2014) - O mundo do desenvolvimento de jogosPalestra (2014) - O mundo do desenvolvimento de jogos
Palestra (2014) - O mundo do desenvolvimento de jogosKleber de Oliveira Andrade
 
Palestra (2010) - Serious games: Um mercado em exploração
Palestra (2010) - Serious games: Um mercado em exploraçãoPalestra (2010) - Serious games: Um mercado em exploração
Palestra (2010) - Serious games: Um mercado em exploraçãoKleber de Oliveira Andrade
 
CPBR2012 - Reabilitação de Pacientes através da Robótica e de Games
CPBR2012 - Reabilitação de Pacientes através da Robótica e de GamesCPBR2012 - Reabilitação de Pacientes através da Robótica e de Games
CPBR2012 - Reabilitação de Pacientes através da Robótica e de GamesKleber de Oliveira Andrade
 
Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...
Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...
Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...Kleber de Oliveira Andrade
 

Mais de Kleber de Oliveira Andrade (9)

Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...
Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...
Doutorado - Adaptação de Dificuldade em Jogos de Reabilitação Auxiliados por ...
 
O Mundo do Desenvolvimento de Jogos
O Mundo do Desenvolvimento de JogosO Mundo do Desenvolvimento de Jogos
O Mundo do Desenvolvimento de Jogos
 
Estratégias de monetização em aplicativos móveis e jogos
Estratégias de monetização em aplicativos móveis e jogosEstratégias de monetização em aplicativos móveis e jogos
Estratégias de monetização em aplicativos móveis e jogos
 
Jogos, Computação e Robótica
Jogos, Computação e RobóticaJogos, Computação e Robótica
Jogos, Computação e Robótica
 
Palestra (2014) - Jogos eletrônicos aplicados em reabilitação
Palestra (2014) - Jogos eletrônicos aplicados em reabilitaçãoPalestra (2014) - Jogos eletrônicos aplicados em reabilitação
Palestra (2014) - Jogos eletrônicos aplicados em reabilitação
 
Palestra (2014) - O mundo do desenvolvimento de jogos
Palestra (2014) - O mundo do desenvolvimento de jogosPalestra (2014) - O mundo do desenvolvimento de jogos
Palestra (2014) - O mundo do desenvolvimento de jogos
 
Palestra (2010) - Serious games: Um mercado em exploração
Palestra (2010) - Serious games: Um mercado em exploraçãoPalestra (2010) - Serious games: Um mercado em exploração
Palestra (2010) - Serious games: Um mercado em exploração
 
CPBR2012 - Reabilitação de Pacientes através da Robótica e de Games
CPBR2012 - Reabilitação de Pacientes através da Robótica e de GamesCPBR2012 - Reabilitação de Pacientes através da Robótica e de Games
CPBR2012 - Reabilitação de Pacientes através da Robótica e de Games
 
Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...
Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...
Mestrado - Sistema Neural Reativo para o Estacionamento Paralelo com uma Únic...
 

Curso (2010) - Desenvolvimento de Jogos 2D com XNA

  • 1. Desenvolvimento de Jogos 2D com XNA Kleber de Oliveira Andrade pdjkleber@gmail.com Universidade de São Paulo – USP Escola de Engenharia de São Carlos – EESC Departamento de Dinâmica de Sistemas e Controles Maio/2010
  • 2. • Bacharel em Ciência da Computação – Escola de Engenharia de Piracicaba (EEP) – Título: Um algoritmo evolutivo para adaptação dos NPCs em um jogo de ação. • Mestrando em Engenharia Mecânica – Escola de Engenharia de São Carlos (USP/EESC) – Título: Planejadores neurais para manobra de baliza de um automóvel de passeio utilizando sensor laser, ultrassônicos e visão artificial. • Jogador a mais de 20 anos desde a época do Atari. 2010 © Kleber de Oliveira Andrade 2
  • 3. • Uma breve Introdução • A Indústria de Jogos Digitais • Visão sobre o XNA • Conhecimentos básicos de XNA • Revisão de Programação C# • Criando um Jogo 2D completo 2010 © Kleber de Oliveira Andrade 3
  • 4. 2010 © Kleber de Oliveira Andrade 4
  • 5. 1958: “Tennis for Two” jogo que funcionava em um osciloscópio (Willy Higinbotham) 1961: “Space Wars” jogo desenvolvido no computador PDP-1 por Steve Russel, o jogo tinha 2Kb 2010 © Kleber de Oliveira Andrade 5
  • 6. Década de 70 é considerada uma Odisséia Comercial, muitos jogos foram desenvolvidos. Depois do Crash da Indústria em 1983/84, surgiu uma revolução nos jogos 1979: Asteroids A década de 90, muitos consoles foram lançados e em 1992 uma nova evolução com os jogos FPS. Donkey Kong (1984) Wolf 3D (1992) 2010 © Kleber de Oliveira Andrade 6
  • 7. Qualidade gráfica evidência a evolução no desenvolvimento de jogos, assim como sua Inteligência Artificial. God of War III Jogos que envolvem centenas de profissionais das mais diversas áreas, e altos orçamentos. X Games SnoCross 2010 © Kleber de Oliveira Andrade 7
  • 8. • A discussão não se restringe apenas à gráficos ou inteligência artificial. • O que esperar então ? – – – – – Facilidade de criação ? Comunidades ? Interface com o jogador ? Inovação? Prazer de jogar por horas e horas ? 2010 © Kleber de Oliveira Andrade 8
  • 9. The Harvest 3 Racing Game 2010 © Kleber de Oliveira Andrade City Rain 9
  • 10. 2010 © Kleber de Oliveira Andrade 10
  • 11. • É uma das mais rentáveis do mundo – Faturamentos de 2007 supera a indústria de música e cinema juntos. • Parece coisa de criança, mas não é. – 75% dos chefes de família jogam – Média de idade de jogadores: 30 anos – Média de idade de compradores: 37 anos Dados da ESA (“2008 video-game indutry facts”), http://www.theesa.com 2010 © Kleber de Oliveira Andrade 11
  • 12. • Serious Game (Treinamento e Capacitação) Econorte (Oniria) Battlezone Blossom 2010 © Kleber de Oliveira Andrade 12
  • 13. • Advergames (Propagandas) 1983 - Pepsi Invaders 1993 - Cool Spot (7-Up) Rooftop Racer 1990 - Yo! Noid (Domino’s Pizza) 2010 © Kleber de Oliveira Andrade 13
  • 14. • Educacionais (Jogos cujo objetivo é ensinar) Project Beauty Alice Big Brain Academy: Wii Degree 2010 © Kleber de Oliveira Andrade 14
  • 15. • “God” games (Softwares Toys) Black & White The Sims 2010 © Kleber de Oliveira Andrade 15
  • 16. • Criar jogos demanda muito conhecimento técnico. • Acesso aos Kits de desenvolvimento – Restrito – Caro – Complexo • Desenvolver para qual plataforma? • Faltavam comunidades! • Quais as chances de sucesso para quem esta começando? 2010 © Kleber de Oliveira Andrade 16
  • 17. 2010 © Kleber de Oliveira Andrade 17
  • 18. Xna Não é um Acrônimo 2010 © Kleber de Oliveira Andrade 18
  • 19. 2010 © Kleber de Oliveira Andrade 19
  • 20. • Para desenvolver / jogar no PC – Nenhum! – Tudo através de ferramentas gratuitas (Visual C# Express Edition, XNA Game Studio e recursos da comunidade). • Para desenvolver / jogar no Xbox 360. – Licença XNA Creators Club • US$ 99,00 por ano ou • US$ 49,00 por 4 meses 2010 © Kleber de Oliveira Andrade 20
  • 21. • Principal API utilizada pra desenvolvimento de jogo • Aplicativos desenvolvidos em C++ • Desenvolvimento para Windows • API construída sobre o DirectX • Jogos desenvolvidos com linguagens .NET • Desenvolvimento para plataforma Windows • API construída utilizando como base o MDX (substituiu o MDX) • Aplicativos desenvolvidos em C# • Desenvolvimento para Windows, Xbox 360 e Zune 2010 © Kleber de Oliveira Andrade 21
  • 22. Jogos Extended Framework Core Framework Plataforma Legenda: Starter Kits Code Content Application Model Graphics Audio Direct3D XNA Provê Components Content Pipeline Input Math XACT Você cria 2010 © Kleber de Oliveira Andrade Storage XINPUT Network XCONTENT Comunidade 22
  • 23. Jogos Extended Framework Core Starter Kits Code Content Application Model Graphics Audio Components Content Pipeline Input Math Storage Network Framework Plataforma Direct3D XACT 2010 © Kleber de Oliveira Andrade XINPUT XCONTENT 23
  • 24. Modifique os jogos e crie o seu próprio 2010 © Kleber de Oliveira Andrade 24
  • 25. Jogos Extended Framework Core Starter Kits Code Content Application Model Graphics Audio Components Content Pipeline Input Math Storage Network Framework Plataforma Direct3D XACT 2010 © Kleber de Oliveira Andrade XINPUT XCONTENT 25
  • 26. Mantenha-se focado no jogo e não em qual plataforma está rodando • • • • • Faz o serviço chato e trabalhoso para você Desenvolvimento acelerado Possui recursos avançados Extensível Game 2010 © Kleber de Oliveira Andrade 26
  • 27. • Liberdade de escolha – Ferramentas de criação de conteúdo – Game engines • Menos código para a criação – Mais tempo para a criação do jogo • Forte integração entre código e conteúdo – Build de código e de conteúdo unificados 2010 © Kleber de Oliveira Andrade 27
  • 28. 2010 © Kleber de Oliveira Andrade 28
  • 29. Jogos Extended Framework Core Starter Kits Code Content Application Model Graphics Audio Components Content Pipeline Input Math Storage Network Framework Plataforma Direct3D XACT 2010 © Kleber de Oliveira Andrade XINPUT XCONTENT 29
  • 30. • Fornece recursos de renderização de baixo nível • Construído em cima do Direct3D 9 • APIs atualizadas que seguem as regras do .NET – – – – Efeitos Recursos Lock / Unlock Vertex streams • Recursos fornecidos – Model, Mesh e Bones – Textures – Effects e Shaders 2010 © Kleber de Oliveira Andrade 30
  • 31. • Baseado no XACT (Cross-Platform Audio Creation Tool) – Adiciona sons – Ajusta propriedades – Construir bancos de sons • Fácil integração para desenvolvedores – Acesse-os via seus nomes lógicos – Looping, streaming, e gerenciamento de memória – Sem gerenciamento de buffer de baixo nível 2010 © Kleber de Oliveira Andrade 31
  • 32. • Torna fácil a obtenção de dados de entrada • Dispositivos – Keyboard – Mouse (apenas para Windows) – Xbox 360 (Gamepad, guitarra, tambores, volantes, etc...) • Modelo de programação imediato – Não demanda inicialização – Não demanda gerenciamento de estados – Basicamente tira uma fotografia dos estados de todos os botões 2010 © Kleber de Oliveira Andrade 32
  • 33. • Fornece um jeito fácil para ler e salvar informações do jogo • Atua como um sistema de arquivos virtuais – Arquivos armazenados no local correto de cada plataforma – Suporta múltiplos dispositivos de armazenamento e perfis no Xbox 360 • Baseado em Streams, o que facilita a integração com o System.IO 2010 © Kleber de Oliveira Andrade 33
  • 34. • Biblioteca de funções matemáticas para jogos – Vector, Matriz, Quaternion, Plane, AABB, Sphere, Ray, Frustum, Curve – Regra-da-mão-direita por default – Fácil integração – Testes de interesecções – Facilitadores para movimentos 2010 © Kleber de Oliveira Andrade 34
  • 35. • Conexão entre Xbox 360 e PC • Conexão local e via LIVE! • Inclui suporte a LIVE! MatchMaking – Conecta você a pessoas com perfil semelhantes • Na versão 3.1 – Ranked matchmaking – Venda de jogos na Live Community! – Conexão de até 8 Zunes em rede ad-hoc 2010 © Kleber de Oliveira Andrade 35
  • 37. Distortion Skinning & Animation 3D Particles Shatter Effects 2010 © Kleber de Oliveira Andrade 37
  • 38. • AbduX – Jogo completo, feito em 4 dias, por 1 pessoa – Explora recursos gráficos, sons, input e fontes no XNA além de reconhecimento de voz 2010 © Kleber de Oliveira Andrade 38
  • 39. • Dungeon Quest – Desenvolvido em apenas 4 dias – Equipe: 1 desenvolvedor e 1 designer 2010 © Kleber de Oliveira Andrade 39
  • 40. 2010 © Kleber de Oliveira Andrade 40
  • 41. 2010 © Kleber de Oliveira Andrade 41
  • 42. • Para desenvolver: – Windows XP SP2 ou superior – Visual C# 2008 Expresse Edition ou versão Professional – Runtime do DirectX • Para rodar: – – – – – Placa de vídeo compatível com DirectX 9.0 e Shaders 2.0 Runtime do XNA e do DirectX PC: Windows XP SP2 ou superior Xbox 360: deve haver HD Zune: pronto para rodar! 2010 © Kleber de Oliveira Andrade 42
  • 43. • É uma ferramenta de desenvolvimento (IDE) criada pela Microsoft. • Sua interface é simples e intuitiva. • Muito recomendada para usuários iniciantes em programação na linguagem C#. • A versão Express não tem custo e você pode registrá-la. – Visual C# 2008 Express Edition 2010 © Kleber de Oliveira Andrade 43
  • 44. • O XNA é um framework gratuito e robusto com interface amigável desenvolvido pela Microsoft para criar jogos tanto para PC quanto para o console XBox 360. – XNA 3.1 (lançada em 03/07/2009) • Ao concluir o download do XNA 3.1 é hora de instalar. Após possuir o XNA instalado em seu computado, chega a hora de ver se tudo está funcionando corretamente. 2010 © Kleber de Oliveira Andrade 44
  • 45. • File  New Project Solution Explorer 2010 © Kleber de Oliveira Andrade 45
  • 46. • Após criar seu novo projeto, você já pode testá-lo. • Para isso, aperte F5. • Se tudo der certo, espera-se o seguinte resultado. 2010 © Kleber de Oliveira Andrade 46
  • 47. Initialize() LoadContent() Update() Game Loop Término da aplicação Draw() UnloadContent() 2010 © Kleber de Oliveira Andrade 47
  • 48. 2010 © Kleber de Oliveira Andrade 48
  • 49. • Pasta Content, botão direito do mouse... Add -> Existing Item • Criar uma variável do tipo Texture2D Texture2D image; • Carregar a imagem (método LoadContent) image = Content.Load<Texture2D>(“fantasma”); • Desenhar a imagem na tela (método Draw) spriteBatch.Begin(); spriteBatch.Draw(imagem, new Vector(100.0f, 100.0f), Color.White); spriteBatch.End(); 2010 © Kleber de Oliveira Andrade 49
  • 50. • Espera-se obter o seguinte resultado ao compilar o exemplo. 2010 © Kleber de Oliveira Andrade 50
  • 51. • Adicione duas novas variáveis. Vector2 position = new Vector2(100.0f, 100.0f); KeyboardState keyState; • No método Draw, troque new Vector2(100.0f, 100.0f) pela variável position que criamos. • No método Update, adicione as seguintes linhas keyState = Keyboard.GetState(); if (keysboardState.IsKeyDown(Keys.Up)) position.Y -= 5.0f; if (keysboardState.IsKeyDown(Keys.Down)) position.Y += 5.0f; if (keysboardState.IsKeyDown(Keys.Left)) position.X -= 5.0f; if (keysboardState.IsKeyDown(Keys.Right)) position.X += 5.0f; 2010 © Kleber de Oliveira Andrade 51
  • 52. • Comente as linhas do método Update que manipulam a imagem com o teclado. • Adicione uma variável de estado para o mouse MouseState mState; • No método Update digite. mState = Mouse.GetState(); position.X = mState.X - image.Width / 2; position.Y = mState.Y - image.Height / 2; • Para fazer a seta aparecer coloque no Initialize. IsMouseVisible = true; 2010 © Kleber de Oliveira Andrade 52
  • 53. • Add -> New Item 2010 © Kleber de Oliveira Andrade 53
  • 54. • É gerado um arquivo xml. Mude a seguinte informação dele <FontName>Arial</FontName> • Crie uma variável do tipo SpriteFont SpriteFont sFont; • Carregue a font que você criou no método LoadContent sFont = Content.Load<SpriteFont>(“fontArial”); • Escreva as informações na tela dentro do método Draw, entre os comandos Begin() e End() spriteBatch.DrawString(sFont, "X = " + position.X.ToString(), new Vector2(10.0f, 10.0f), Color.White); spriteBatch.DrawString(sFont, "Y = " + position.Y.ToString(), new Vector2(10.0f, 30.0f), Color.White); 2010 © Kleber de Oliveira Andrade 54
  • 55. • Espera-se obter o seguinte resultado ao compilar o exemplo. 2010 © Kleber de Oliveira Andrade 55
  • 56. • Adicione as seguintes linhas movimentos do personagem. 2010 © Kleber de Oliveira Andrade após fazer os 56
  • 57. • Adicione a música na pasta Content do seu projeto Add -> Existent Item • Declare uma variável do tipo Song Song music; • Carregar a música no LoadContent music = Content.Load<Song>(“music”); 2010 © Kleber de Oliveira Andrade 57
  • 58. • Para tocar a música digite o seguinte código também no LoadContent MediaPlayer.Play(music); • Para fazer a música ficar em loop infinito digite: MediaPlayer.IsRepeating = true; 2010 © Kleber de Oliveira Andrade 58
  • 59. • Adicione o efeito sonoro na pasta Content do seu projeto Add -> Existent Item • Declare uma variável do tipo SoundEffect SoundEffect collision; • Carregar a música no LoadContent collision = Content.Load<SoundEffect>(“collision”); 2010 © Kleber de Oliveira Andrade 59
  • 60. • Declare uma váriavel de colisão como booleana bool collsion; • No método Update, deixe collision sempre como falso e quando acontecer uma colisão do fantasma com a parede troque o valor para verdadeiro. • Então verifica se collision é verdadeiro e toque o som. if (collision) sound.Play(); 2010 © Kleber de Oliveira Andrade 60
  • 61. Raio r2 Raio r1 Colisão em X Centro C2 Colisão em Y Centro C1 Existe colisão se: dist(c1,c2) < r1 + r2 Colisão completa 2010 © Kleber de Oliveira Andrade 61
  • 62. • GameComponent – Automatiza alguma métodos sobrecarregando-os, menos a parte de desenho – Exemplo prático • DrawableGameComponent – Automatiza alguma métodos sobrecarregando-os, inclusive a parte de desenho – Exemplo prático • GameServices – Disponibiliza serviços de objetos para outras classes – Exemplo prático 2010 © Kleber de Oliveira Andrade 62
  • 63. 2010 © Kleber de Oliveira Andrade 63
  • 64. • A Linguagem C#: – É uma linguagem orientada a objeto, moderna, desenhada a fim de aumentar a produtividade do programador. C# é utilizado por milhares de programadores e analistas e provê acesso total a tecnologia utilizando o .Net Framework, O Compact Framework e mais recentemente o XNA Framework 2010 © Kleber de Oliveira Andrade 64
  • 65. • namespace – é usada para declarar um escopo. Este escopo permite você organizar o código e oferece uma maneira parar criar tipos exclusivos. 2010 © Kleber de Oliveira Andrade 65
  • 66. • #region e #endregion – directiva para incluir uma região dentro do código, facilitando a vida do programador, podendo este visualizar apenas o código de interesse no momento. 2010 © Kleber de Oliveira Andrade 66
  • 67. • Comentários – /* ... */ e // 2010 © Kleber de Oliveira Andrade 67
  • 68. • Using – mesmo conceito do #include da linguagem C/C++ ou import da linguagem Java com using sem using 2010 © Kleber de Oliveira Andrade 68
  • 69. • Variáveis: Tipos C# Valores possíveis de se armazenar bool true ou false (valores booleanos) byte 0 a 255 (8 bits) sbyte -128 a 127 (8 bits) char Um caractere qualquer (16 bits) decimal ±1.0 x 10-28 a ±7.9 x 1028 (128 bits) double ±5.0 x 10-324 a ±1.7 x 10308 (64 bits) float ±1.5 x 10-45 a ±3.4 x 1038 (32 bits) int -2,147,483,648 a 2,147,483,647 (32 bits) uint 0 a 4,294,967,295 (32 bits) long -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (64 bits) ulong 0 a 18,446,744,073,709,551,615 (64 bits) object Qualquer tipo short -32,768 a 32,767 (16 bits) ushort 0 a 65,535 (16 bits) string Seqüência de caracteres (16 bits por caractere) 2010 © Kleber de Oliveira Andrade 69
  • 70. • Operadores Category Operator(s) Associativity Primary (x) x.y f(x) a[x] x++ x- - new typeof sizeof checked unchecked Left Unary + - ! ~ ++x - -x (T)x Left Multiplicative * / % Left Additive + - Left Shift << >> Left Relational < > <= >= is Left Equality == != Right Logical AND & Left Logical XOR ^ Left Logical OR | Left Conditional AND && Left Conditional OR || Left Ternary ? : Right Assignment = *= /= %= += -= <<= >>= &= ^= |= Right 2010 © Kleber de Oliveira Andrade 70
  • 71. • Vetores Multidimensionais (arrays): 2010 © Kleber de Oliveira Andrade 71
  • 72. • Entrada e Saída padrão: 2010 © Kleber de Oliveira Andrade 72
  • 73. • Estrutura condicional IF/ELSE: 2010 © Kleber de Oliveira Andrade 73
  • 74. • Laço de repetição FOR: 2010 © Kleber de Oliveira Andrade 74
  • 75. • Laço de repetição WHILE: 2010 © Kleber de Oliveira Andrade 75
  • 76. • Laço de repetição FOREACH: – O laço foreach é usado quando queremos percorrer todos os elementos de um array (matriz) ou de coleções de dados, tais como uma ArrayList. 2010 © Kleber de Oliveira Andrade 76
  • 77. • Listas: 2010 © Kleber de Oliveira Andrade 77
  • 78. • Tratamento de erros: 2010 © Kleber de Oliveira Andrade 78
  • 79. • Classes • Construtor • Atributos e métodos 2010 © Kleber de Oliveira Andrade 79
  • 80. • Herança, Polimorfismo, Encapsulamento e Enumeradores. 2010 © Kleber de Oliveira Andrade 80
  • 81. 2010 © Kleber de Oliveira Andrade 81
  • 82. 2010 © Kleber de Oliveira Andrade 82
  • 83. • “XNA Tap” – Construção de um jogo simples – Construção de um gerenciador de telas – O jogador deve acertar as baratas com o jornal 2010 © Kleber de Oliveira Andrade 83
  • 84. • • • • • Sharp, John. Microsoft Visual C#: Passo a passo (Tradução: Altair Dias Caldas de Moraes). Porto Alegre : Bookman, 2007. 504 p. ISBN 978-85-60031-17-7. Kleber Andrade. Curso de XNA. http://kleberandrade.wordpress.com/xna – [acessado em abril de 2010]. Sharp Games. http://www.sharpgames.net - [acessado em abril de 2010] XNA Developer Center, http://msdn.microsoft.com/xna/ - [acessado em março de 2010] XNA Creators Club, http://creators.xna.com – [acessado em abril 2010] 2010 © Kleber de Oliveira Andrade 84
  • 85. Obrigado ! Kleber de Oliveira Andrade pdjkleber@gmail.com http://kleberandrade.wordpress.com