System.out.println() para WindowsPhone

 

Uma dúvida de muitos programadores Java quando estão aprendendo a desenvolver aplicativos para Windows Phone é como usar o bom e velho System.out.println(“passou aqui”); também no WindowsPhone.

A utilização do System.out.println() no Java é muito comum para jogar num console valores de variáveis ou simplesmente algumas mensagens como “passou aqui 1″, “passou aqui 2″, etc. Na verdade tanto o Eclipse/Netbeans para Java como VisualStudio para WP têm uma ferramenta de depuração/debug, onde vc consegue ver passo a passo o que está acontecendo, por onde o código está passando e quais os valores das variáveis, entretanto existem muitos progamadores que preferem o bom e velho System.out.println().

Bom, mas vamos para o que interessa, no Windows Phone você pode jogar mensagens no console com o comando:

System.Diagnostics.Debug.WriteLine(string);

E no Visual Studio não esqueça de clicar em View|Output para ver o console onde será jogado as mensagens.

#keepCoding

 

 

Idéias de apps para desenvolver para Series40 ou WindowsPhone

 

Você quer desenvolver pra Windows Phone ou Series40 da Nokia, mas não sabe o que fazer ?

Eu sempre costumo dizer nas minhas palestras e treinamentos que uma ótima maneira de aprender desenvolvimento de software é simplesmente copiando a idéia de um software já existente. Isso é totalmente LEGAL pois vc não está copiando código e sim a idéia… e quanto a isso não existe problema, pois idéias sequer podem ser patenteadas… A não ser que visualmente seu app copiado se pareca com o original, daí sim não pode. Como por exemplo se vc quiser fazer um jogo igual ou o mesmo estilo do TETRIS mas vai chamar de um nome bem diferente, digamos que vc chame de KATU ! Isso nao vai poder, pois o TETRIS jah eh muito bem conhecido e ninguem chamaria seu jogo de KATU e sim de TETRIS!

mas enfim, copiar idéias de software apenas para aprender programação é uma maneira muito produtiva de se aprender, pois vc tem um objetivo e um escopo bem definido.

E eu sempre digo para os meus alunos que tanto a Windows Phone Store quanto a Nokia Store ainda tem menos de 200 mil aplicativos enquanto que as outras lojas de aplicativos de outras plataformas (Android e IPhone) já passa de 500 mil. Sendo assim os desenvolvedores tem uma grande oportunidade para desenvolver apps tanto para Series40 quanto para WindowsPhone e poderem ter uma app de sucesso.

MINHA SUGESTÃO: copiem a idéia das apps de sucesso das outras lojas, as que tem bastante download, e desenvolvam para as plataformas Series40 e WindowsPhone. Mas como saber quais as apps de muitos downloads da outras lojas? Bom aqui vai uma dica: na lista abaixo temos algumas das apps com mais downloads da loja da plataforma do robozinho marciano.

Cantadas Fodas
Piadas Brasil
Mensagens para Celular
Detector de Mentiras
Bíblia em Português (PTv7D)
Xaveco
Chavinho Groove sons do Chaves
Teste do Q.I.
Buscapé Mobile
Piadas
SMS Frases Romanticas Amor
Mensagem Grátis – Torpedos SMS
Anti Mosquito
3D Corinthians Fundo Animado
Mensagens de Amor
Top Cantadas
Receitas Fáceis MdeMulher (*)
Teste de Pureza
3D São Paulo Fundo Animado

Agora é só copiar a idéia e desenvolver para Series40 ou WindowsPhone

#keepCoding

 

Publicando sua App na Nokia Store

O pessoal do Nokia Developer colocou recentemente um guia no site http://www.developer.nokia.com/GuiaSeries40/ em portugues para ajudar os brasileiros na publicação de Apps na Nokia Store, esse guia está bem completo e com o passo a passo bem bacana!

Gostaria de acrescentar ainda que para o site de suporte você pode utilizar o blog nokias40apps.com para servir como site de suporte, basta me enviar um email com a descrição da app, uma imagem e os dados que ficaram na tela de Sobre do seu aplicativo que eu publico no blog rapidamente, assim vc não precisa criar conta em nenhum site apenas para fazer site de suporte.

 

Seu primeiro jogo em J2ME passo a passo!

E Ae pessoal, post especial para os devs!
Meu nome é Sérgio Cavalcante, trabalho com o Marlon no Instituto Nokia, e recentemente dei um curso sobre J2ME. Foi um desafio, já que sou Evangelista de
Windows Phone. Então o Marlon me passou um game que ele sempre faz nos treinamentos que ele ministra. Destrinchei o bicho e fiz um roteiro para que você possa entender como
fazer o seu :)

Usei o NetBeans, junto com o SDK da Nokia para tal. Vamos começar?

Antes de qualquer coisa, baixe as imagens acima. Elas serão parte do seu projeto.

*CRIANDO O PROJETO

1 – Novo projeto
2 – Java ME – Mobile Application
3 – Desmarcar “Hello Midlet”
4 – Nome do projeto – Olimpiadas
5 – Escolher no emulator Plataform, o Nokia 1.1 for Java
6 – Botão direito no projeto -> New Midlet

*CLASSE PRINCIPAL

7 – depois do extends Midlet, colocar: implements CommandListener {
8 – A IDE sugere um import, aceitar e trocar por import javax.microedition.lcdui.*;
9 – escolher gerar todos os abstract methods da classe
10 – declarar:
public static List menu;
public static Display display;
11 – No startApp:
display = Display.getDisplay(this);
menu = new List(“Olimpiadas”, List.IMPLICIT);
menu.append(“Iniciar”, null);
display.setCurrent(menu);
12 – Build. Run.

*ADICIONANDO O COMMANDACTION

13 – Adicionar comando sair e listener de commands:
menu.addCommand(new Command(“Sair”, Command.EXIT, 1));
menu.setCommandListener(this);

14 – Adicionar Inicia Jogo:
private void iniciaJogo() {

}

15 – adicionar comandos do commandAction:
if (c == List.SELECT_COMMAND) {
if (menu.getSelectedIndex() == 0) {
iniciaJogo();
}
} else if (c.getCommandType() == Command.BACK){
display.setCurrent(menu);
} else {
notifyDestroyed();
}

*CRIANDO A CLASSE DE JOGO

16 -criar classe Jogo. botão direito new Java Class
17 – colocar os imports:

import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;

18 – heranças do Jogo:
extends GameCanvas implements Runnable, CommandListener {

19 – Implement all abstract classes

20 – tirar os throws

21 – implementar o constructor:
public Jogo(Olimpiadas m) {
super(true);
setFullScreenMode(true);
}

22 – adicionar no commandAction:
Olimpiadas.display.setCurrent(Olimpiadas.menu);

23 – declarar:
private Olimpiadas midlet;

24 – colocar no constructor:
midlet = m;

25-declarar na classe principal:
private Jogo jogo;

26 – colocar no IniciaJogo:
jogo = new Jogo(this);
display.setCurrent(jogo);

26 – build, rodar.

*GAMETIME! – PAINT SPRITES

27 – arrastar para o projeto os 3 .png’s
28 – declarar:
private Sprite sBackground, sAtleta, sBarreira;
private LayerManager lm;

29 – adicionar um try catch de IO no constructor:
try
{

} catch (IOException ex)
{
ex.printStackTrace();
}

30 – dentro do try fazer load e posicionar os sprites:

Image atleta = Image.createImage(“/atleta.png”);
Image fundo = Image.createImage(“/scenario.png”);
Image barreira = Image.createImage(“/barreira.png”);

sBackground = new Sprite(fundo);
sAtleta = new Sprite(atleta, 42, 51);
sBarreira = new Sprite(barreira);

lm = new LayerManager();
lm.append(sAtleta);
lm.append(sBarreira);
lm.append(sBackground);

sAtleta.move(10, 215);
sBarreira.move(220, 245);

31 – fazer o comando do paint chamar o paint do LM:
public void paint(Graphics g) {
lm.paint(g, 0, 0);
}

32 – build, run.

*ADICIONANDO MOVIMENTO

33 – rodando a thread. colocar no constructor depois do código dos sprites:
Thread t = new Thread(this);
t.start();

34 – declarar:
private boolean pula;
private boolean corre = true;
private int totalLoopsPulo = 0;
private int barreirasPuladas = 0;

35 – colocar no run:

while (corre) {
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
atualizaSprites();
repaint();
}

36 – criar a função atualiza sprites:
private void atualizaSprites() {
if (pula) {
totalLoopsPulo++; // controle de pulos no loop. 25 sprites, 25 atualizações do pulo
if (totalLoopsPulo <= 25) {
sAtleta.move(0, -1);
} else if (totalLoopsPulo <= 50) {
sAtleta.move(0, 1);
} else {
pula = false;
totalLoopsPulo = 0;
sAtleta.nextFrame();
}
} else { // se nao pula entao corre
sAtleta.nextFrame();
}
sBarreira.move(-3, 0);//se a barreira chegou ao começo da tela, move pro final pra aproveitar memória e aumenta score
if (sBarreira.getX() + sBarreira.getWidth() < 0) {
barreirasPuladas++;
sBarreira.move(255, 0);
}
}

37 – build, run.

*COLISÕES

38 – adicionar funcão de colisão:
private void verificaColisao() {
if (sAtleta.collidesWith(sBarreira, true)) {
corre = false;
}
}

39 – depois do atualizaSprites colocar a verificação:
verificaColisao();

40 – build, run

*PULO

45 – adicionar função de pulo pelo toque:
public void pointerPressed(int x, int y) {
pula = true;
}

*FEEDBACK PRO USUARIO

46 – adicionar command, fora do gameloop:
Alert alert = new Alert("Olimpiadas", "Você conseguiu " + barreirasPuladas + " barreiras", null, AlertType.INFO);
Command cmdMenu = new Command("OK", Command.OK, 1);
alert.addCommand(cmdMenu);
alert.setCommandListener(this);
alert.setTimeout(Alert.FOREVER);
Olimpiadas.display.setCurrent(alert);

Pronto, meus parabéns você deu o primeiro passo para se tornar um GameDev :D

Caso precise de material sobre o código acima, consulte os slides

Quer ver a apresentação? aqui!

Quemr mais material? Consulte outros Webnars!
Aproveite para ver o meu sobre XNA :D

Ganhe dinheiro colocando publicidade dentro do seu aplicativo mobile – TDC 2012 Floripa

Abaixo está os slides que apresentei no The Developers Conference 2012 em Florianópolis na trilha mobile. Nessa palestra eu mostro como utilizar o SDK da Inneractive em programas JavaME e Windows Phone 7 para colocar Banners de propaganda em aplicativos mobile e quem sabe faturar alguns trocados