Functions - snipsnipsnip/dotgame GitHub Wiki

色塗り。

dot 点を打つ

書式:

  dot X座標, Y座標
  dot X座標, Y座標, 色の名前 (red, blue, green..)
  dot X座標, Y座標, 色の濃さ (0~255)
  dot X座標, Y座標, R, G, B
例:

  dot 10, 10
  dot 3, 3
  dot 10, 10, blue
  dot 10, 10, 50, 200, 50

line 線を引く

書式:
  line もとのX座標, もとのY座標, 先のX座標, 先のY座標
  line もとのX座標, もとのY座標, 先のX座標, 先のY座標
  line もとのX座標, もとのY座標, 先のX座標, 先のY座標, 色の名前 (red, blue, green..)
  line もとのX座標, もとのY座標, 先のX座標, 先のY座標, 色の濃さ (0~255)
  line もとのX座標, もとのY座標, 先のX座標, 先のY座標, R, G, B

例:
  line 10, 10, 50, 200, black

image 画像を張り付ける

書式:
  image "ファイル名"
  image "ファイル名", 左上のX座標, 左上のY座標
  image "ファイル名", 左上のX座標, 左上のY座標, 倍率
  image "ファイル名", 左上のX座標, 左上のY座標, { :パラメータ名 => パラメータ値, :パラメータ名 => パラメータ値, ... }

例:
  image "neko.bmp"
  image "c:/tree.gif", 5, 5
  image "c:/face.png", 3, 3, 2

ファイル名はフォルダ越しに指定する場合 `\` ではなく `/` を使うこと。

詳細パラメータを使うと回転や拡大縮小をしたりキャラの顔色を悪くしたりできる。詳細はhttp://www.starruby.info/ja/documentation/api_reference/star_ruby.texture#render_textureを参照。

ぱっと見心臓に悪い書式だがちゃんとキャッシュするので安心してほしい。`DotGame.get_texture(テクスチャ名)`という関数を使うとキャッシュしたテクスチャを取り出して操作できる。

画像サイズを調べるには imagew, imageh を使う。

square 四角を描く

書式:
  square 左上x, 左上y, 横幅, 縦幅
  square 左上x, 左上y, 横幅, 縦幅
  square 左上x, 左上y, 横幅, 縦幅, 色の名前 (red, blue, green..)
  square 左上x, 左上y, 横幅, 縦幅, 色の濃さ (0~255)
  square 左上x, 左上y, 横幅, 縦幅, R, G, B

例:
  square 10, 10, 50, 50, black

text 英数字を書く

書式:
  text "メッセージ"
  text 変数名
  text 数値
  text "メッセージ", 左上のX座標, 左上のY座標
  text "メッセージ", 左上のX座標, 左上のY座標, サイズ
  text "メッセージ", 左上のX座標, 左上のY座標, サイズ, 色の名前 (red, blue, green..)
  text "メッセージ", 左上のX座標, 左上のY座標, サイズ, 色の濃さ (0~255)
  text "メッセージ", 左上のX座標, 左上のY座標, サイズ, R, G, B

例:
  text 100
  text "hoge"
  text "hoge", 5, 5, red

8bitっぽいフォントが見つからないので日本語には対応していない。

`textbold`という関数もある。そちらはフチがある。形式は同じ。

bucket 塗りつぶし

書式:
  bucket 色の名前 (red, blue, green..)
  bucket 色の濃さ (0~255)
  bucket R, G, B

例:
  bucket red

単純に画面全体を一色にする。ペイントのバケツのように範囲を塗り絵してくれる訳ではない。

効果音とBGM。

playse 効果音を鳴らす

効果音を鳴らす
数値を指定すると再生を止める

書式:
  playse フェードアウト時間
  playse "ファイル名"
  playse "ファイル名", 音量 (0~255)
  playse "ファイル名", 音量 (0~255), パン (-255~255)

例:
  playse "cluck.wav"
  playse "dump.ogg"

playbgm BGMを鳴らす

BGMを鳴らす
数値を指定すると再生を止める

書式:
  playbgm フェードアウト時間 (ミリ秒)
  playbgm "ファイル名"
  playbgm "ファイル名", 音量 (0~255)
  playbgm "ファイル名", 音量 (0~255), フェードイン時間 (ミリ秒)

例:
  playbgm "steelpython.ogg"
  playbgm "discretemusic.ogg", 50
  playbgm "landau.ogg", 255, 10000
  playbgm 1000

入力

キーボードとマウスとジョイスティック。

leftmouse?, leftclick? マウスボタン

微妙に効果が違う。

`leftclick?`はクリックに1度だけ反応するが、`leftmouse?`は押しっぱなしなら条件が成立し続ける。

leftmouse?
マウスの左ボタンが押されているか調べる

例:
   if leftmouse?
     # 左クリックしている間の処理
   end
leftclick?
マウスの左ボタンがいま放された瞬間か調べる

例:
   if leftclick?
     # 左クリックを放した瞬間の処理
   end
rightmouse?
マウスの右ボタンが押されているか調べる

例:
   if rightmouse?
     # 右クリックしている間の処理
   end
rightclick?
マウスの右ボタンがいま放された瞬間か調べる

例:
   if rightclick?
     # 右クリックを放した瞬間の処理
   end

同様に `middlemouse?` と `middleclick?` がある。

zkey?, zrelease? アルファベットキー

zkey?
キーボードのZが押されているか調べる

例:
   if zkey?
     # Zキーを押している間の処理
   end

他に`xkey?`, `ckey?`, `vkey?`など一通りある。

`zrelease?, xrelease?` などが使える。これらはマウスの`leftclick?`のように、離した瞬間だけtrueになってそれ以外はfalseになる。

left?, right?, up?, down? 矢印キー

`left?, right?, up?, down?`の4つは矢印キー。 同様にクリック版で`leftrelease?, rightrelease?, uprelease?, downrelease?` がある。

矢印キーが押されているか調べる

例:
   if up?
     # ↑キーを押している間の処理
   end

space?, enter?, escape? 特別キー

扱いは他のキーと同様。

マウスのようなクリック検出用に`zrelease?, spacerelease?, enterrelease?, escaperelease?` などがある。これらは離した瞬間だけtrueになってそれ以外はfalseになる。

padleft?, padright?, pada?, padb? ジョイパッド

パッドの上下左右は `padleft?, padright?, padup?, paddown?` で調べられる。 ボタンは `pada?, padb?, padc?, padd? ...` のようにした。

離した瞬間の検出も `padarelease?, padbrelease?` や `padleftrelease?, padrightrelease?` のように調べられる。

2つ目以降のジョイパッドは `pad1left?, pad1right?, pad1up?, pad1down?` や `pad1a?` や `pad2rightrelease?` のような感じの名前。`pada?`などで反応する一つ目のパッドは0番で、それ以降二つ目が1番, 三つ目が2番という感じ。

key?, release? キー汎用

書式:
  key?(:キー名)
  release?(:キー名)
  key?(:キー名, :デバイス名)
  release?(:キー名, :デバイス名)

例:
  if release?(:f5)
    # ページを更新
  end

めぼしいキーは専用に関数の名前をつけたが、数字キーやファンクションキーやシフトなどはつけてないのでこの汎用関数を使って調べる。キーの名前はhttp://www.starruby.info/ja/documentation/api_reference/star_ruby.input参照。

mousex, mousey マウス位置

`mousex`と`mousey`でマウスの位置が調べられる。

main() {
  dot mousex, mousey, red
}

`x, y = mouse` とすると両方一度に調べられる。短い名前が欲しい時便利。

その他

デバッグや計算に。

title タイトルバーに文字を出す

main() {
  title mousex
}

time 起動からのミリ秒を調べる

カウンタに使うと便利。

書式:
  title 変数名
  title "出したい文字"
main() {
  title time

  t = time / 100.0
  x = mousex + cos(t) * 4
  y = mousey + sin(t) * 4
  dot x, y
}

screenw, screenh ゲーム画面サイズ

`screenw`と`screenh`でゲーム画面の横幅と縦幅が調べられる。

main() {
  line 5, 5, screenw - 5, 5, red
  line 5, 5, 5, screenh - 5 red
  line screenw - 5, 5, screenw - 5, screenh - 5, red
  line 5, screenh - 5, screenw - 5, screenh - 5, red
}

めったに使わない物

make_texture テクスチャを作る

書式:
  変数名 = make_texture(横幅, 縦幅)

例:
  tex = make_texture(2, 2)
  tex.bucket green
  tex.dot 0, 0
  tex.dot 1, 1
  image tex

タイルパターンを書きたい場合なんかに使う。初期状態では全画素真っ黒。 `テクスチャ変数.描画命令(引数...)` のように書いてテクスチャ内に書き込む。 用意したテクスチャは`image`で貼り付ける。

define_color 色の名前を登録

書式:
  define_color :色名, R, G, B, A

標準で用意してあるのは `white, gray, black, red, green, blue, yellow, cyan, magenta, purple, yellow, transparent`の12色。最後のtransparentは透明色。

色が足りなければ`define_color`で新しく登録することができる。mainの頭のほうでやること。

透明度(A)は省略しても良い。

imagew, imageh 画像サイズを調べる

書式:
  w = imagew("画像ファイル名")
  h = imageh("画像ファイル名")

例:
  w = imagew("hoge.png")
  h = imageh("hoge.png")

  image "hoge.png", mousex - w / 2, mousey - h / 2
  dot w + mousex + 10 * cos(time / 100.0), h + mousex + 10 * sin(time / 100.0)
  dot w + mousex + 10 * cos(time / -100.0), h + mousex + 10 * sin(time / -100.0)
⚠️ **GitHub.com Fallback** ⚠️