Hatena::Groupuwsc

CX's UWSC Diary

Windows 自動化ツール「UWSC」を使って何が出来るかを探求する日記です。構文をマスターしたい方はこちらをどうぞ→UWSC 基礎文法最速マスター
こくばん.in」投稿サンプル
アインシュタイン マリオとクッパ 千円札(見本) 猫
eピアノ」「Google Moog」自動演奏サンプル
eピアノ Google Moog
はてなロクロ」投稿サンプル
マリオ テトリス デフォルトさん はてなロゴ 全自動マリオ 3Dプロッタ
はてなハイク」投稿サンプル
デフォルトさん カラーパレット カラーパレット マリオ ルイージ カラーパレット 日本地図
 | 

2008-03-02はてなハイク - 全自動マリオ

全自動マリオ

| 03:48 |  全自動マリオ - CX's UWSC Diary を含むブックマーク はてなブックマーク -  全自動マリオ - CX's UWSC Diary

  • ソース

hatena_haiku_mario_plotter.uws [ダウンロード]

// ---------------------------------------------------------
// File : hatena_haiku_mario_plotter.uws
// ---------------------------------------------------------
// 
// <使用上の注意>
// ・このスクリプトはWindows 自動化ソフト「UWSC」を使った「はてなハイク」自動化スクリプトです。
// ・以下の環境でのみスクリプトの動作確認済みです。
//   ・解像度:1280x1024, Windows XP(クラシックモード) + IE7(ウィンドウ最大化、ツールバー無し)。タスクバーは下に配置。
//   ・ただし、お題の「あり」「なし」で開始位置(x,y座標)が変わります。都度、調整してください。
// ・中断する場合は [Alt] + [F2] です。動作中にウィンドウを切り替えないでください。誤動作します。
//
// <使用ツール>
// ■ UWSC Free版 Ver4.4
// http://www.uwsc.info/download.html
// 
// <スクリプトを作成した人>
// id:cx20
// 
// <変更履歴>
// 2008/03/02 Ver0.01 とりあえず版作成。

Option Explicit

Public g_winID_haiku = 0

g_winID_haiku = はてなハイクのウィンドウIDを取得()
Ifb g_winID_haiku = -1 Then
    MsgBox( "はてなハイク が起動していない為、スクリプトを終了します。" )
    ExitExit
EndIf

// 「はてなハイク」ページをアクティブ化
ACW(g_winID_haiku)

//Public g_x = 322 // 描画開始位置(Firefox 最大化時)
//Public g_y = 298 // 描画開始位置
Public g_x = 264 // 描画開始位置(IE7 最大化時)
Public g_y = 281 // 描画開始位置(お題の「あり」「なし」で位置が変わる為、要調整)
Public g_height = 738
Public g_width  = 612
//Public g_r = 5  // 円の半径
//Public g_r = 10  // 円の半径
//Public g_r = 8  // 円の半径
Public g_r = 4  // 円の半径
Public g_pi = 3.14159265 // PI
Public g_wait = 5 // 実行までの待ち時間(ミリ秒)
//Public g_wait = 0 // 実行までの待ち時間(ミリ秒)

//// 「ペイント」のウィンドウIDを取得
//Public g_winID_mspaint = GETID("ペイント")
//Ifb g_winID_mspaint = -1 Then
//   MsgBox( "ペイントが起動していない為、スクリプトを終了します。" )
//   ExitExit
//EndIf

// 描画サンプル
//テスト
マリオを描く
//はてなデフォルトを描く

Function はてなハイクのウィンドウIDを取得()
    Dim winID = 0

    // 「はてなハイク」のウィンドウIDを取得(IE6 版)
    winID = GETID("はてなハイク - Microsoft Internet Explorer","IEFrame")
    Ifb winID <> -1 Then
        Result = winID
        Exit
    EndIf
    
    // 「はてなハイク」のウィンドウIDを取得(IE7 版)
    winID = GETID("はてなハイク - Windows Internet Explorer","IEFrame")
    Ifb winID <> -1 Then
        Result = winID
        Exit
    EndIf

    // 「はてなハイク」のウィンドウIDを取得(Firefox 版)
    winID = GETID("はてなハイク - Mozilla Firefox","MozillaUIWindowClass")
    Ifb winID <> -1 Then
        Result = winID
        Exit
    EndIf

    Result = winID
Fend

Procedure テスト()
    Dim x
    Dim y
    x = 10
    y = 10
    筆の太さを選択( 0 ) // 細筆を選択
    筆の色を色番号で選択( 0 ) // 白を選択
    四角形を描く( g_x + x, g_y + y )
Fend

Procedure はてなデフォルトを描く()
    筆の太さを選択( 0 ) // 細筆を選択

  Dim strLines[] = _
    "無無無肌肌肌肌無無無", _
    "無無肌黄黄黄黄肌無無", _
    "無肌黄黄黄黄黄黄茶無", _
    "無肌黄黄黄黄黄黄茶無", _
    "無肌黄黄黄黄黄黄茶無", _
    "無肌肌黄黄黄黄肌茶無", _
    "無無茶肌肌肌肌茶無無", _
    "無青青茶茶茶茶青青無", _
    "青青青青青青青青青青", _
    "青青青青青青青青青紫", _
    "青青紫青青青青紫青紫", _
    "青青紫青青青青紫青紫", _
    "青青紫青青青青紫青紫", _
    "紫紫紫紫紫紫紫紫紫紫"
  はてなハイクで描く( strLines )
Fend

Procedure マリオを描く()
    筆の太さを選択( 0 ) // 細筆を選択

    // ‥‥‥‥‥‥‥‥‥‥‥‥‥□□□‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥‥‥‥‥‥‥‥‥■■□□□〓‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥‥‥‥‥‥‥‥■■■□□〓〓‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥‥‥‥‥‥□□■■■■〓〓■‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥‥〓‥‥■□□■■■■■■■‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥〓‥〓■■□□■■■■■■■■‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥〓〓〓□□□■■■〓■■■■■‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥〓〓〓〓□■■■〓〓〓■■■■‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥□〓〓〓■■〓〓□■〓■■■■□□■■■□‥‥‥‥‥‥‥‥‥‥‥‥
    // ‥‥□‥〓〓〓〓■■■〓■■■■□□■■□□〓■‥‥‥‥‥‥‥‥‥‥
    // ‥‥□‥□□■‥■■□〓■■■■□□■□□□〓〓■□□□‥‥‥‥‥‥
    // ‥‥‥‥‥□‥‥‥■〓〓■■■□□□■■□〓〓■■□□〓‥‥‥‥‥‥
    // ‥‥‥‥‥‥‥‥‥‥〓〓■■□□□■■■■■■■■■〓〓■□‥‥‥‥
    // ‥‥‥‥‥‥‥‥‥〓〓■■□□□■■■■■■■■■■■■■□‥‥‥‥
    // ‥‥‥‥‥‥‥‥〓〓〓■■□□□■■■■■■■□□□■■■■‥‥‥‥
    // ‥‥‥‥‥‥‥‥〓〓‥‥■■□□□□□□■■■□□〓■■□□□‥‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥■■〓〓〓□□■■■〓〓■■□□〓‥‥‥
    // ‥‥‥‥‥‥‥‥‥‥〓〓〓‥‥□‥〓〓〓□□■■■■■■■〓〓‥‥‥
    // ‥‥‥‥‥‥‥‥‥〓〓□‥〓〓〓‥□〓〓■□■■■■■■■■■□‥‥
    // ‥‥‥‥‥‥‥‥‥〓〓‥‥〓〓〓〓‥‥■■□■■■□□□■■■〓□‥
    // ‥‥‥‥‥‥‥‥‥〓□‥〓〓〓〓〓〓□■■□□■■□□〓■■■‥‥‥
    // ‥‥‥‥‥‥‥‥‥〓‥‥〓〓〓〓〓■■■■□□■■■〓〓■■□□‥‥
    // ‥‥‥‥‥‥‥‥‥‥□‥〓〓〓〓〓■■■■□□■■■■■■■□□□‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥□〓〓〓‥■■■■■□■■■■□□■〓〓‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥■■■■■□□■■■〓■■〓■‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥■■■■■□□□■■■■■■‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥■■■■■□□□□■■■■‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥〓■■■■■■□□□□□□□‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥□〓〓■■〓〓〓〓□□□□□‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥□□〓〓〓〓〓〓〓〓〓〓□□‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥□□〓〓□□〓〓〓〓‥‥‥
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥□□□〓□□□〓〓〓〓〓‥‥
    Dim strKuppa[] = _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白白白無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無緑緑白白白黄無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無緑緑緑白白黄黄無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無白白緑緑緑緑黄黄緑無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無黄無無緑白白緑緑緑緑緑緑緑無無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無黄無黄緑緑白白緑緑緑緑緑緑緑緑無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無黄黄黄白白白緑緑緑黄緑緑緑緑緑無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無黄黄黄黄白緑緑緑黄黄黄緑緑緑緑無無無無無無無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無白黄黄黄緑緑黄黄白緑黄緑緑緑緑白白緑緑緑白無無無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無白無黄黄黄黄緑緑緑黄緑緑緑緑白白緑緑白白黄緑無無無無無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無白無白白緑無緑緑白黄緑緑緑緑白白緑白白白黄黄緑白白白無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無白無無無緑黄黄緑緑緑白白白緑緑白黄黄緑緑白白黄無無無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄緑緑白白白緑緑緑緑緑緑緑緑緑黄黄緑白無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄緑緑白白白緑緑緑緑緑緑緑緑緑緑緑緑緑白無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄黄緑緑白白白緑緑緑緑緑緑緑白白白緑緑緑緑無無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄無無緑緑白白白白白白緑緑緑白白黄緑緑白白白無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無緑緑黄黄黄白白緑緑緑黄黄緑緑白白黄無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄黄無無白無黄黄黄白白緑緑緑緑緑緑緑黄黄無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄白無黄黄黄無白黄黄緑白緑緑緑緑緑緑緑緑緑白無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄黄無無黄黄黄黄無無緑緑白緑緑緑白白白緑緑緑黄白無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄白無黄黄黄黄黄黄白緑緑白白緑緑白白黄緑緑緑無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄無無黄黄黄黄黄緑緑緑緑白白緑緑緑黄黄緑緑白白無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白無黄黄黄黄黄緑緑緑緑白白緑緑緑緑緑緑緑白白白無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白黄黄黄無緑緑緑緑緑白緑緑緑緑白白緑黄黄無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無緑緑緑緑緑白白緑緑緑黄緑緑黄緑無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無緑緑緑緑緑白白白緑緑緑緑緑緑無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無緑緑緑緑緑白白白白緑緑緑緑無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無黄緑緑緑緑緑緑白白白白白白白無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白黄黄緑緑黄黄黄黄白白白白白無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白白黄黄黄黄黄黄黄黄黄黄白白無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白白黄黄白白黄黄黄黄無無無", _
        "無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無無白白白黄白白白黄黄黄黄黄無無"
    はてなハイクで描く( strKuppa )

    // <マリオ>
    // ‥‥‥‥‥‥‥‥‥‥‥‥‥□□□
    // ‥‥‥‥‥‥〓〓〓〓〓‥‥□□□
    // ‥‥‥‥‥〓〓〓〓〓〓〓〓〓□□
    // ‥‥‥‥‥■■■□□■□‥■■■
    // ‥‥‥‥■□■□□□■□□■■■
    // ‥‥‥‥■□■■□□□■□□□■
    // ‥‥‥‥■■□□□□■■■■■‥
    // ‥‥‥‥‥‥□□□□□□□■‥‥
    // ‥‥■■■■■〓■■■〓■‥‥‥
    // ‥■■■■■■■〓■■■〓‥‥■
    // □□■■■■■■〓〓〓〓〓‥‥■
    // □□□‥〓〓■〓〓□〓〓□〓■■
    // ‥□‥■〓〓〓〓〓〓〓〓〓〓■■
    // ‥‥■■■〓〓〓〓〓〓〓〓〓■■
    // ‥■■■〓〓〓〓〓〓〓‥‥‥‥‥
    // ‥■‥‥〓〓〓〓‥‥‥‥‥‥‥‥
    
    Dim strMario[] = _
        "無無無無無無無無無無無無無肌肌肌", _
        "無無無無無無赤赤赤赤赤無無肌肌肌", _
        "無無無無無赤赤赤赤赤赤赤赤赤肌肌", _
        "無無無無無茶茶茶肌肌茶肌無茶茶茶", _
        "無無無無茶肌茶肌肌肌茶肌肌茶茶茶", _
        "無無無無茶肌茶茶肌肌肌茶肌肌肌茶", _
        "無無無無茶茶肌肌肌肌茶茶茶茶茶無", _
        "無無無無無無肌肌肌肌肌肌肌茶無無", _
        "無無茶茶茶茶茶赤茶茶茶赤茶無無無", _
        "無茶茶茶茶茶茶茶赤茶茶茶赤無無茶", _
        "肌肌茶茶茶茶茶茶赤赤赤赤赤無無茶", _
        "肌肌肌無赤赤茶赤赤黄赤赤黄赤茶茶", _
        "無肌無茶赤赤赤赤赤赤赤赤赤赤茶茶", _
        "無無茶茶茶赤赤赤赤赤赤赤赤赤茶茶", _
        "無茶茶茶赤赤赤赤赤赤赤無無無無無", _
        "無茶無無赤赤赤赤無無無無無無無無"

    はてなハイクで描く( strMario )
Fend

Procedure はてなハイクで描く( strLines[] )
    Dim strLine
    
    Dim dotChar
    Dim nColorIndex

    Dim max_x
    Dim max_y
    max_y =  Length(strLines)
    
    Dim pos_x
    Dim pos_y
    Dim x
    Dim y

    Dim nLarge
    //nLarge = 12
    nLarge = 6
    For y = 0 To max_y - 1
        strLine = strLines[y]
        max_x = Length(strLine)
        For x = 0 To max_x - 1
            pos_x = g_x + x * nLarge
            pos_y = g_y + y * nLarge
            dotChar = Copy( strLine, x + 1, 1 )
            nColorIndex = 色番号を取得( dotChar )
            Print "pos(" + x + "," + y + ") = [" + dotChar + "](" + nColorIndex + ")"
            Ifb nColorIndex <> -1 Then
                //筆の色を色番号で選択( nColorIndex )
                Ifb nColorIndex = 0 Then
                    筆の色を色番号で選択( 1 ) // 薄い灰色
                Else
                    筆の色を色番号で選択( nColorIndex )
                EndIf
                //三角形を描く( pos_x, pos_y )
                四角形を描く( pos_x, pos_y )
                //丸を描く( pos_x, pos_y )
                //星を描く( pos_x, pos_y )
                筆の色を色番号で選択( nColorIndex )
                塗りつぶし( pos_x, pos_y )
            EndIf
        Next
    Next
Fend

Procedure 塗りつぶし( x, y )
    Dim key
    key = キーコードを取得( "B" )
    KBD(key, CLICK,     g_wait)
    指定座標をクリック( x + g_r, y + g_r )
    //key = キーコードを取得( "L" )
    key = キーコードを取得( "N" )
    KBD(key, CLICK,     g_wait)
Fend

Procedure 丸を描く( x, y )
    Dim n
    n = 12 // 数を大きくすると滑らかになりますが重くなります
    N角形を描く( x, y, n )
Fend

Procedure 三角形を描く( x, y )
    Dim n
    n = 3
    N角形を角度を付けて描く( x, y, n, 30 )
    //N角形を描く( x, y, n )
Fend

Procedure 四角形を描く( x, y )
    Dim n
    n = 4
    N角形を角度を付けて描く( x, y, n, 45 )
    //N角形を描く( x, y, n )
Fend

Procedure 六角形を描く( x, y )
    Dim n
    n = 5
    N角形を描く( x, y, n )
Fend

Procedure 星を描く( x, y )
    Dim angle
    angle = 0
    星を角度を付けて描く( x, y, angle )
Fend

Procedure N角形を描く( x, y, n )
    Dim angle
    angle = 0
    N角形を角度を付けて描く( x, y, n, angle )
Fend

Procedure N角形を角度を付けて描く( x, y, n, angle )
    Dim t
    Dim pos_x
    Dim pos_y
    Dim prev_x
    Dim prev_y
    t = 0 + angle
    prev_x = Int(g_r * Cos( g_pi * t / 180 )) + x + g_r
    prev_y = Int(g_r * Sin( g_pi * t / 180 )) + y + g_r
    
    // Step(360/N) にすると、N角形になります。
    For t = 0 + angle To 360 + angle Step (360/n)
        BTN(LEFT, DOWN, prev_x, prev_y, g_wait)
        pos_x = Int(g_r * Cos( 2 * g_pi * t / 360 )) + x + g_r
        pos_y = Int(g_r * Sin( 2 * g_pi * t / 360 )) + y + g_r
        Print "t = [" + t + "], pos_x = [" + pos_x + "], pos_y = [" + pos_y + "]"
        BTN(LEFT, UP, pos_x, pos_y, g_wait)
        prev_x = pos_x
        prev_y = pos_y
    Next
Fend

Procedure 星を角度を付けて描く( x, y, angle )
    Dim pos_x
    Dim pos_y
    Dim prev_x
    Dim prev_y
    
    Dim theta
    Dim theta_diff
    theta = g_pi * 72 / 180
    theta_diff = g_pi * angle / 180
    
    Dim x_array[5]
    Dim y_array[5]

    x_array[0] = x + Int( g_r * Sin( 0 * theta - theta_diff ) )
    y_array[0] = y + Int( g_r * Cos( 0 * theta - theta_diff ) )
    x_array[1] = x + Int( g_r * Sin( 2 * theta - theta_diff ) )
    y_array[1] = y + Int( g_r * Cos( 2 * theta - theta_diff ) )
    x_array[2] = x + Int( g_r * Sin( 4 * theta - theta_diff ) )
    y_array[2] = y + Int( g_r * Cos( 4 * theta - theta_diff ) )
    x_array[3] = x + Int( g_r * Sin( 1 * theta - theta_diff ) )
    y_array[3] = y + Int( g_r * Cos( 1 * theta - theta_diff ) )
    x_array[4] = x + Int( g_r * Sin( 3 * theta - theta_diff ) )
    y_array[4] = y + Int( g_r * Cos( 3 * theta - theta_diff ) )
    x_array[5] = x + Int( g_r * Sin( 5 * theta - theta_diff ) )
    y_array[5] = y + Int( g_r * Cos( 5 * theta - theta_diff ) )

    prev_x = x_array[0]
    prev_y = y_array[0]

    Dim i
    For i = 0 To 5
        BTN(LEFT, DOWN, prev_x, prev_y, g_wait)
        pos_x = x_array[i]
        pos_y = y_array[i]
        Print "i = [" + i + "], pos_x = [" + pos_x + "], pos_y = [" + pos_y + "]"
        BTN(LEFT, UP, pos_x, pos_y, g_wait)
        prev_x = pos_x
        prev_y = pos_y
    Next
    
Fend

Procedure 指定回数ドットを描く( x, y, nCount )
    Dim i
    For i = 1 To nCount
        BTN(LEFT,CLICK, x, y, g_wait)
    Next
Fend

Function キーコードを取得( strDirection )
    // ■ はてなハイクのお絵かきキーボードショートカット一覧
    // http://d.hatena.ne.jp/hatenahaiku/20080122/1200970790
    Public HashTbl directionTable
    directionTable["C"] = VK_C // 通常のペン
    directionTable["V"] = VK_V // 補完しないペン
    directionTable["B"] = VK_B // バケツツール
    directionTable["L"] = VK_L // ラインツール
    directionTable["1"] = VK_1 // ペンの太さ
    directionTable["2"] = VK_2 // ペンの太さ
    directionTable["3"] = VK_3 // ペンの太さ
    directionTable["0"] = VK_0 // ペンの太さ
    directionTable["N"] = VK_N // アンチエイリアスオフ

    directionTable["→"] = VK_RIGHT
    directionTable["←"] = VK_LEFT
    directionTable["↓"] = VK_DOWN
    directionTable["↑"] = VK_UP

    Result = directionTable[strDirection]
Fend

Function 筆の太さを取得( toolName )
    Public HashTbl toolNameTable
    // 太さ→番号変換
    toolNameTable["細"] = 0  // 細い
    toolNameTable["小"] = 1  // 小
    toolNameTable["中"] = 2  // 中
    toolNameTable["大"] = 3  // 大

    Result = toolNameTable[toolName]

    Print "toolName = [" + toolName + "]"
    Print "tool_no = [" + Result + "]"
Fend

Procedure 筆の太さを選択( nWide )
    Dim x
    Dim y
    Dim nWidth
    x = g_x + 5   // 細筆の位置
    y = g_y - 14  // 細筆の位置
    nWidth = 18   // 筆の位置の間隔
    //BTN(LEFT, DOWN, x + nWidth * nWide, y, g_wait)
    //BTN(LEFT, UP,   x + nWidth * nWide, y, g_wait)
    指定座標をクリック( x + nWidth * nWide, y )
Fend

Procedure 色を選択( dotChar )
    Dim nColor
    nColor = 色番号を取得( dotChar )
    筆の色を色番号で選択( nColor )
Fend

Procedure 筆の色を色番号で選択( nColor )
    Dim x
    Dim y
    Dim nWidth
    x = g_x + 83  // 白絵の具の位置
    y = g_y - 14  // 白絵の具の位置
    nWidth = 14 // 絵の具の位置の間隔
    //BTN(LEFT, DOWN, x + nWidth * nColor, y, g_wait)
    //BTN(LEFT, UP,   x + nWidth * nColor, y, g_wait)
    //Print "x = [" + x + "], nWidth = [" + nWidth + "], nColor = [" + nColor + "]"
    指定座標をクリック( x + nWidth * nColor, y )
Fend

Procedure 指定座標をクリック( x, y )
    //MMV( x, y, g_wait )
    //BTN( LEFT, CLICK, x, y, g_wait )
    //Print "指定座標をクリック : x = [" + x + "], y = [" + y + "]"
    BTN( LEFT, DOWN,  x, y, g_wait )
    BTN( LEFT, UP,    x, y, g_wait )
Fend

Function 色番号を取得( dotChar )
    Public HashTbl colorTable
    // 色名→色番号変換
    colorTable["無"] = -1 // 透明
    colorTable["白"] = 0  // 白
    colorTable["薄"] = 1  // 薄い灰色
    colorTable["灰"] = 2  // 灰色
    colorTable["黒"] = 3  // 黒
    colorTable["赤"] = 4  // 赤
    colorTable["茶"] = 5  // 茶色
    colorTable["肌"] = 6  // 肌色
    colorTable["黄"] = 7  // 黄色
    colorTable["緑"] = 8  // 緑
    colorTable["深"] = 9  // 深緑
    colorTable["青"] = 10  // 青
    colorTable["紫"] = 11  // 紫

    Result = colorTable[dotChar]
Fend
 |