terça-feira, 17 de maio de 2011

Dicas de Programação: Como obter o código-fonte de uma página on-line (Java) ?

Fácil! Utilizando as classes URL e HttpURLConnection:

import java.net.*;
import java.io.*;

public class App1 {

public static void main(String args[]) throws Exception {
//Seta a URL
URL url = new URL("http://blogdotakemura.blogspot.com/");
//Abre conexão
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//Abre o buffer para leitura
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
//Lê linha a linha da página
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}

Para quem programa em Android, isso também pode ser feito lá. (as classes URL e HttpURLConnection existem na API) :)

Até mais!

Jogos de tabuleiro: Scotland Yard

Alguém já jogou Scotland Yard da Grow?

Eu já e posso dizer que é muito legal! :)

Este jogo de tabuleiro é baseado nas histórias (ou estórias -- que, de acordo com o professor Pasquale, tanto faz...) de Sherlock Holmes onde você encarna o detetive que, através das pistas dadas em determinados locais, deve descobrir quem foi o culpado, onde ocorreu o fato e qual foi a arma usada no crime antes de seus concorrentes.

O legal que os "casos" são baseados em aventuras do personagem de Sir Arthur Conan Doyle.

A coisa triste, é que, quem leus os livros, vai saber alguns dos resultados :P

Até mais!

domingo, 15 de maio de 2011

Alguém se lembra de Chrono Trigger?

Putz, este faz tempo...

Eu nunca tive um Super Nintendo (era um console caro, na época), mas sempre ouvia falar dos jogos deste console: o Street Fighter' II (que eu jogava, em uma época onde as locadoras tinha o que chamavam de "cabine" e a gente pagava por hora...), o Super Mário World e um RPG que foi um dos maiores sucessos da Square na época -- Chrono Trigger.

Foi um dos primeiros grandes sucessos da Square, possuia uma história muito bem elaborada e gráficos belíssimos para o console (os personagens foram desenhados por Akira Toriyama, criador de Dragon Ball).

Esse sucesso foi tanto, que alguns fãs saudosistas tentaram criar uma versão com gráficos poligonais, chamado Chrono Resurrection:



O projeto foi parado... E não há nenhuma previsão de volta...

O site do projeto:
http://www.opcoder.com/projects/chrono/

Até mais!

sábado, 14 de maio de 2011

Dicas de Programação: O que é uma Final Class em Java ?

Resposta: Classes que tem o modificador final não podem ser herdadas. Ou seja, não possuem filhos e nem pode possui-los.

Um exemplo de final Class é a classe String:

//Impossivel a herança
public MinhaString extends String {
}

Para criar uma Final Class é simples, basta colocar o modificador na declaração da classe:

public final class ClasseSemHeranca {
...
}

Se quiser, você também pode fazer isso com o método da classe. (assim, ninguém pode reescrever o método):

public class MinhaClasse {
public final void ninguemMeReescreve() {
...
}
}

Por que fazer isso?

Talvez, por orgulho. (não quero que ninguém mexa na minha classe -- gentalha, gentalha, gentalha! :P)

Brincadeira! :)

Até mais!

Alguém se lembra do Virtual Boy?



Apesar da maioria de "meus" leitores terem entre 18 a 40 anos, acho que alguns nem devem ter ouvido falar deste video-game da Nintendo. (acho que nem a Nintendo quer mais ouvir falar dele... :P)

Antes mesmo do Nintendo 3DS, a empresa já pensava em criar um video-game 3D. Tanto que, em 1995, foi lançado no Japão o Virtual Boy.

Era um video-game totalmente diferente do habitual: não precisava ligar na TV para jogar, pois o sistema tinha um formato de óculos onde você colocava a "cara" nele. (no sentido literal da coisa :) )

Evolucionário para a época!

Mas, por que não deu certo?

Sei lá, talvez os jogadores não estava muito afim disso... As más linguas diziam que era desconfortável colocar a cara no aparelho e que ver tudo em vermelho (tons de vermelho era a única cor exibida pelo console...) era muito desanimador.

Só sei que o console foi "um fiasco" e terminou sua produção em 1996.

Talvez seja por isso que a Nintendo não que lançar o novo console (projeto "Café") com tecnologia 3D.

É..., algumas vezes, inovação de"mais" faz mal para a saúde da empresa. :P

Até mais!

Design Patterns: Singleton

Pessoal, desculpe por não postar nada nos últimos dias...
Tive uns problemas de saúde. (nada grave, mas precisava me cuidar...)
Ainda não estou 100%, mas dá para levar. :)

Mas voltando ao assunto do título:

Design Patterns, em computação, é uma receita de bolo de como fazer certas coisas recorrentes que aparecem no código-fonte. Por exemplo: "Como criar uma instância única para todo objeto de uma certa classe?"

Como faço isso? -- você pergunta.

Fácil, utilizando o "design pattern" chamado Singleton!

A "receita de bolo":

public class MinhaClasse {

//Declarando um objeto estático da classe
private static MinhaClasse instancia = null;

//Construtor privado !?! (somente a própria classe consegue instanciar)
private MinhaClasse() {
//Inicializando objeto
}

//Cria uma única instância para o objeto
public static MinhaClasse getInstance() {
if (instancia == null) {
instancia = new MinhaClasse();
}
return instancia;
}
}

Para todo objeto que precisar de uma instância (no caso, a mesma instância), é só usar o método getInstance:

...
MinhaClasse obj1 = MinhaClasse.getInstance();
...
MinhaClasse obj2 = MinhaClasse.getInstance();
...

Qual é a vantagem de se utilizar este "design pattern"? -- pergunta você, de novo. :P

Talvez, por economia de memória (já que existe somente uma instância) e o sistema "guarda" o último estado da instância (este último, talvez não seja uma vantagem...).

Quando eu devo usar? -- pergunta você, outra vez. :P

Geralmente em classes úteis, do tipo que não precise guardar valores (funções matemáticas, de formatação, de ordenação e outras mais).

Hum... Espero que eu não tenha complicado e sim, explicado. :P

quarta-feira, 11 de maio de 2011

Dicas de Programação: Como verificar se um valor é infinito ou NaN em C?

Então, como eu posso verificar se um float possui um valor válido (sem ele ser infinito ou NaN)?

Simples, usando as funções isnan e isinf da biblioteca math:

#include <math.h>
#include <stdio.h>

int main(int num_args, char* args[])
{
float a = 0.0/0.0;
if (isnan(a))
{
printf("a=NaN\n");
}
a = 1.0/0.0;
if (isinf(a))
{
printf("a=Infinite\n");
}
a = 3.0/1.0;
printf("a=%f\n",a);
return 0;
}

Vi que alguém procurou isso no meu blog, por isso resolvi escrever. :)
Espero que ajude...

Até!

Dicas de Programação: Existe destrutor no Java?

Se existe destrutor em Java?

Não sei se posso dizer que é um destrutor, mas existe um método que é chamado quando o Garbage Collection vai limpar o "objeto". Esta função é a finalize:

public class App1 {

public App1() {
System.out.println("Uma instância de App1 esta nascendo. :)");
}

protected void finalize() {
System.out.println("Uma instância de App1 esta morrendo. :(");
}

public static void main(String... args) {
App1 app = new App1();
app = null;
System.gc();
}
}

Não sei se funciona todas as vezes (pode ser que o gc limpe depois que o programa termine...) :P

Até!

domingo, 8 de maio de 2011

Pier Solar - Jogo do Mega Drive feito por fãs!

Sei como deve ser díficil fazer um jogo, principalmente para quem não sabe nem desenhar (como eu... :P ).
Imagina criar um jogo em um hardware que você nem esta acostumado...
Mas o pessoal da WaterMelon conseguiu este feito!


Criaram um jogo de RPG para Mega Drive, em 2010, chamado Pier Solar. O jogo, de acordo com o que foi divulgado, tem 64 Mega! (acho que deve ser o único no Mega Drive com tanto megabits ... :P)


Fizeram manual, caixinha e tudo mais! Como se fosse um jogo original da SEGA.
Muito legal!!! O pessoal caprichou!
Quem quiser compra-lo (se alguém ainda tiver um Mega Drive modelo 1 ou 2), pode faze-lo no site oficial do jogo:
http://www.piersolar.com/

Obs.: Só para avisa-los: o jogo não é licenciado pela SEGA.

Até!

sábado, 7 de maio de 2011

Alguém se lembra do Alex Kidd?

Deu vontade de matar a saudade...

Alex Kidd foi o mascote principal da SEGA antes de Sonic: The Hedgehog, nos tempos do antigo Master System.
Ele era um garoto com roupa vermelha, meio gordinho, com grandes orelhas, e que tinha um cabelo tipo emo (dizem que foi o primeiro emo da história do video-game...) e que era fanático por jogar Pedra, Papel e Tesoura (o famoso Jan Ken Po)!

Seu maior sucesso foi "Alex Kidd in Miracle World" do Master System. Jogo, que álias, vinha na memória na versão 2 do console (substituindo o Safari Hunt, um jogo de tiro, o Hang-On, jogo de corrida, e um jogo de labirinto, sem título, que vinha escondido no console).

Uma pessoa tão saudosista quanto eu, criou um estágio bem parecido com a primeira fase deste jogo, para o Little Big Planet 2 do PS3:


Parabéns a DizaumBR pela iniciativa! :)

Quer saber como se habilita o jogo do labirinto no Master System I ?
Essa eu digo (afinal, acho díficil alguém ainda ter o console...): No logo da SEGA, aperte os botões 1 e 2 juntos, depois coloque o direcional para cima.

Até!

sexta-feira, 6 de maio de 2011

Xadrez - Abertura de Peão do Rei

Sei lá, o assunto que dominou no meu e-mail esta semana foi Xadrez, portanto, resolvi escrever sobre isso (não que eu seja um mestre de Xadrez, longe disso...). :)

Vou falar de uma abertura que a maioria dos jogadores de Xadrez usa, que é a abertura de Peão do Rei.

Mas primeiramente, vamos explicar algumas coisas:
- O Xadrez que eu estou falando, é um antigo jogo de tabuleiro e não um sinonimo de prisão.
- Abertura, em Xadrez, são os lances iniciais dos jogadores (ou seja, os primeiros movimentos).
- Peão é uma peça de Xadrez e não o trabalhador braçal.
- Rei é a peça principal do jogo de Xadrez, sendo que se ele for "morto", indica que se deu "Xeque-Mate" e termina o jogo. Não se refere a nenhuma giria soteropolitana ("Meu Rei..." -- essa eu forcei mesmo :P ).

Então vamos a abertura:
A abertura consiste em mover o Peão da casa e2 para a casa e4 (o Peão que esta na frente do Rei, dai o nome).

"Qual é a vantagem desta abertura?" - alguns devem se perguntar.

Pelo que eu soube das pessoas, as vantagens são:
- Você libera mais peças do seu jogo (além dos Peões e dos Cavalos, você libera a Dama e um Bispo logo de cara);
- Se um dos jogadores for desprevenido, é possível dar xeque-mate em 4 "rodadas" (não vou dizer que é fácil, mas existe o "esquema"...).

O "esquema" fica para a próxima vez. :P

Um bom fim-de-semana a todos!

Até!

quinta-feira, 5 de maio de 2011

Composite C1 - CMS para .Net


Composite C1 é um CMS feito em .Net com código aberto (até soa meio estranho, mas é verdade :P).

Para usuários comuns (editores, designer, etc.) tem a vantagem de ser parecido com uma aplicação nativa do MS-Windows (tem a mesma cara do XP :P). Já para os desenvolvedores, o código é simples e de fácil manutenção.

Quem gostou, pode saber mais sobre a aplicação no link abaixo:
http://www.composite.net/C1.aspx

quarta-feira, 4 de maio de 2011

DOSPad: DOSBox para iPad

Uma vez, eu falei do DOSBox, um emulador de DOS especifico para jogos.

Então, existe uma versão para iPad chamada DOSpad.



Ou seja, agora dá para jogar DOOM ou Indiana Jones: Fate of Atlantis em seu iPad!

O link do projeto:
http://www.litchie.net/blog/?page_id=123

Rhodes: Ruby para Smartphone

Poxa...

Quem programa em Java pode criar aplicação para Android e alguns celulares com J2ME...
Para programar em iPod, iPhone e iPad tem que aprender uma linguagem nova (Objective C)...

Mas quem programa em Ruby, o que será que faz?

Programa em Rhodes! :)

Rhodes é um framework para criar aplicações em iPhone e Android feito em Ruby.

Para mais informações, entre no site:
http://rhomobile.com/

Dicas de Programação: Como executar um programa dentro do Java?

Esse foi uma dúvida de um colega aqui. :)

Para executar um programa dentro do Java, basta usar as classes Runtime e Process da API:

public class App1 {
public static void main(String args[]) throws Exception {
Runtime runtime = Runtime.getRuntime();
//Executa o notepad
Process process = runtime.exec("notepad.exe");
//Espera o processo terminar
process.waitFor();
//Exibe mensagem que terminou
System.out.println("Terminou!");
}
}

Simples, não? :P

Até mais!

domingo, 1 de maio de 2011

Cedega/WineX: Execute jogos de Windows no Linux

Bons jogos para GNU-Linux sempre foram difíceis de encontrar... Por mais que procuramos, 90% dos jogos lançados são para o sistema operacional MS-Windows.
Mas existe uma possibilidade de rodar jogos MS-Windows no GNU-Linux ou no MacOSX!

Como? - você deve perguntar.

Eu respondo:

Com o Cedega/WineX!

O Cedega/WineX é uma aplicação que "emula" a API do MS-Windows (mais especificamente, o DirectX) para jogos.

Ainda possui alguns bugs, mas dá para rodar alguma coisa. :P

Só para exemplo, veja World of Warcraft no Linux:


Obs.: Não é free, esta sobre licença comercial.

Mais informações no Wikipédia:
http://en.wikipedia.org/wiki/Cedega_%28software%29

Até mais!