1. 程式人生 > >無聊的程式設計師教你如何使用十幾行程式碼練就單身20年的手速(文末彩蛋)

無聊的程式設計師教你如何使用十幾行程式碼練就單身20年的手速(文末彩蛋)

故事背景

友女回家學車,今天星期五,明天不上班。

正文開始

作為一個程式設計師,在無聊的時候會做點什麼呢?大多數的都是會選擇玩遊戲,今晚我也選擇了一個遊戲,這個遊戲叫反應速度大比拼,如下圖
遊戲介面

玩法特別簡單,就是當你點選開始按鈕後,如果看到背景顏色變化了就馬上按結束按鈕,這期間的耗時便是你的遊戲成果。上面說到一句話‘Johnny.R 的為0.11’ ,這個Johnny.R被大家稱為狙神,就是玩CS的時候狙擊打的最溜的,0.11秒說明他的反應速度真的不是蓋的。無聊的我玩了一晚都沒進過0.3以內的速度

這太打擊我了!
這太打擊我了!
這太打擊我了!
崩潰

看來有些東西真的不是“無它,唯手熟耳”,既然我是個程式設計師,我肯定會採用程式來挽回我的臉面

Java
於是我使用了自己熟悉的Java語言,完成了超越Johnny.R的偉大目標,先祭出里程碑效果圖,看到沒有,0.056秒!!!!!,這特麼就是個奇蹟。我是Johnny.R的20倍叼。
程式執行效果介面

編寫這個程式的過程

根據這個遊戲規則,可以將人的行為轉換為程式的行為,思路很簡單

  1. 先獲取背景的任意一個座標比如A的顏色(其實是RGB值),設為color1
  2. 再獲取開始按鈕的座標,再將滑鼠移動過去,再點選滑鼠,並釋放滑鼠
  3. 不停地獲取最開始那個背景座標A的顏色,設為color2,看看兩者是否相等,不相等則顏色變化了
  4. 再獲取結束按鈕的座標,再將滑鼠移動過去,再點選滑鼠,並釋放滑鼠

上面的步驟其實有一個問題,那就是怎麼獲取螢幕任意位置的座標,其實有種工具可以在你的滑鼠移動到某個位置的時候便顯示出該位置的座標
獲取座標工具

所以這樣子我們就可以獲取背景、開始按鈕、結束按鈕的座標了,這樣子就可以讓程式自動地移動滑鼠到指定的位置。

下面貼出完整的Java程式碼,Java程式設計師可以盡情使用,熟悉其他語言的不用沮喪,你們的語言大概率也支援這些操作

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Robot;
import java.awt.event.InputEvent;

public class Main {

    public static void main(String[] args) throws AWTException {
        Robot robot = new
Robot(); // 獲取畫素 Color color1 = robot.getPixelColor(1690, 520); // 移動滑鼠到開始按鈕 robot.mouseMove(2222, 483); // 點選滑鼠 robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // 釋放滑鼠 robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); while (true) { Color color2 = robot.getPixelColor(1690, 520); // 如果初始顏色不等於當前顏色 if (!color1.equals(color2)) { // 移動滑鼠到結束按鈕 robot.mouseMove(2260, 490); // 點選滑鼠 robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // 釋放滑鼠 robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); break; } } } }

感想(重點)

在這裡我就要適量地展示一下表現欲了,百度百科說

表現欲是人的基本慾望,是個性突出、有生命力的表現。如果一個人缺乏表現欲,那麼這個人的性格是有缺陷的。同時表現欲過度也是有缺陷的。

所以我是適量地展示一下表現欲,性格沒有缺陷的那種。

首先,關於“浪費時間”,很多人都會說別人或者被別人說“浪費時間”,其實我在高中的時候曾經思考過,怎樣度過時間才不算是被浪費,讀書學習不算?電影遊戲不算?其實這其中沒有太多的定義,生活中不是所有的事情都會跟數學一樣有著嚴謹的定義。所以時間無所謂被浪費,所以我點了一晚的開始和結束按鈕,也是值得,嗯,這就是我想表達的。

然後關於程式設計,在學習四年程式設計後,自己也有一些心得想要分享一下。我覺得網際網路最大的意義在於“共享”,既然程式設計師是最接近網際網路的群體之一,那麼你要有一個意識,就是你想要解決的問題,很大概率已經有人幫你解決了,你可以直接享有他人的成果,或無償或有償。比如如何定位開始按鈕,你得有這個按鈕的螢幕座標,如何定位螢幕座標,你就可以想想也許已經有人把這個問題解決掉了,一搜索發現還真的是。所以程式設計師面試官們,我特別想對你們說,別再考他們API的使用方法了,那特麼都是語法的東西,背的一點意義都沒有,主要還是要自己有想法,知道一步兩步如何完成自己的目標。比如說出一道題,再提供一些API,看他能否熟練地組合使用這些API解決這道題目,這才是高手。

最後,就算沒有友仔啊友女啊,也不要去偷電動車,不要熬夜。
睡覺