|
Antes de continuarmos com nosso jogo, vale a pena lembrar um detalhe curioso, lembrado por um de nossos leitores: O “Tennis for Two” foi o primeiro vídeo-game, criado em 1958 por Willy Higinbotham, mas na verdade nosso jogo se parece mais com o “Pong”, um dos primeiros jogos de fliperama, criado em 1972 por Al Alcorn. Apesar disso, vamos manter o nome “Tennis for One”, certo?
Na semana passada, vimos como desenhar as sprites do bastão e da bola, ainda fixas na tela. Vamos ver agora como controlar os bastões com o gamepad do Xbox 360 e como fazer a bola se movimentar!
Para movimentar os bastões, basta alterar a posição em que eles aparecem antes de desenhá-los. Para isso, primeiramente precisamos criar duas variáveis que vão guardar a posição dos bastões e alterar o código de desenho para usar estas variáveis. Para isso, basta incluir no início da classe Game1 as linhas:
float posBastaoEsquerda = 320; float posBastaoDireita = 320;
E alterar o desenho dos bastões, no método Draw, para usar estas variáveis:
spriteBatch.Draw(texBastaoEsquerda, new Vector2(20, posBastaoEsquerda), Color.White); spriteBatch.Draw(texBastaoDireita, new Vector2(764, posBastaoDireita), Color.White);
Estas linhas, agora, desenham a textura de cada bastão (carregada na parte 1 deste artigo) na respectiva posição X,Y da tela, sendo o X (distância horizontal a partir da esquerda da tela) fixo para cada bastão, e o Y (distância do topo da tela) controlado pelas variáveis que criamos.
Para alterar a posição dos bastões, basta incluir três linhas no método Update:
GamePadState meuGamePad= GamePad.GetState(PlayerIndex.One); posBastaoEsquerda += meuGamePad.ThumbSticks.Left.Y * -10; posBastaoDireita += meuGamePad.ThumbSticks.Right.Y * -10;
Na primeira linha, “lemos” o estado do gamepad (que, lembrando, funciona também conectado ao PC); e a seguir atualizamos as variáveis que indicam a posição dos bastões, conforme o movimento do thumbstick da esquerda ou da direita. Como o valor do thumbstick varia de -1 (totalmente para baixo) até +1 (totalmente para cima), multiplicamos por -10 para que os bastões se movimentem até um máximo de 10 pixels por vez, e conforme o esperado (aumentando o Y para descer na tela, e vice-versa).
Para movimentar a bola, também precisaremos criar uma variável para armazenar a posição X e Y da bola. Além disso, precisaremos criar uma variável para guardar a velocidade da bola, um valor de deslocamento nos eixos X e Y. O XNA oferece um tipo de dados pronto para isso: Vector2. Assim, devemos criar as variáveis no início da classe:
Vector2 posBola = new Vector2(400, 300); Vector2 velBola = new Vector2(3, 3);
Em seguida, alterar o código de desenho para usar a variável da posição da bola:
spriteBatch.Draw(texBola, posBola, Color.White);
E, por fim, incluir apenas mais uma linha no método Update para alterar a posição da bola conforme a sua velocidade atual:
posBola += velBola;
Rodando nosso programa agora, veremos que é possível controlar os bastões com os dois thumbsticks do gamepad, e veremos a bola se movimentar em diagonal na tela até sair – e isso escrevendo apenas 20 linhas de código!
Na semana passada, quando começamos a criação do jogo “Tennis for one”, mencionamos que tanto o XNA quanto o Visual C# Express, usados para criar o jogo, são gratuitos. Para enviarmos jogos do PC para o Xbox 360, no entanto, é necessário ser sócio do Creator’s Club (http://creators.XNA.com) e para ser sócio, infelizmente, precisamos pagar.
A boa notícia é que no dia 28 de maio a Microsoft mais uma vez nos surpreendeu, anunciando o lançamento da iniciativa “DreamSpark” (https://downloads.channel8.msdn.com/) no Brasil! Na prática, isso quer dizer que se você é estudante, tem direito de se cadastrar e receber um ano de assinatura gratuita do Creator’s Club, criando seus jogos e jogando-os em seu Xbox 360 sem pagar nada!
Na próxima semana, veremos o código para rebater a bola nas paredes e bastões e a escrita da pontuação na tela, concluindo este nosso pequeno passeio pelo maravilhoso mundo do desenvolvimento indie (independente) de jogos. O código do jogo (na versão do artigo, bem simples, e em uma versão ligeiramente mais profissional, com a criação de uma classe para gerenciar as sprites) se encontra neste link.
Até lá, fique à vontade para explorar o XNA e começar a criar seus próprios programas, esperamos seus comentários e sugestões para próximas colunas!
-
10/03/2010 11:50:22 | Alexandre Lobão - re: DreamsPark, Creators Club, Live
Lohandus Escreveu:
Sobre o DreamSpark, você sabe se será possível enviar jogos do PC para o Xbox 360 mesmo sem Live?
Pois é... A Live! ainda não tem data para chegar ao Brasil, então para mandar jogos para o XBox 360 precisamos ter uma conta Live E uma conta Gold do Creators Club com um endereço americano... O DreamSpark não muda isso, no fim precisamos usar este artifício. A Microsoft alega que o XBox 360 precisa se firmar no Brasil (o que significa: vender mais jogos, ter menos pirataria) para poder investir em trazer a Live!, então, façam sua parte - nada de "chipar" o console para rodar jogos piratas!
-
28/09/2011 22:21:59 |200.252.67.xxx| Arthur - DUVIDA

tenho uma pequena dificuldade.... os pontos n aparecem, e n sei como controlar os bastoes aki no meu PC...
vlw ae!!!!
-
13/10/2011 14:01:05 | Alexandre Lobão - RES: Duvida

Oi Arthur!
Só com estas informações é difícil fazer algum diagnóstico.
Sugiro que você dê uma olhada na parte de "Jogos" do meu site (www.AlexandreLobao.com) que tem diversos exemplos para download, a partir destes exemplos, vendo a coisa funcionando, você poderá facilmente descobrir o que está errado com seu programa.
[]s











Ótimo artigo Alexandre, o XNA facilita mesmo o desenvolvimento de games...
Sobre o DreamSpark, você sabe se será possível enviar jogos do PC para o Xbox 360 mesmo sem Live?