はてな?RGSS(うらぐち) RSSフィード

11月1日の日記

Apple ][でミュージックビデオ

Jed's Other Poem (Beautiful Ground)

http://www.stewdio.org/jed/

最高です。

という言葉では足りません。

本日の追加キーワード

高橋メソッドレイヤー ベーシックのソース

2005-11-1公開時点のRGSSソース全文です。

#プレゼンデータ読み込み(dataread)
# ファイルから読み込んだデータをまとめて返す
def dataread(filename)
  io = open(filename)
  result = ""
  io.each {|line|
    result += line
  }
  io.close
  return result
end
#ウェイト(waitkey)
#キー入力待ち
def waitkey
  loop {
    Graphics.update
    Input.update 
    if Input.trigger?(Input::C)
      return "C"
    end
    if Input.trigger?(Input::B)
      return "B"
    end
  }
end
#T 文字表示用クラス
#
#■使用方法
#・t = T.new
#  で生成
#・t.write "なまむぎなまごめなまたまご"
#  で描画
#・t.clear
#  で消去
#  (clearで消さなくても、次の文字をwriteすれば、前の文字は自動的にclearされます)
#・行区切り文字は"\n"です。(3行ぐらいまで対応中)

class T
  def initialize
    @sprite = Sprite.new
    @sprite.x = 320
    @sprite.y = 240
    @sprite.ox = 1000
    @sprite.oy = 240
    @sprite.bitmap = Bitmap.new(2000,480)
  end
  def write(【全文字列】)
    【行数】 = 【全文字列】.split("\n").size
    【調整値】 = 480
    case 【行数】
    when 1
      【調整値】 = 480
      zoom = 4
    when 2
      【調整値】 = 300
      zoom = 2.2
    else
      【調整値】 = 400
      zoom = 1.6
    end
    【1行の高さ】 = 【調整値】 / (【行数】 + 1)
    @sprite.bitmap.clear
    【全文字列】.split("\n").each_with_index { |【1行文字列】,i|
      rect = @sprite.bitmap.text_size(【1行文字列】)
      while rect.width * zoom > 640
        zoom -= 0.1
      end
      @sprite.zoom_x = zoom
      @sprite.zoom_y = zoom
      y = (【調整値】 / 2 * -1) + 【1行の高さ】 * (i+1)
      @sprite.bitmap.draw_text(0,y,2000,480,【1行文字列】,1)
    }
  end
  def clear
    @sprite.bitmap.clear
  end
  def dispose
    @sprite.bitmap.dispose
    @sprite.dispose
  end
end
#初期設定など

#プレゼンテーションデータファイル名
PRESENTATION_FILENAME = "プレゼン内容.txt"

#デフォルトのフォントを定義
Font.default_name = ["HGPゴシックE","MS Pゴシック"]
Font.default_size = 96
Font.default_color = Color.new(0,0,0,255)
Font.default_bold = false
Font.default_italic = false
#メイン処理セクション
viewport = Viewport.new(0,0,640,480)
viewport.color = Color.new(255,255,255,255)

#文字表示クラス(T)生成
t = T.new

#プレゼンデータ読み込み
alldata = dataread(PRESENTATION_FILENAME)

slideset = Array.new
#プレゼンデータをスライドデータの配列に変換
alldata.split("-\n").each { |text|
  slideset << text
}

#プレゼンデータをスライド単位で表示
page = 1
while page < slideset.size + 1
  t.write slideset[page - 1] 
  【入力されたキー】 = waitkey()
  case 【入力されたキー】
  when "C"
    page += 1
  when "B"
    page -= 1 if page != 1
  end
end

t.dispose

exit

SchwarzSchwarz2005/11/01 18:51お疲れ様です!!
今度のプレゼンは高橋メソッドでやろうかと企んでいるのですが、
もしかすると使わせてもらうかもしれません^^;

mr-80bmr-80b2005/11/01 19:59ええっ!何のプレゼンですか?光栄ですが…。
でもきっとSchwarzさんのいじりまくったSchwarzオリジナルバージョンになると見ました(笑)
よかったら、是非公開してくださいね。

SchwarzSchwarz2005/11/01 20:44今度といっても結構先の話なので詳細はわからないのですが、
多分英語のプレゼンです。(英語で高橋メソッドが効くのだろうか??)
たぶん英語できれいに見えるように微調整するだけで、ほとんど手を入れないと思います^^;