独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] 真・プリセットスクリプトフルグレードアップ計画5:FontとRectのなんやかや

前回の続きなので今日はFontクラスとRectクラス。
ただしあっさり。

続きを読む >>

| 2015.02.24 Tuesday 21:20 | comments(0) | trackbacks(0) |

[ RGSS奮闘記 ] 真・プリセットスクリプトフルグレードアップ計画1:相変わらず舌の根が乾かない人

ということで、リベンジである。
「真・プリセットスクリプトフルグレードアップ計画」と題し、XPのプリセットのアレな部分を改善していく。
少なくとも、VXやAceくらいまではきれいなコードにしたい。

まずは、下準備的なコードを書いていこう。
前から何度もネタにしているObject#tapやSymbol#to_procの定義をはじめ、組み込みクラスのメソッドの一部再定義などである。
最初にとりあえずSymbol#to_proc。これがないといろいろはじまらない。
class Symbol
  def to_proc
    Proc.new { |obj, *args| obj.send(self, *args) }
  end
end
続いて、Objectクラスだが、tapメソッドを定義するだけでなくいろいろといじる。
class Object
  undef id if respond_to?(:id)
  def tap
    yield(self)
    self
  end
  def try(*a, &b)
    if a.empty? && block_given?
      yield self
    else
      public_send(*a, &b) if respond_to?(a.first)
    end
  end
end
Object#idを削除。これはnil.idが4を返すことによる。 RGSS内ではよくいろいろなIDを利用するが、nil.idが4となることで、本来ならエラーになってほしい処理を通ってしまい、バグが見つけにくくなるおそれがある。また、このメソッドを削除しても、同じ意味のObject#object_idがあるから問題ない。
tapは先日の説明の通りなので説明は省略。
さて、今回新しく出てきたtryメソッド。これは単純に言えば「メソッドがあれば実行」するためのものである。詳しいところはググればいくらでも出てくるのではしょるが、つまり
name = user ? user.name : "名無し"
name = user.try(:name) || "名無し"
となっるくらいすっきりする話だ。

次回は再定義いろいろ。


タグ:[RGSS] [フルグレードアップ計画]

| 2015.02.18 Wednesday 22:43 | comments(0) | trackbacks(0) |

[ RGSS奮闘記 ] ナイスブロック

RGSSをやってると、「インスタンスの配列」が必要になってくることがある。 それはActorかもしれないしSpriteかもしれないが、個人的に最たるものはWindowであると思う。 例えばプリセットのScene_FileではWindow_SaveFileの配列を作って管理している。 しかしその定義のコードを見てみると……

続きを読む >>

| 2015.02.09 Monday 21:58 | comments(0) | trackbacks(0) |

[ RGSS奮闘記 ] 久々に勉強

※この記事はWordPressで書いていたものの転記です。


制御文字素材のために、RGSSで使えそうな1バイト文字について調べてみることにした。
そのために1バイト文字を00〜FFで出力しようとしたのだがこれが難しい。
1バイト文字はたとえば
"¥x5C"     #=> ¥ 

のように表記するのだが、ループでこれを順番に表示しようにもバックスラッシュの都合か何かとか(適当)で狙い通り1バイト文字を出力してくれない。

いろいろ調べた結果、当たったのがArray#packメソッドである。(参考サイト:vivid memo)これはレシーバである配列を「バイナリとしてパック」した文字列を返す。ここでUTF-8の1バイトにできるようなテンプレート文字があれば万々歳のめでたしめでたしというわけだ。

で。
まさに「U」というテンプレート文字を発見。早速試してみる。
p "¥¥".unpack("U")     #=> [92]

お見事である。これで、特定の意味を持つ文字になっていないものを洗い出す。
255.times do |i|
p [i].pack("U")
end>

結果、0〜6、14〜26、28〜31、127〜255(10進数)が該当することが分かった。全152種である。これだけあればたいていの用途には間に合うだろう。

……といったところで時間がなくなり終了。果たして役立てられるのはいつの日か(笑)


タグ:[制作雑記] [RGSS] [1バイト文字] [Array#pack] [UTF-8] [素材話]

| 2013.09.05 Thursday 21:23 | comments(0) | trackbacks(0) |

[ RGSS奮闘記 ] RGSS奮闘記140:BMPファイルフォーマットとBitmapクラス2

この記事は新ブログに移行しました。

| 2012.08.15 Wednesday 21:04 | comments(0) | trackbacks(0) |

<< | 2/16PAGES | >>

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   
<< October 2018 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM