Category Archives: Códigos

jRuby e Swing

Há algum tempo que eu estou querendo aprender a linguagem Ruby. Segundo dizem as artes do aprendizado, deve-se sempre partir de algo conhecido para algo não conhecido que queira-se aprender. Então resolvi começar com jRuby, implementação do Ruby em Java, que roda na JVM. Usando Swing, a SDK padrão do Java para interfaces gráficas.

Criei esse joguinho da velha (jrVeia) bem simples, que na verdade eu nem terminei ainda. Na verdade não mexi mais nele depois que eu comecei. Falta apenas a verificação do tabuleiro. Pretendo também, se der, implementar uma camada de rede, para poder jogar via direct ip (igual eu fiz com o VeiaOnline).

Mais detalhes: jrVeia.

Como já disse, comecei com esse joguinho só pra me familiarizar com a sintaxe do Ruby, uma vez que já conheço um pouco de Swing. Na verdade nem sei qual é a real aplicabilidade de linguagens interpretadas a jogos. Vou estudar mais isso, mesmo porque pretendo participar do Indie Bay Competition com Ruby e Gosu. Pode deixar que logo logo eu compartilho aqui o que eu aprendi.

Só para ilustrar o tópico, vou mostrar um código bem simples pra criar uma janela com jRuby e Swing:

# Diz que vamos usar as classes do Java
require 'java'

#
# Podemos usar puro Ruby na JVM, ou interagir completamente com classes em Java! \o/
#

# A classe principal, que herda da classe JFrame, exatamente como fazemos no Java...
class Window < javax.swing.JFrame

   # Nosso construtor
   def initialize

      # Super Man - Nenhuma novidade aqui ^^
      super("Hello World")

      # Aqui muda, você pode chamar os métodos com o mesmo nome em java
      # setSize, ou então chamar pelo padrão Ruby, set_size, que ele
      # irá executar o método do mesmo jeito!
      set_size(300, 300)
      set_visible(true)
      set_default_close_operation(javax.swing.JFrame::EXIT_ON_CLOSE)

      # Vamos adicionar um textinho na janela
      add(javax.swing.JLabel.new("Hello World - by CrociDB"))
   end
end

# Aqui está o nosso &quot;método main&quot;
janela = Window.new

Só para vocês terem uma idéia da facilidade. Não esqueçam de dar uma olhadinha no código do jrVeia. E aguardem, logo sai um post açucarado sobre Gosu e Ruby. Até lá. :)

Google Buzz

Viva, é OpenSource

Tenho tantos projetos iniciados que dá até pena deixá-los guardados. Não que sejam super-projetos, porém acho disperdício deixar qualquer monte de código no fundo da gaveta. É como música ou poesia, elas têm sempre o direito de serem divulgadas.

Resolvi então compartilhar alguns joguinhos antigos finalizados e não finalizados, apesar da bagunça no código deles, sempre pode ser útil a alguém que está aprendendo. Coloquei tudo no GitHub.

Queria dar um destaque especial ao Pongo-Line. É um “remake” do Clássico Pong, porém multiplayer online. Estava desenvolvendo com C++, Allegro e RakNet. Faz bastante tempo que comecei ele, porém ainda pretendo terminá-lo. Eu parei quando me deparei com vários problemas de falta de sincronia de dados. É uma ótima oportunidade para aprender técnicas para evitar atraso, por isso não esqueci desse projeto.

Ainda tem pouca coisa lá, mas vou colocando coisas novas lá. Se você quiser ajudar, basta dar um fork em algum projeto e continuar mexendo, sinta-se a vontade. Caso tenha algum problema com Git no Windows, eu fiz um pequeno tutorial sobre isso.

Google Buzz

F.A.T.I – Fontes Liberados

O F.A.T.I. é um jogo que comecei a fazer para o Contest UniDev 2007, porém vi que não daria para terminar, pois estava tendo alguns problemas, então desisti e fiz o The Target.

Depois de tanto tempo, eu vi que tinha bastante coisa interessante nesse projeto. Eu havia criado um Editor de mapas com formato de mapa, tinha criado uma estrutura de arquivos para guardar pequenos sprites usando compressão RLE (Run Length Encode), e mais umas coisinhas.

Claro, o código está muito bagunçado, mas resolvi liberar aqui! :)

[Download]

O arquivo contém todos os fontes do map editor, e da básica engine do jogo. Peço desculpas por não ter nenhuma documentação, é que eu realmente não tinha feito nada.

Espero que seja útil para alguém! xD

Google Buzz