2013年3月1日金曜日

モーション関数テスト

モーション関数のテストプログラムです。 本体を傾けるとその情報を表示します。
//----------------------------------------------------------------------------------------------
// motion test
//----------------------------------------------------------------------------------------------

print "versionXBiOSMotion$=";versionXBiOSMotion$()

setFunctionKey(0,"end"   ,'!')
setFunctionKey(1,"pause" ,'p')
setFunctionKey(2,"start" ,'s')
setFunctionKey(3,"clear" ,'c')
setFunctionKey(4,"degree",'d')
setFunctionKey(5,"veloc" ,'v')
setFunctionKey(6,"rotate",'r')
displayFunctionKey(YES,0,6)
kBackgroundAlpha(0.9)

int mode=MOTION_DEGREE
if motionStart(10,mode) then {
    print localizedString("モーションは使えません","Can't use motion.")
    end
}
printMode(mode)

float x,y,z
int ky,cnt,i

while YES
    if not kbhit() then {
        i=0
        cnt=motionCount()
        if cnt>0 then locate(0,1):print "cnt=";cnt
        while cnt>0
            x=motionGetRotation(y,z)
            locate(0,2+i)
            if mode=MOTION_ROTATION then {
                if isLocalizeJapan() then {
                    print using "左右=+#.####,上下=+#.####,方位=+#.####";x,y,z
                } else {
                    print using "pitch=+#.####,roll=+#.####,yaw=+#.####";x,y,z
                }
            } else {
                if mode=MOTION_DEGREE then {
                    if isLocalizeJapan() then {
                        print using "角度:x=+##.####,y=+##.####,z=+##.####";x,y,z
                    } else {
                        print using "degree:x=+##.####,y=+##.####,z=+##.####";x,y,z
                    }
                } else {
                    if isLocalizeJapan() then {
                        print using "角速度:x=+##.####,y=+##.####,z=+##.####";x,y,z
                    } else {
                        print using "velocity:x=+##.####,y=+##.####,z=+##.####";x,y,z
                    }
                }
            }
            cnt=cnt-1
            i=i+1
            if kbhit() then break
        endwhile
    } else {
        ky=inkey()
        switch ky
            case 'p'
                motionPause(YES)
                print "Pause"
                break
            case 's'
                motionPause(NO)
                print "Start"
                break
            case 'c'
                cls()
                motionClear()
                break
            case 'd'
                mode=MOTION_DEGREE
                motionSelectData(mode)
                cls()
                motionClear()
                printMode(mode)
                break
            case 'v'
                mode=MOTION_VELOCITY
                motionSelectData(mode)
                cls()
                motionClear()
                printMode(mode)
                break
            case 'r'
                mode=MOTION_ROTATION
                motionSelectData(mode)
                cls()
                motionClear()
                printMode(mode)
                break
            default:
                // 念のため / just in case
                beep()
                break
        endswitch
        if ky='!' then break
    }
endwhile
motionEnd()
end

//----------------------------------------------------------------------------------------------

func printMode(mode;int)
    locate(0,2)
    if mode=MOTION_DEGREE   then print localizedString("角度     ","DEGREE  ")
    if mode=MOTION_VELOCITY then print localizedString("角速度   ","VEROCITY")
    if mode=MOTION_ROTATION then print localizedString("オイラー角","EULER   ")
endfunc

func str localizedString(js;str,es;str)
    if isLocalizeJapan() then return(js)
    return (es)
endfunc

//----------------------------------------------------------------------------------------------

Zipファイル :XBtests.zip

0 件のコメント:

コメントを投稿