コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

Luarida Ver1.01Beta リリース

Androidスクリプト言語のLuaridaをリリースしました。まだまだβ版でバグバグですが、ひとまずアンドロイドマーケットに公開しました。
簡単に説明したいと思います。

名前の由来

Luaridaは、Luaというスクリプト言語で書きます。名前の先頭のLuaはこの言語名を取っています。後半部は私が住んでいるところの名前です。和歌山県有田市(ありだし)というところに住んでいるので、地元有田の名前を取って「ルアリダ」と付けました。何とか、地元有田市を有名にしたいと思っています。
アイコンは有田の名物、みかんと太刀魚です。太刀魚の漁獲高は全国一らしいです。みかんは有名な有田みかんの里です。

Lua言語

LuaridaはLua言語を用いて記述します。Luaの説明はLua5.1リファレンスマニュアルに詳しく書かれています。いろいろなことができますが、そんなに凝らなくてもif文とかfor文、while文など、C言語ライクな書式でプログラムが書けます。

LuairdaのAndroid用拡張命令

Luaridaに実装したAndroid用の命令をざっと書きます。Lua言語の特徴として、関数からの戻り値を複数取ることができます。戻り値にカンマが付いているのは、戻り値が複数あることを示します。また、引数でカッコが付いているものは省略可能です。

touch( [タッチモード] ) 戻り値(X座標,Y座標,タッチ状態)

  • touch() 画面のタッチ状態を取得します。
  • touch(0) 画面のタッチ状態を取得します。
  • touch(1) タッチダウンもしくはタッチ状態であれば処理が戻ります。
  • touch(2) タッチアップもしくは離れている状態であれば処理が戻ります。
  • touch(3) タッチアップ状態からタッチして、さらに指が離れた状態になれば処理が戻ります。
  • タッチの状態( 0:タッチ押下, 1:指を持ち上げている, 2:指を持ち上げずにスライドさせている, 3:UP+DOWNの同時発生(=キャンセル), 4:ターゲットとするUIの範囲外を押下

color( R, G, B [,Alpha] ) 戻り値(色コード)

  • 色コードが返ります。
  • R,G,B,Alphaは0〜255。

canvas.drawText( 文字列(255バイト), X座標, Y座標, 文字サイズ, 文字色 [,背景色] )

  • 文字を描きます
  • 文字に背景色を付けたいときは、背景色を付ければ表示されます。

canvas.drawTextCenter( 文字列(255バイト), X座標, Y座標, 文字サイズ, 文字色 [,背景色] )

  • X座標の値が中央に来るように文字を描きます。
  • 文字に背景色を付けたいときは、背景色を付ければ表示されます。

canvas.drawTextBox( 文字列(255バイト), X座標, Y座標, サイズ, 文字色, 描画範囲 [,背景色] ) 戻り値(表示した行数)

  • 指定された範囲に折り返して文字を描きます。
  • 文字に背景色を付けたいときは、背景色を付ければ表示されます。

canvas.drawLine( startX, startY, stopX, stopY, 色)

  • 画面に線を引きます

canvas.drawRect( startX, startY, stopX, stopY, 色 [,塗りつぶし])

  • 画面にボックスを描きます
  • 塗りつぶし 0:枠だけ, 1:塗りつぶし

canvas.drawCircle( CenterX, CenterY, RadiusX, 色 [,塗りつぶし])

  • 画面に円を描きます
  • 塗りつぶし 0:枠だけ, 1:塗りつぶし

canvas.drawCls( 背景色 )

  • 画面を塗りつぶします

canvas.getviewSize() 戻り値(横サイズ,縦サイズ)

  • 画面のサイズを取得します

dialog(タイトル, 本文 [,ボタンの種類]) 戻り値(ボタンコード)

  • 画面にダイアログを出します。
  • ボタンの種類: 0:ボタンなし, 1:OK, 2:Yes/No, 3:Yes/No/Cancel
  • 戻り値 0:Cancel, 1:OK/Yes, 2: No

toast(本文,表示時間)

  • 画面にトーストを出します。
  • 表示時間: 0:短い, 1:長い

editText(タイトル) 戻り値(入力文字, 入力結果コード)

  • 文字入力ダイアログを表示します。
  • 入力結果コード: 0:Cancel, 1:OK

expCall(class名)

  • Androidアプリを明示的に呼び出します。
  • アプリを呼び出した後、Luaridaは停止します。ただし、エラーが戻ったときには処理を続けます。

impCall(URIデータ)

  • Androidアプリを暗黙的に呼び出します。
  • アプリを呼び出した後、Luaridaは停止します。ただし、エラーが戻ったときには処理を続けます。
  • 現在、Intent.ACTION_VIEWのみに対応しています。

item.add(文字 [,フラグ])

  • リスト等の表示アイテムを追加します。
  • Luaridaでは、ListやRadioボタン、Checkボタンダイアログを出すことができます。このコマンドは出力アイテムをセットするものです。
  • フラグはチェックリストのチェックの有無をセットします。0:false, 1:true

item.clear()

  • 追加した表示アイテムをクリアします。

item.list(文字) 戻り値(選択番号,選択結果コード)

  • 選択リストを表示します。
  • 選択番号は0〜255です。
  • 選択結果コード: 0:キャンセル, 1:選択された

item.radio(文字, 初期選択位置) 戻り値(選択番号,選択結果コード)

  • 選択ラジオボタンを表示します。
  • 選択番号は0〜255です。
  • 選択結果コード: 0:キャンセル, 1:選択された

item.check(文字) 戻り値(チェック結果1, チェック結果2, チェック結果3, チェック結果4, チェック結果コード)

  • 選択チェックボタンを表示します。
  • チェック結果は4つ戻ってきます。2バイト(16ビット)×4つ分ので64個のチェックの有無がビットで入っています。
  • チェック結果コード: 0:キャンセル, 1:選択された

system.setrun(Luaridaファイル名)

system.version() 戻り値(バージョン)

  • Luaridaのバージョンが返ります。

Luaridaサンプル

恒例?のFizzBuzz問題のサンプルを書いておきます。

------------------------------------------
--FizzBizz問題
------------------------------------------
function main()
local fizz = "Fizz"
local bizz = "Buzz"
local desu = "です"
local three = 3
local five = 5
local value
local ValueEnd = 15
local y

  canvas.drawCls( color(255,255,255) )
  canvas.drawText( "FizzBuzz問題を解いてみます", 0, 0, 16, color(0,0,0) )
  y = 1

  for value=1, ValueEnd do
    if( value<three )then
      if( value<five )then
        canvas.drawText( value..desu, 0, y*16, 16, color(0,0,0) )
      else
        canvas.drawText( bizz..desu, 0, y*16, 16, color(255,0,0) )
        five = five + 5
      end
    else
      three = three + 3
      if( value<five )then
        canvas.drawText( fizz..desu, 0, y*16, 16, color(0,255,0) )
      else
        canvas.drawText( fizz..bizz..desu, 0, y*16, 16, color(0,0,255) )
        five = five + 5
      end
    end
    y = y + 1
  end
  touch(3)
end
main()