quarta-feira, 24 de outubro de 2007

Meu jogo em XNA - parte 2

Este post é a continuação da série "Meu jogo em XNA". Veja a parte 1 aqui. Na primeira parte, falamos basicamente sobre as funções básicas do XNA: Initialize(), LoadGraphicsContent(), Update() e Draw(). Agora, vamos falar um pouco de alguns tipos de objetos básicos para desenvolvermos jogos em XNA, como por exemplo: GraphicsDeviceManager, ContentManager, MousePointer, Texture2D, SpriteBatch e SpriteFont.

Vamos falar na ordem descrita acima. GraphicsDeviceManager é um tipo de objeto que possibilita o gerenciamento e a configuração do dispositivo gráfico especificado para o jogo, como o monitor do PC, por exemplo. A linha:

GraphicsDeviceManager graphics;

declara um objeto chamado "graphics" do tipo "GraphicsDeviceManager".

Se eu quiser definir que meu jogo inicie com uma resolução 640x480, o que devo fazer? Bem, vamos pensar: a resolução tem que ser definida antes que o jogo comece. Então eu já sei que tem que ser na função Initialize(). E qual objeto gerencia a resolução de tela? O objeto graphics!

Assim, as linhas de código que configuram a resolução de tela é algo assim:

graphics.PreferredBackBufferWidth = 640; // resolução da largura...
graphics.PreferredBackBufferHeight = 480; // resolução da altura...
graphics.ApplyChanges(); // aplicar mudanças...

Se quiser ver mais detalhes sobre o tipo GraphicsDeviceManager, basta ir na documentação MSDN da Microsoft.

Agora, vamos ver o tipo ContentManager. O tipo ContentManager é um componente que carrega os objetos do jogo. E ele faz todo esse gerenciamento em tempo de execução. Sua declaração é:

ContentManager content;

Para ver mais detalhes sobre o ContentManager, visite a documentação MSDN.

Esse dois objetos já explicados são declarados automaticamente pelo código gerado do framework XNA. Por que? Porque todo projeto de um jogo em XNA usa esses dois objetos e o framework facilita isso pra nós.

Assim como especifica a programação orientada à objeto (POO), teremos que criar um construtor para os objetos GraphicsDeviceManager e ContentManager para mais tarde para podermos usá-los. As linhas do construtor dos objetos graphics e content ficam assim:

public Shooting()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}

Os próximos tipos de objetos são mais simples de entender (não que os anteriores sejam difíceis).

MousePointer é tipo que declara que o objeto é pra ser manipulado como um ponteiro de um mouse. Ou seja, se você quiser que o seu jogo tenha um mouse, esse mouse tem que ser um objeto do tipo MousePointer. A sua declaração é:

MousePointer mousePointer;

Texture2D é um tipo que declara que o objeto seja manipulado pelo framework como uma textura 2D. Declaração:

Texture2D fundo;

SpriteBatch é um tipo que declara que o objeto instanciado é pra ser manipulado como um sprite (uma imagem ou animação integrada à cena do jogo). Declaração:

SpriteBatch sb;

E, finalmente, SpriteFont é tipo que declara que alguma coisa é pra ser manipulada como uma fonte (para poder imprimir algo na tela). No meu jogo Shooting, eu declaro assim:

SpriteFont scoreFont;

Vou terminando a parte 2 por aqui. Não sei o que será a parte 3 por enquanto, mas vou começar já a comentar o código para que todos possam entender o que eu fiz e o que o XNA faz pra mim :)

Caso queira ver a parte 1, clique aqui.

Nenhum comentário: