ラベル ruby の投稿を表示しています。 すべての投稿を表示
ラベル ruby の投稿を表示しています。 すべての投稿を表示

2012年9月22日土曜日

「JRuby+Swingでテトリス」という話を聞いて


今日は第11回 岡山Ruby, Ruby on Rails勉強会に参加して,いろいろな発表を聴講させていただきました.
いろいろ話を聞かせていただいたなかで,自分が一番興味を持った話についてまとめた記事を書きます.
内容はJRubyとSwingでテトリスを作るというものでした.
Ruby初心者にとっていい話だったと思います.


なぜテトリス?




雑誌に書いてた言葉「テトリスもかけないとプログラマになれない」





JRuby






  • JRubyはJavaで実装されたRuby


  • GUIのライブラリは標準ではない.


  • そこでJavaのswingを用いる


  • SwingはOSに依存することは少ない.







参考動画




【プログラミング】テトリスを1時間強で作ってみた【実況解説】


  • テトリスを1時間強で作ってみる.(ニコニコ動画)


  • この動画はWinAPIとC言語でテトリスを作っている.







コード






  • テトリスの落ちたブロックは2次元配列で管理


  • 全体のコードは300から400行


  • 開発はTDDで行う.







プログラミング




ゲームプログラムには以下のような要素が詰め込まれている.


  • 関数呼び出し


  • 条件分岐


  • ループ


  • オブジェクト指向


  • テスト



これらのことをゲームプログラミングを通して学べる.





Ruby初学者にとってのメリット




Ruby初学者は






発表を聞いた私の感想






  • Rubyに限らずゲーム作りはプログラミングや言語の勉強の題材としてよさそう.


  • とりあえず僕もテトリスを作ろうと思った


  • テトリスできたらまた報告する予定





--
My Emacs Files At GitHub

2012年9月20日木曜日

JRubyでSwingを使ってみる




目標




JRubyを使ってJavaのGUIツールキットであるSwingを用いる.
これによってRubyでGUIプログラムを作成する.






動作環境




私が動作させた環境を以下に示します.
どれが関係あり,どれが関係ないかはよくわかってません.


  • Mac OS X 10.7.4(Lion)


  • Ruby 1.9.3


  • Jruby 1.6.8


  • java version 1.6.0_35






そもそもJRubyとは




JavaVM上でRubyを動かすソフトウェアである.JavaからRubyを呼び出すこともできるらしい.





JRubyの長所




JRubyには以下の長所がある(らしい)


  • Javaの豊富なライブラリが使える.


  • Java並みの速度でRubyで書いたプログラムが動く


今回は1つめ長所の恩恵にあずかることになりそうです.





JRubyをインストール




RVMを用いてインストールします.
以下のコマンドでインストールできます.



rvm install jruby-1.6.8










JRubyの使い方




ex.rb というRubyのプログラムをJRubyで動かすには以下のようにする.



jruby-1.6.8 ex.rb










swingを使ってみる




参考ページそのままのサンプルコードを動作させてみる.
上の方のimport文でswing関連のものをインポートしている.



require 'java'

import 'javax.swing.JFrame'
import 'javax.swing.JButton'
import 'javax.swing.JTextField'
import 'javax.swing.JPanel'
import 'java.awt.BorderLayout'

class ButtonAction
  include java.awt.event.ActionListener
  
  def initialize(text)
    @text = text
  end
  def actionPerformed(evt)
    @text.setText("Click")
  end
end


frame = JFrame.new("HOGE")
button = JButton.new("Click!!!")
text = JTextField.new(10)

button.add_action_listener(ButtonAction.new(text))

panel = JPanel.new
panel.add text
panel.add button
frame.getContentPane.add(panel, BorderLayout::CENTER)
frame.setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE)
frame.pack
frame.visible = true










おわりに




とりあえず,動作することまでは確認.
これでRubyでGUIプログラムをつくることができそう.
他にもRubyでGUIプログラムをつくる方法があるのかもしれないけど,僕はまだ知らない.






--
My Emacs Files At GitHub

MacにRVMをインストール


MacにRubyのバージョン管理プログラムであるRVMをインストールする.


実行環境






  • Mac OS X 10.7.4


  • GNU bash, version 3.2.48







RVMのインストール







$   bash < <(curl https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)




次にエディタで ~/.bash_profile を開き,文末に以下を追加する.
(私の場合は上記コマンドの実行により,既に追加されていた.)



[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*




.bash_profile 編集後



$ source ~/.bash_profile




を実行.
これで,RVMのインストールは完了する.
試しにRuby1.9.3をインストールしてみる.



$ rvm install 1.9.3
$ rvm list

rvm rubies

=* ruby-1.9.3-p194 [ x86_64 ]

# => - current
# =* - current && default
# * - default












--
My Emacs Files At GitHub