Gem

Ruby2D で穴掘り迷路

見てのとおり、穴掘り迷路です。Gem 'ruby2d' を使いました。Ruby2D についてはこちら。コード。 dig_maze.rb require "ruby2d" L = 20 #迷路の大きさ W = L * 2 + 3 Block_w = 10 set width: W * Block_w, height: W * Block_w, fps_cap: 10 blocks = W.tim…

Gem 'Ruby 2D' でお絵かきしてみる

これまで Ruby でのグラフィック描画には自作の Gem 'oekaki' を使ってきましたが、高機能で簡単に使える Gem 'Ruby 2D' がリリースされたのでちょっと使ってみました。 www.ruby2d.com インストール Window, Mac, Linux で使えるようですが、Windows は Min…

Linux Mint 19(Ubuntu 18.10)に Bundler で Ruby/Tk を入れる

Ruby 2.7.0 では以下の方法でインストール可能です。ただし、gem 'tk' を使うと警告がたくさん出ます。(2020/3/12) Ruby 2.6.0 では以下の方法では tk はインストールできないようです。対策はいまのところわかりません。 なお、Bundler を使わず gem inst…

Ruby/SDL でテトリス

いやこれ、僕が作ったのではないのですよ。Gem 'rubysdl' のサンプルとして付属していたものを、多少改変しただけですが、きれいなコードで勉強になったのでここにメモしておきます。コードは Gist に上げておきました。 Ruby/SDL でテトリス · GitHub あと…

Ruby/Rouge でコードをシンタックスハイライトした HTML と CSS を出力させる

Ruby コードを HTML化して、ついでにシンタックスハイライトもできるようにできないか、やってみました。 画像だとこんな感じです。全体はこういう風です。RubyGem 'rouge' というものを使いました。インストールはふつうに $ gem install rouge とかBundler…

Ruby/SDL を使ってみる

これまで Ruby で画面に線を引いたり円を描いたりするのに、自作の Gem 'oekaki' を使ってきましたが、その中では Gem 'gtk2' を使っていて、たかがお絵かきに GTK+ を使うのは大袈裟すぎるようにも思われたので、Ruby/SDL を使ってみることにしました。Linu…

L-system で落書き(Ruby)

自作の Gem 'kaki-lsystem' を使っています。 再帰曲線を描く言語「L-system」を Ruby で実装した - Camera Obscura Ruby コード。 lsystem_sample5.rb require 'kaki/lsystem' l = Lsystem.new(500, 500) l.set("+") {right(50)} l.set("-") {left(50)} l.s…

モジュール内の特定のメソッドだけ include する(Ruby)

Ruby のモジュールは include でメソッドを Mix-in できますが、定義したすべてのメソッドが include されてしまって、特定のものだけ include するわけにはいきません。そのくらいできそうなので何か簡単なやり方があるのかもしれません。とにかく、考えて…

いわゆる「コンウェイのライフゲーム」をエディタ付きで実装してみた(Ruby)

これまで コンウェイのライフゲームを Ruby で実装してみた - Camera Obscura ライフゲームの CoffeeScript 版 - Camera Obscura コンソールでライフゲーム(Ruby) - Camera Obscura などで「ライフゲーム」を実装してきましたが、フィールド・エディタが欲…

再帰曲線を描く言語「L-system」を Ruby で実装した

L-system って何でしょうか。Wikipedia にはこうあります。 L-system(エルシステム、Lindenmayer system)は形式文法の一種で、植物の成長プロセスを初めとした様々な自然物の構造を記述・表現できるアルゴリズムである。自然物の他にも、反復関数系(Itera…

Gem 'oekaki' にタートルグラフィックスを追加

前回のエントリで作った Turtle クラスを Gem 'oekaki' に同梱しました。これでバージョンは 0.1.5 になります。 oekaki | RubyGems.org | your community gem host GTK+でお絵かきしてみた(Ruby) - Camera Obscura 使い方はほぼ同じです。インスタンスの…

Ruby で循環小数を扱う

以前にも同様の試みをしたのですが(参照)、コードを始めから書き直しました。以前のは何か自分でもよくわからない、面倒なことをしているので。作ったのは Rational#to_rec_decimal と String#to_r で、前者は Rational(分数)を(String で表される)循…

Ruby で Python の for else みたいなの

繰り返しを実行して break(あるいは return)されなかったら何かを実行するって時々欲しいのですけれど、Ruby では Python の for else みたいな構文がないのですよね。なので throw ~ catch を使って大域脱出したりするのだけれど、どうにかできないかと思…

RubyGem 'Salamander' でコッホ曲線を描く

以前、自作の Gem 'oekaki' でコッホ曲線を描いてみましたが(参照)、タートルグラフックスを実装している Gem 'salamander'(参照)を使って同じことをしてみました。4次のコッホ曲線です。 salamander_koch_curve.rb require 'salamander' require 'salam…

RubyGem 'Salamander' でヒルベルト曲線を描く

RubyGem 'Salamander' は Ruby/SDL を使ってタートルグラフックスを実装しています。これを使ってヒルベルト曲線を描いてみました。Linux Mint 18.2 と Ruby 2.3.3 で確認しています。インストールは Bundler で入りますが($ gem install salamander でもた…

任意の階層だけ繰り返しをネストする多重 map 的メソッド(Ruby)

Array#nest_loop で、Integer#times の多重ネスト版です。配列にループ回数を入れて呼び出します。わかり切った多重ループを書くのが面倒なときに役立ちます。ブロックが与えられなければ Enumertor を返します。 [4, 2, 3].nest_loop do |i, j, k| print "#…

Ruby Gem できた

野良 Gem の作り方(Ruby) - Camera Obscura 以前「野良 Gem」(「野良」なのは、僕が RubyGems.org に登録していないからです)を作ったのですが、いいかげんなやり方だったので、書き直してみます。gem 'mygtk' を作ってみます。git が必要なので、なけれ…

RubyGem 'Gosu'

Ruby の Gem で色いろ遊んでみたいと思うのだけれど、「gem おすすめ」などで検索しても Rails の Gem しか出てきません。誰かおもしろい Gem を教えてくれないですかね。だからというわけではないですが、ちょっと探してみたところ、ゲーム作成用の Gem で…

GTK+でお絵かきしてみた(Ruby)

(後記:2018/9/22) Gem の使い方のリファレンスを作りました。 Gem 'oekaki' リファレンス Ruby だけだと遊びで線を引く程度のことも簡単でないので、Ruby で GTK+ を使ってシンプルにお絵かきするだけのモジュールを書いてみました。できるのは、点を打つ…

野良 Gem 'Utils'

RubyGems.org には上げていませんが、Bundler を使って GitHub からインストールできる Gem(野良Gem)です。Gemfile に gem "utils", github: 'obelisk68/utils'を追加して、$ bundle install でインストールされます。詳細は下。 GitHub - obelisk68/utils…

野良Gem のバージョンアップ

以前 Bundler と GitHub を使った野良Gem のバージョンアップについてまとめたのですが(参照)、もう少しちゃんとしたやり方がわかったのでメモしておきます。野良Gem 'Utils' を例にします。(バージョンアップではなく、野良Gem作成はここがわかりやすい…

Ruby の C拡張で約数を求めるメソッドを書いた

なぜか Ruby 本体には、約数を求めるメソッドがないようですので、C拡張で作ってみました。以前書いた Utilsc への機能追加です。コードは必要な部分だけ載せます。全体のコードはここ です。 #include "utilsc.h" #include "math.h" VALUE divisors(VALUE s…

Linux Mint 17.2 に RMagick を入れる

ImageMagick を Ruby で使おうと、Bundler で RMagick という Gem を入れようと思ったのだが、エラーが出た。ImageMagick は入っているのだが。

Ruby の C拡張でモンキーパッチ(オープンクラス)

なんと、C拡張でモンキーパッチまで可能だとは! ここが参考になりました。前記事の C拡張をオープンクラスで実現します。Bundler を使っています。ソースは以下。 #include "utilsc.h" long gcd(long x, long y) { long tmp; if (x < y) {tmp = x; x = y; y…

Ruby の C拡張を作ってみた

プロジェクト・オイラー(参照)の計算高速化のため、Ruby の C拡張に挑戦してへろへろに疲れました。参考にしたのはここ、ここなど。公式ページ(だと思う)がやはり詳しいです。ここも読むべきでしょう。(※追記 ここも追加。)とりあえずソース。 #includ…

Windows に GitHub から野良Gem をインストール

以前作った野良Gem ですが、bundlerを使ってインストールしていたので、Windows には入れることができませんでした。しかし、specific_install という Gem を使えば Windows でも可能だということがわかりました。specific_install のインストールは $ gem i…

野良Gem「utils」をバージョンアップしてみた(※古い記事)

注記。こちらのやり方の方がいいと思います。 obelisk.hatenablog.com 以下は古い記事です。 GitHub に入れておいた野良Gem「utils」ですが、バージョンアップしてみました。 野良 Gem の作り方(Ruby) - Camera Obscura の続きです。bundler が必要です。 …

野良 Gem の作り方(Ruby)

野良 Gem(RubyGems.org に登録していない Gem を、ここではこう呼びます)が何とか作れるようになったので、自分用にメモしておきます。初心者なので、理解していないところがたくさんあります。あくまでも備忘録なので、そのつもりで。OS は Linux Mint 17…

野良 Gem を公開してみた(Ruby)

自分でも Gem を作ってみたいなあと思い、野良 Gem(RubyGems.org に登録されていないやつ)を作って GitHub で公開してみました。Naver まとめから画像をダウンロードする Gem です。bundler でインストールして下さい。Gemfile に gem "naver", github: "o…

GitHub から野良 Gem を bundle install

Ruby の Gem って、別に RubyGems.org に登録しなくても使えるのですね。ここで Gem の作り方について解説してあるのですが、そこで例に挙げられている Gem も GitHub から bundler でインストールできます。まずいつもどおりの Gemfile ですが、ただ gem 't…