Re: [分享] 卡片-Elements.(元素大戰)
看板Little-Games作者peacedove (林帛亨加油!!!)時間13年前 (2011/01/12 17:39)推噓8(8推 0噓 16→)留言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
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
01/12 18:53, 11F
推
01/12 18:57, , 12F
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
01/12 21:22, 15F
推
01/12 21:27, , 16F
01/12 21:27, 16F
推
01/12 23:48, , 17F
01/12 23:48, 17F
→
01/13 13:58, , 18F
01/13 13:58, 18F
→
01/13 13:58, , 19F
01/13 13:58, 19F
→
01/13 14:02, , 20F
01/13 14:02, 20F
→
01/13 14:02, , 21F
01/13 14:02, 21F
推
01/25 10:05, , 22F
01/25 10:05, 22F
→
01/25 10:05, , 23F
01/25 10:05, 23F
推
01/25 12:35, , 24F
01/25 12:35, 24F
討論串 (同標題文章)
完整討論串 (本文為第 293 之 322 篇):