反動のヴァナ日記&ゲーム日記

2015年8月よりプレイ中のFinalFantasyXIのプレイ&日々プレイしたゲーム日記

【Luarida】オリジナルゲーム「覚えたか?」紹介

また、ゲーム作りました。
どこかでみたことあるようなゲームだと思いますが^^;
その前に、開発に役に立つページを。。というか必須です。

Luaridaの独自コマンドの説明はこちら
http://d.hatena.ne.jp/tarosay/20110217

luaのリファレンスはこちら
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html

はい、では「覚えたか?」の動画とソースを以下に。

【ゲーム説明】
3x3のマスのいずれかのマスが5回ひかります。
その順番を覚えて、画面に覚えたか?と表示されたら、
その順番通りにタッチします。
5つ正解すると次のレベルになり、速度があがります。
レベル5をクリアすると終わりです。
ミスも一回でゲームオーバー。



w,h = canvas.getviewSize()
bdw = w * 0.7
bdh = h * 0.9
selw = bdw / 3
selh = bdh / 3
mondaiX = {}
mondaiY = {}
tx,ty = 0,0
scene = 9
level = 1
tm = system.getSec()
tmtb = {}
tmtb[1] = 0.5
tmtb[2] = 0.25
tmtb[3] = 0.10
tmtb[4] = 0.05
tmtb[5] = 0
cnt = 1
sc = 0
function paintBord()
    canvas.putRect(0,32,bdw,bdh+32,color(255,255,255))
    for i=1,2 do
        canvas.putLine(selw * i,32,selw * i,bdh+32,color(255,255,255))
        canvas.putLine(0,selh*i+32,bdw,selh*i+32,color(255,255,255))
    end
        canvas.putText("LEVEL" .. level .. "    SCORE" .. sc,0,0,32,color(255,255,255))
end
function touchBord(x,y,b)
    mat = string.match((x/selw),"%w+")
    mat2 = string.match(((y-32)/selh),"%w+")
    
    if ((tonumber(mat) < 3) and (tonumber(mat2) < 3)) then
    if (b == 1) then
        canvas.putRect(mat*selw,(mat2*selh)+32,(mat+1)*selw,(mat2+1)*selh+32,color(255,255,255),1)
        --canvas.putText(mat .. mat2,0,0,32,color(255,255,255))
    end
    end
    return mat,mat2
end
function main()
--loop start--
while(true) do
canvas.putCls(color(0,0,0))
paintBord()
-- シーン
if scene == 1 then
    if cnt == 6 then 
         while(tm +1 > system.getSec())do end
         scene = 10
         cnt = 1
    else
    rnx = math.random(0,bdw) 
    rny = math.random(0,bdh+32)
    mondaiX[cnt],mondaiY[cnt] = touchBord(rnx,rny,1)
    canvas.putText(cnt,w/3,h/2,64,color(255,255,0))
   while(tm > system.getSec())do end
    tm = system.getSec() + tmtb[level]
    cnt = cnt + 1
    end
elseif scene == 2 then
        x,y,b = touch(3)
        tx,ty = touchBord(x,y,b)
        if (mondaiX[cnt] == tx) and (mondaiY[cnt] == ty) then
            -- toast("正解!",0)
                canvas.putText("覚えてた!",w/3,h/2,64,color(255,255,0)) 
                cnt = cnt + 1
                sc = sc + 10
        else
                canvas.putText("間違えた!",w/3,h/2,64,color(255,0,0))
                scene = 5
        end
        if cnt == 6 then
                dialog("level" .. level .. "クリア!","next level!!",1)
                level = level + 1
                if level == 6 then
                      dialog("ゲームクリア!","またな…",1)
                      system.exit()
                end 
                cnt = 1
                scene = 9
         end
      
elseif scene == 5 then
     yn = dialog("忘れてた!","またやる?",2)
     if yn == 1 then
          scene = 9
          cnt = 1
          level = 1
          sc = 0
     else
          system.exit()
     end
elseif scene == 9 then
    canvas.putText("覚えろ!",w/3,h/2,64,color(255,255,255)) 
    cnt = cnt + 1 
    while(tm > system.getSec())do end
    tm = system.getSec() + 0.5
    if cnt == 4 then
         cnt = 1
         scene = 1
    end
elseif scene == 10 then
    canvas.putText("覚えたか?!",w/3,h/2,64,color(255,255,255)) 
    cnt = cnt + 1 
    while(tm > system.getSec())do end
    tm = system.getSec() + 0.5
    if cnt == 2 then
         cnt = 1
         scene = 2
    end
end

canvas.putflush()
end
--loop end--
end
main()



スポンサーサイト
  1. 2011/02/28(月) 00:54:34|
  2. | トラックバック:0
  3. | コメント:0

【Luarida】Android端末上で簡易的なアプリの開発ができる!

LuaridaはAndroidの端末上で簡単にアプリが作れちゃうツールです。
適当なテキストエディタなどでプログラムを書いて、そのまま実行出来ちゃいます。
ベース言語は「Lua」です、この言語は前から気になっていたのでちょっと調べていたのですがまさかここでそれが役に立つとは。。と言っても、ちょっと調べただけで全くそれでなにか作った経験が有るというわけじゃないので、リファレンスを見ながら弄っています。

Luaridaはこちらのページのたろサさんが開発されています、バージョンアップはかなりのペースでされています。
http://d.hatena.ne.jp/tarosay/
また、要望なども気軽にということですので欲しい命令があったら連絡してみると良いかも^^
俺はメインでGalaxyTabのカスタムROM「Overcom1.1.3」でOCして1.4Gで動作させているのですが非常に高速です。
DesireでもCM6の1.113Ghzで動作させてみましたが、GalaxyTabよりは劣るもののいい感じで動いています。

簡単に導入とサンプルプログラムでも書いてみようと思います。

まずは、マーケットにてLuaridaを検索しインストールします。
サンプルソースなどもマーケットに用意されていますが、本体を探して間違えずにインストールしてください。

次にテキストエディタをインストールするわけですが、アストロをインストールしてあるのであれば何を使っても大丈夫だと思います。
アストロ自体に拡張子「lua」を登録してしまえば、アストロからLuarida本体やテキストエディタに直接ファイルを送信できるからです。

アストロの設定方法は、menu→more→環境設定→ファイル拡張子を編集
新しい拡張を選択し、拡張子にluaと入力、MIMEタイプはTEXT、サブタイプはlua、右上の四角でお好みのアイコンを設定します。そして保存。
これでアストロ上から拡張子luaのファイルをタップすると、テキストエディタとLuaridaの選択が出ます。

もう一つの方法は、Jota Text Editorを使う方法です。
こちらではエディタ上から直接Luaridaを呼び出すことができます。
menu→設定→送信先アプリ設定で開くを選択、操作の選択で出てきた一覧からLuaridaを選びます。
これでエディタ上でmenuを押下するとメニューにLuaridaのボタンが出来ますのでそれで起動できます。
このアプリではプログラムにエラーが合った場合、エラー行にカーソルが表示されてくれます。
エラーになった時や停止させた時にアプリを選択するようにメニューが出るので、Jota をいつも使うにチェックを入れて選択してください。

以上で簡単ですが、環境が整いました。

初めて作ったアプリですが以下にサンプルを置いておきます。
無駄がいっぱいありますが、ツッコミは受け付けませんw
たとえば、main関数に擦る必要はないだろうし、中で登録している変数はlocal宣言しなくても問題ないはずです。
してないのもあるし。



function main()
local w,h = canvas.getviewSize()
local bx = {}
local by = {}
local bxp = {}
local byp = {}
local blflag = {}
local blsize = 16
local x,y,b = 0,0,0
local psize = w/8
local px,py = w/2,h-30
for i=1,5 do
       bx[i],by[i],bxp[i],byp[i],blflag[i] = 0,0,0,0,0
end
blflag[1] = 1
local ball = 1
local sc,cnt = 0,0
local psec = system.getSec()
canvas.drawText("touch start",w/3,h/2,64,color(255,255,255))
touch(3)
----main loop start
while (true) do
-- time
tm = (system.getSec() - psec)
mat = 60 - string.match(tm,"%w+")
if (mat == 0) then
    dialog("Game Over","SCORE : " .. sc,1)
    system.exit()
end
-- ball on
if (blflag[(cnt / 10 + 1)] == 0) then
    blflag[(cnt / 10 + 1)] = 1
end
for i=1,5 do
   if (blflag[i] == 1) then
       bx[i],by[i],bxp[i],byp[i],blflag[i] = 20,20,12,12,2
    end
end
-- touch
x,y,b = touch()
if (b == 2) then
    px = x
end
canvas.putCls(color(0,0,0))
score  = "SCORE:" .. sc
canvas.putText(score,0,0,32,color(255,255,255))
canvas.putText(mat,w/2,0,32,color(255,255,255))
for i=1,5 do
if (blflag[i] == 2) then
if ( (bx[i] > ( w - blsize )) or ( bx[i] < blsize ) ) then
    bxp[i] = bxp[i] * -1
elseif ( by[i] < 0) then
    byp[i] = byp[i] * -1
elseif ( by[i] > h + blsize ) then
    bxp[i],byp[i] = 12,12
    bx[i],by[i] = math.random(20,w-20),20
elseif (( bx[i] > px - psize) and (bx[i] < px + psize) and (by[i] <
h-20)
and (by[i] > h - 40 )
) then
    if ( bx[i] < px - ( psize * 0.5 ) ) then
        bxp[i] = bxp[i] - 10
    elseif (bx[i] >= px + ( psize * 0.5 ) ) then
        bxp[i] = bxp[i] + 10
    else
        if (bxp[i] > 0) then
            bxp[i] = 12
        else
            bxp[i] = -12
        end
    end
    byp[i] = byp[i] * -1
    sc = sc + math.abs(bxp[i])
    cnt = cnt + 1
end
bx[i] = bx[i] + bxp[i]
by[i] = by[i] + byp[i]
canvas.putCircle( bx[i],by[i],blsize,color(255,255,255) )
end
end
canvas.putRect(px - psize,h-40,px + psize,h-20,color(255,255,255),1)
canvas.putflush()
end
end
main()


60秒間パドルでボールを弾き返すだけのゲームです。
パドルはタッチで操作します。パドルの端にボールが当たると鋭角に反射します。
ボールを反射させると得点が入りますが、鋭角になればなるほど高得点になります。。
1500点以上を目指してください~
とはいえ、端末の性能により速度が変わってしまうので得点も変わってきてしまうと思います。

また、なにかゲームを作ったらココにソースを載せようと思います。
ちなみに、画像や音データを使えばそれらも使えますが、あえてソースのみで完結するものだけを作る予定です。(掲示板で簡単にアプリを公開できますので)




  1. 2011/02/27(日) 22:23:27|
  2. | トラックバック:0
  3. | コメント:0

GalaxyTabでBluetoothキーボード使うなう


GalaxyTabではHID接続でキーボードとマウスが使えます。
しかし、Android標準で使えるというわけではなく、サムソンのカスタムのおかげってことみたいです。
つまりサムソン製のIMEが入っているから使えるという事みたいで、
実際サムソンIME関係のファイルを全て消してしまうと
キーボードを認識はしているものの、文字入力や操作など一切できなくなります。
でも、標準IMEは連続変換ができないので俺的には使えないと判断してます。
今のところ一番使えるのはOpenwnnフリック版です。
連続変換と文字切替ができるのはコレと、Simejiだけみたいです。いまのとこ。
ATOKトライアルもまぁまぁですが、文字切替ができません。

もう一つ問題があって、どのIMEを使っていようとキーボードを認識させると
強制的にIMEがサムソンオリジナルになってしまう事です。
俺はこれが我慢できなくて、色々設定がないのかどうか調べてみたのですが
それらしきものを見つけることはできませんでした。

でも、自分が求めているのに近い状態にすることは出来ましたのでここに書いておきます。

勿論、なにが会っても自己責任でお願いします。rootは取ってあるものとします。

まず、以下のファイルをバックアップをした上で削除します。
/system/app/AxT9IME.apk
/system/app/iWnnIME.apk
これで、非日本語と日本語対応のIMEが表示されなくなります。
一度電源を切り、起動しなおします。
その後、キーボードとマウスのペアリングを確認します。
Bluetoothデバイスの認識されたキーボードを長タップし、オプションをタップ。
接続とHIDデバイスにチェックを付けます。
(この時ひょっとしたらチェックがついたままになっているかもしれません)
これで、マウスもキーボードも認識し、いちいち標準IMEに戻されることもなくなります。

ただ、Openwnnフリック版も含めキーボードを満足いく状態で使えるIMEはまだありません。
マウスは通常指で操作できる部分は殆どがそのまま操作できるようです。
ロック解除もマウスでできます。

ちなみにエミュレータの操作などもキーボードでできるので(勿論エミュレータ側が対応してれば)
タップだとやりにくかった操作がいくらかやりやすくなります。
Bluetoothのゲームパッドを用意すればそれでもできるものと思います。
その内やってみようと思います。

以下にBluetoothキーボードを使ったときに発見した操作を書いておきます。
homeボタン → HOME
メニュー   → F1
戻る     → ESC
検索     → メニュー
電源    → F4
通話履歴  → F3

Openwnnフリック版入力時
文字切替  →  SHIFT + SPACE
記号    →  Alt + SPACE(ただし、選択はタップ)

  1. 2011/02/16(水) 02:56:20|
  2. | トラックバック:0
  3. | コメント:0

折角生きている垢のブログなので復帰することにしました。

今日以降はこのブログではAndroidに関してのやったことを書いていくことにした。

  1. 2011/02/16(水) 02:27:51|
  2. | トラックバック:0
  3. | コメント:0

閲覧者数

現在の閲覧者数:

訪問数

プロフィール

ヴァナ時計

最新記事

カテゴリ

FF11 (144)
FF11でJoytokey (7)
FF11自分用φ(`д´)メモメモ... (1)
未分類 (2)
雑談その他 (9)
(137)
EQ2 (1)
FFXIXHB (1)
GPD WIN (2)
FF15 (1)
DQ11 (2)
DDON (1)
DRPG (1)
steam (1)
二ノ国2 (1)
ArcheAge (4)
PS2 (2)
3DS (1)

最新コメント

ランキング

記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR