Category Archives: Linguagens

Interpretando Games 1: Introdução

Esse ano de 2009 pra mim foi um ano de muitas novidades, principalmente falando de linguagens de programação interpretadas. Por trabalhar com Web, me aperfeiçoei muito com PHP — linguagem que eu gosto bastante, aliás. Então logo descobri o mundo do Ruby, mais uma vez devido à Web: Ruby on Rails.

Uma que está fazendo sucesso ultimamente, principalmente na área de desenvolvimento de games, é Python. Eu, pelo menos, ouço muito falar da PyGame — biblioteca de jogos para Python –, resolvi também dar uma olhada nisso. E recentemente, fui convidado por um amigo a estudar um pouco de Perl. Muitos devem pensar: “Perl? Vai aprender Fortran também!”. Não custa nada, é uma linguagem exótica, que, apesar de ser antiga, ainda é bem poderosa e com uma base de usuários forte.

Devido a minha natureza gamer, sempre procuro interligar qualquer coisa relacionada a desenvolvimento que eu aprenda a jogos, não foi diferente agora. Por tudo isso que resolvi escrever uma série de tópicos falando sobre jogos feitos em linguagens interpretadas como essas. Claro que eu não sou nenhum expert (aliás, não sei quase nada ainda) em nenhuma dessas linguagens, como já disse, estou apenas aprendendo. Essa série é mais uma compilação do que encontrei/vou encontrar em pesquisas sobre o tema, o que me estimula ainda mais a aprender, e eventualmente você também.

Eu poderia começar falando das vantagens e desvantagens dessas linguagens, ou de linguagens interpretadas num geral, mas não o farei. Só o fato das máquinas virtuais otimizarem muitos aspectos de desempenho, trabalharem na gerência de memória e coleta de lixo, e você só ter que escrever um código compatível com todas as “plataformas” é suficiente.

Vale a pena ressaltar que estamos falando de joguinhos. E nesse caso só vou tratar de jogos 2D, que é o que eu mais gosto de fazer.

Google Buzz

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