Re: [分享] 卡片-Elements.(元素大戰)

看板Little-Games作者 (林帛亨加油!!!)時間13年前 (2011/01/12 17:39), 編輯推噓8(8016)
留言24則, 9人參與, 最新討論串293/322 (看更多)
有人叫我提供用綠快刷LV3的程式 所以就來分享啦 其實我也是因為這個遊戲第一次使用AutoHotKey這個軟體 而且只花了大概一個小時研究 所以有些寫法可能很笨 請多多指教 有更好的想法可以跟我說 我可以改進 所以呢 首先請先去EzHotkey版 看看精華區一些關於AutoHotKey這個軟體的說明 然後到官網: http://www.autohotkey.com/ 下載AutoHotKey並安裝好 有興趣研究但不會AutoHotKey的人 官網的Documentation有蠻完整的Reference 我不會寫的東西都是去那邊查的 先說明一下 因為這個程式要抓座標 然而這個座標值會因為使用者的解析度啊 螢幕比例啊 而有所不同 所以程式碼需要微調 其實應該可以寫個自動校正 不過我有點懶 接下來就是程式碼的部分了 首先我先寫了一個擷取游標位置跟顏色的Code ------------這是分隔線----------------------------- #[:: ;我是註解 所以我不會被執行 MouseGetPos, OutX, OutY PixelGetColor, OutputColor, %OutX%, %OutY% MsgBox, %OutputColor%,%OutX%,%OutY% ;我會跳出一個對話框 ------------這是分隔線------------------------------ 先利用這段程式碼說明一下 #[:: 代表啟動這段程式碼的hotkey是 winkey + [ #就代表winkey 所以很好懂吧 你可以任意assign給你想要的按鍵或是組合鍵 ::就別管他了 另外 分號 ; 就代表註解行 也就是每一行 ; 之後的東西都不會執行 是用來標註這個程式碼是幹嘛的 方便其他人或是以後重新整理code時候用的 這段程式碼執行後 會跳出一個對話框 內容大概像這樣 0x668EAC,907,685 分別是 RGB色碼,x座標,y座標 色碼是16進位 0x代表十六進位 後面每兩個字元分別代表 藍 綠 紅 所以你可以把顏色打進去小畫家 看看你抓到的顏色跟你想要的顏色是不是一樣的 16進位 10進位 像 藍色 66 -> 102 綠色 8E -> 142 紅色 AC -> 172 另外這邊跟對電腦不太熟悉的朋友說一下 電腦的XY座標軸 跟我們國中數學課本的不太一樣 要轉-90度 所以左上角是原點 0,0 往下是正X軸 往右是正Y軸 另外在用這段程式碼的時候 請確定你視窗的焦點是在你的目標視窗上 因為他的判斷似乎是以現在focus的視窗的左上角為原點 所以如果你的focus不對 就有可能會跑出負值 呼 好累 讓我喝口水休息一下 順便吃一下邦尼爆米花 這邊先說一下 我的中文很差 高中模擬考都不到六十分 所以有看不懂的部分 歡迎熱心的版友翻譯 也可以問我 接下來是主菜的部分啦 先說一下我程式碼的思維 首先遊戲會有四個畫面 主畫面 遊戲進行畫面 勝利畫面 失敗畫面 我是在每個畫面找一個特殊的點會有的特別顏色來做判定 像是主畫面我是找最我下角的v1.26的v 遊戲進行畫面則是找done鍵 勝利畫面找輪盤 失敗畫面因為灰灰的 找個一定會是空白不改變的點 此外我的寫法是 組合鍵按第一次打開 按第二次結束 程式碼的部分我就用註解的部分來說明哪些要改的 看到一組數字出現例如909,888就是座標X,座標Y 還有看到0X889988是顏色的部分 都是要改的部分 另外Sleep的部分就是讓電腦等幾面再做動作 後面接的數字是ms所以請除以1000才是秒數 等多久請根據自己的網路跟電腦速度做評估 -----------------我是分隔線------------------ #MaxThreadsPerHotkey 3 #':: ;可以改成你自己喜歡的組合按鍵 #MaxThreadsPerHotkey 1 if KeepWinZRunning { KeepWinZRunning := false return } KeepWinZRunning := true ;上面請照抄 ;下面是迴圈開始的部分 Loop { MouseMove,308, 180 ;移動到Done鍵會出現的部分 PixelGetColor, MainMenuColor, 197,689 ;主畫面要抓顏色的座標 我是v PixelGetColor, DoneColor, 308, 180 ;Done按鍵的座標 PixelGetColor, WinColor, 760, 365 ;勝利畫面的座標 PixelGetColor, LoseColor, 197, 679 ;失敗畫面的座標 if ( MainMenuColor = "0X66CCB2") ;主畫面座標的顏色 { MouseMove, 806, 342 ;移動到lv3按鈕的座標 MouseClick Sleep 3000 ;等三秒 ;Top50 ;這邊是Top50的部分 ;MouseMove, 908, 352 ;可以自己研究或是不要管他 ;MouseClick ;Sleep 5000 ;MouseMove, 645, 525 ;MouseClick ;Sleep 3000 ;MouseMove, 639, 574 ;MouseClick } else if( DoneColor = "0X7793A7") ;Done按鈕的顏色 { MouseMove, 997, 627 ;這邊就是從最下面的牌依序往上出 MouseClick ;座標請自己抓 MouseMove, 997, 603 MouseClick MouseMove, 997, 577 MouseClick MouseMove, 997, 554 MouseClick MouseMove, 997, 534 MouseClick MouseMove, 997, 511 MouseClick MouseMove, 997, 484 MouseClick MouseMove, 997, 463 MouseClick Send {Space} ;按空白鍵送出 MouseMove, 997, 627 ;再按一次最下面的排 防止卡牌的事件發生 MouseClick } else if ( WinColor = "0x66B7CC") ;Win畫面的顏色 { MouseMove, 724, 527 ;移動到Spin All的按鈕 MouseClick Sleep 15000 ;等15秒 MouseMove, 631, 642 ;移動到Ok的按鈕 MouseClick Sleep 3000 ;等3秒 } else if( LoseColor = "0x040404") ;失敗畫面的顏色 { MouseMove, 805, 450 ;移動到Menu MouseClick Sleep 3000 ;等三秒 } ;下面請照抄 if not KeepWinZRunning { break } } KeepWinZRunning := false return -----------我是分隔線---------------------------- 用的牌組就是綠快 把heal拿掉 應該吧 就是 pillar, 青蛙,雞,龍 我是還放了一枝德魯伊杖啦 有sog就放個兩個然後龍少個兩隻這樣 一開始我有放蠍子 可是發現會被devour掉 後來就沒放了 這排組刷top50一個晚上吧 大概就吃晚飯到我睡覺前 就刷到六張sog了 還不錯 有佛心人 大概就這樣啦 有問題再說吧 如果覺得實用的話 請給個推 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.75.222 ※ 編輯: peacedove 來自: 118.168.75.222 (01/12 17:39)

01/12 17:49, , 1F
真用心!!總結來說,分隔線以下的輸入進去就可以了??
01/12 17:49, 1F

01/12 18:32, , 2F
這軟體可以用目標視窗內"絕對座標"
01/12 18:32, 2F

01/12 18:32, , 3F
所以想提供萬用版本也是可以的XD
01/12 18:32, 3F

01/12 18:38, , 4F
我是用目標視窗內的座標沒錯呀 可是還是會因為解析
01/12 18:38, 4F

01/12 18:38, , 5F
度而有不同不是嗎??? 還是有更聰明的方法?? 可以指
01/12 18:38, 5F

01/12 18:38, , 6F
點一下嗎???
01/12 18:38, 6F

01/12 18:44, , 7F
這可能就要看不同解析度開出來圖是怎樣不同了...
01/12 18:44, 7F

01/12 18:45, , 8F
有些開出來圖不會隨解析度等比放大,只會位置不同
01/12 18:45, 8F

01/12 18:45, , 9F
那就蒐一個點 例如某個圖示當作相對座標起點就好
01/12 18:45, 9F

01/12 18:46, , 10F
不過我不太知道這遊戲不同解析度開出來是怎樣ˇˇ
01/12 18:46, 10F

01/12 18:53, , 11F
本人新手 請問一下 什麼是sog?
01/12 18:53, 11F

01/12 18:57, , 12F
另外 我找不到EZHOTKEY 板 =口=
01/12 18:57, 12F

01/12 19:19, , 13F
感謝 受教了
01/12 19:19, 13F

01/12 20:59, , 14F
之前有人被鎖過 恩
01/12 20:59, 14F

01/12 21:22, , 15F
沒問題嗎0.0a 我也記得之前有發生被鎖
01/12 21:22, 15F

01/12 21:27, , 16F
短時間衝太快會被鎖喔!! 要小心點~~
01/12 21:27, 16F

01/12 23:48, , 17F
所以這副綠快牌可以刷TOP50?幾張綠地?
01/12 23:48, 17F

01/13 13:58, , 18F
那就多加一些sleep吧 讓整個程式執行跟真人玩不要差
01/13 13:58, 18F

01/13 13:58, , 19F
太多應該就可以了
01/13 13:58, 19F

01/13 14:02, , 20F
我爬文看之前被ban的都是用變速精靈或者是用FGM改的
01/13 14:02, 20F

01/13 14:02, , 21F
老實說用我寫的這個跟用真人去刷 速度差不多而已
01/13 14:02, 21F

01/25 10:05, , 22F
請問peacedove大,因為是用升級過的地牌,請問有辦法
01/25 10:05, 22F

01/25 10:05, , 23F
第一輪按兩遍,之後都只按一遍嗎?謝謝
01/25 10:05, 23F

01/25 12:35, , 24F
不用了...我竟然自己研究出來了= = 我真是天才XD
01/25 12:35, 24F
文章代碼(AID): #1DBNQwHl (Little-Games)
討論串 (同標題文章)
文章代碼(AID): #1DBNQwHl (Little-Games)