白猫 BOT作成途中(メイン処理以外で必要そうなのを書いてみた)

追記:2月21日これはもう古くって、使ってません。

// 定数
// moveの引数
public MV_U = 1 // 上
public MV_RU = 2 // 右上
public MV_R = 3 // 右
public MV_RD = 4 // 右下
public MV_D = 5 // 下
public MV_LD = 6 // 左下
public MV_L = 7 // 左
public MV_LU = 8 // 左上
// skilの引数
public SKIL_1 = 1
public SKIL_2 = 2
public SKIL_3 = 3

// ------------------------------------------------------------
// INI -------------------------------------------------------
// ------------------------------------------------------------
print " ---- INI --------"
// 解像度 w:1366 h:768 の端末で開発
public SW = G_SCREEN_W
public SH = G_SCREEN_H
public SW_AJST = 0
public SH_AJST = 0

// 画面のID取得
public W_ID = -1
n = GETALLWIN()
IFB n > 0 // 全ウィンドウの名前を確認
     FOR i = 0 TO (n - 1)
          // ここのandroidは実際のウィンドウ名の文字一部分に変更して使う
          IF POS("android",STATUS(ALL_WIN_ID[i], ST_TITLE)) = 0
              CONTINUE
          ENDIF
          IF MSGBOX("ウィンドウ名は" + STATUS(ALL_WIN_ID[i], ST_TITLE) + "ですか?",BTN_YES OR BTN_NO) = BTN_YES
              W_ID = ALL_WIN_ID[i]
              BREAK
          ENDIF
     NEXT
ELSE
     MSGBOX("ウィンドウが見つかりませんでした")
     exitexit // 終わり
ENDIF

IF W_ID = -1
     MSGBOX ("ウィンドウが見つかりませんでした")
     exitexit // 終わり
ENDIF

// ゲーム画面の位置
public W_POS_X
W_POS_X = STATUS(W_ID,ST_X)
public W_POS_Y
W_POS_Y = STATUS(W_ID,ST_Y)
print "画面の位置:" + W_POS_X + "," + W_POS_Y

// 相対座標になるための補正値
public AJST_X
public AJST_Y
AJST_X = SW_AJST + W_POS_X
AJST_Y = SW_AJST + W_POS_Y

// ゲーム画面のサイズ
W_WIDTH = STATUS(W_ID,ST_WIDTH)
W_HEIGHT = STATUS(W_ID,ST_HEIGHT)
print "画面の幅:" +  W_WIDTH
print "画面の高さ:" + W_HEIGHT

// 歩く速度の補正値
CHR_WALK = INPUT("キャラクタの速度を数字で入力(主人公の速度は0)")
IF CHKNUM(CHR_WALK) = FALSE
     MSGBOX ("半角数字で入力して下さい。")
     exitexit
ENDIF
print "キャラの速度:" + CHR_WALK

// 画面の幅と高さから、タップの基準値を決める
public DEF_POS[2]
DEF_POS[1] = W_WIDTH*1/2 //ゲーム画面の幅の真ん中で
DEF_POS[2] = W_HEIGHT*3/4 // 高さは下から1/4の位置をタップ基準値としておく

// タップの基準となる位置
print "タップ基準位置 [" + DEF_POS[1] + ", " +DEF_POS[2]+ "]"
IF MSGBOX("タップ基準位置をタップしますか?",BTN_YES OR BTN_NO) = BTN_YES
doubleC(DEF_POS[1],DEF_POS[2])
IF MSGBOX("タップした場所は大丈夫でしたか?",BTN_YES OR BTN_NO) = BTN_NO
   exitexit
ENDIF
ENDIF
// 画面の幅と高さから、なぞる距離をきめる
public DEF_NAZORU
DEF_NAZORU = W_WIDTH*1/5

print " ------------------"

count = 1
While True
     timSTART = GETTIME()
     print (G_TIME_HH+":"+G_TIME_NN + ":" +G_TIME_SS + " >> " + count + " 週目" )

    // --------------------------------
    // メイン処理LOOP
    // マップ1~ボスまでの道のり
    // クリアできたらクエスト再挑戦
    // --------------------------------
 
 
 
    sleep(3)
    count = count + 1
    print getTimeSec(timSTART) + " 秒で完了"
Wend



// ---------------------------------------------
// 秒数
// 引数の時間と現在時刻の差を返す
function getTimeSec(tim)
    now = GETTIME()
    result = now - tim
fend

// -------------------------------------------
procedure move(mode,tim)
    SLEEP(0.1)
    MMV(DEF_POS[1] + AJST_X,DEF_POS[2] + AJST_Y) // 基準となる位置
    BTN(LEFT, DOWN)
    SLEEP(0.1)
    for i = 0 to DEF_NAZORU
        SELECT mode
             CASE MV_U
                 MMV(DEF_POS[1] + AJST_X        , DEF_POS[2] + AJST_Y - i)
             CASE MV_RU
                 MMV(DEF_POS[1] + AJST_X + i/1.5, DEF_POS[2] + AJST_Y - i)
             CASE MV_R
                 MMV(DEF_POS[1] + AJST_X + i    , DEF_POS[2] + AJST_Y    )
             CASE MV_RD
                 MMV(DEF_POS[1] + AJST_X + i/1.5, DEF_POS[2] + AJST_Y + i)
             CASE MV_D
                 MMV(DEF_POS[1] + AJST_X        , DEF_POS[2] + AJST_Y + i)
             CASE MV_LD
                 MMV(DEF_POS[1] + AJST_X - i/1.5, DEF_POS[2] + AJST_Y + i)
             CASE MV_L
                 MMV(DEF_POS[1] + AJST_X - i    , DEF_POS[2] + AJST_Y    )
             CASE MV_LU
                 MMV(DEF_POS[1] + AJST_X - i/1.5, DEF_POS[2] + AJST_Y - i)
             DEFAULT
                 naguru(3)
        SELEND
        sleep(0.0001)
    next
    sleep(tim)
    BTN(LEFT, UP)
    SLEEP(0.2)
fend
// --------------------------------------------
// スキル
procedure skil(mode)
    SLEEP(0.1)
    MMV(DEF_POS[1] + AJST_X,DEF_POS[2] + AJST_Y) // 基準となる位置
    BTN(LEFT, DOWN)
    SLEEP(0.3)
    for i = 0 to DEF_NAZORU
        SELECT mode
             CASE SKIL_1
                 MMV(DEF_POS[1] + AJST_X - i/1.5, DEF_POS[2] + AJST_Y - i)
             CASE SKIL_2
                 MMV(DEF_POS[1] + AJST_X + i/1.5, DEF_POS[2] + AJST_Y - i)
             CASE SKIL_3
                 MMV(DEF_POS[1] + AJST_X        , DEF_POS[2] + AJST_Y + i)
             DEFAULT
                 naguru(3)
        SELEND
        sleep(0.0001)
    next
    BTN(LEFT, UP)
    SLEEP(0.2)
fend


// --------------------------------------------
// 殴る
procedure naguru(cnt)
    for i = 0 to cnt
        singleC(DEF_POS[1],DEF_POS[2])
    next
fend

// -------------------------------------------
// シングルクリック
// 引数は、ゲーム画面の相対位置
procedure singleC(tageX, tageY)
    SLEEP(0.2)
    MMV(tageX + AJST_X, tageY + AJST_Y)
    BTN(LEFT, DOWN)
    SLEEP(0.1)
    BTN(LEFT, UP)
    SLEEP(0.2)
fend
// -------------------------------------------
// ダブルクリック
// 引数は、ゲーム画面の相対位置
procedure doubleC(tageX, tageY)
    singleC(tageX, tageY)
    singleC(tageX, tageY)
fend
// -------------------------------------------

0 件のコメント:

コメントを投稿