目前需求開發一支可以控制 HTML5 Canvans 遊戲的機器人,現在的構想是用 Selenium 來控制網頁元件,以驗收測試為基礎來寫。
👉解析API傳回的JSON字串
首先,需要先進入遊戲,為了節省登入的步驟,所以以呼叫API的方式來進入遊戲。呼叫後傳回格式如下:
{
"data": {
"url": "https://h5c.cqgame.games/1/?token=da05d84ab17d2ed4f184d2f7axxxxxxxx&language=zh-CN"
},
"status": {
"code": 0,
"message": "success",
"timestamp": 1038106999
}
}
裡面的 url 就是進入遊戲的入口,將它擷取放入測試之前的步驟。接下來就要用 PHP 裡跟 JSON 有關的函式。首先利用 file_get_contents() 將 JSON 字串取回來,再利用 json_decode() 解碼。
// 處理 ssl 造成的錯誤
$stream_opts = [
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false,
]
];
// 取回 API 返回內容
$data = file_get_contents($this::$api_url, false, stream_context_create($stream_opts));
// JSON解碼,取得 url
$game_url = json_decode($data, true)['data']['url'];
接著就可以前往遊戲畫面。
👉Ubuntu Command
reboot 重開機
2018年9月30日 星期日
2013年1月23日 星期三
JavaFX程式的第一次接觸,從Hello World開始~
每個學程式的朋友,應該都是從印出「Hello World!」開始的吧~雖然我也不太知道來源或是從什麼時候開始。
我的第一個JavaFX程式
在官網上使用的開發工具是NetBeans IDE 7.1,不過現在(2013.1.23)已經更新到7.2版了,所以,檔案的截圖就會是7.2版的。(看起來一樣囉!)
/** Author:Letter Lin* Date:2013/01/23rld*/package hellowo;rt javafx.application.Application; impimp oort javafx.event.ActionEvent;r; import javafx.scene.Scene; impimport javafx.event.EventHandl eort javafx.scene.control.Button;ne; import javafx.stage.Stage; publiimport javafx.scene.layout.StackP ac class HelloWorld extends Application { /*cation.Application */ @Override public void start(Stag* JavaFX程式進入點在start method,類別要繼承javafx.appl ie primaryStage) { Button btn = new Button(); btn.setText("Say 'Hello World'");() {btn.setOnAction(new EventHandle r @Overridepublic void handle(ActionEvent event) {System.out.println("Hello World!");root = new S} }); StackPan etackPane(); root.getChildren().add(btn);primaryStage.setTitle("Hello World!");Scene scene = new Scene(root, 300, 250); primaryStage.setScene(scene); primaryStage.show(); } /*tic void main(String[] args) { launch(args);* JavaFX的main() method是用來執行jar檔使用。單純的JavaFx程式可以不需要。 */ public st a }}
上面的程式碼,直接在NetBeans選擇新專案,如果不改專案名稱,只要按下一步(Next)和FINISH就可以完成了~
JavaFX應用程式的基本架構
![]() |
| JavaFX應用程式基本架構(節錄至http://docs.oracle.com/javafx/2/get_started/hello_world.htm) |
- 所有的JavaFX應用程式主類別都需要繼承javafx.application.Application的類別,而且程式進入點不再是main(),而是start()。
- JavaFX應用程式定義的使用者介面容器(user interface container)有stage和sence。stage是最高層級的JavaFX容器,而sence是用來承載所有JavaFX程式內容的容器,要顯示可視部分也是依靠sence來定義像素。
- JavaFX在畫面呈現上,是利用了一層層的節點(Nodes)來作為控制,在這個例子裡,StackPane就是root節點,當使用者想要變更畫面尺寸的時候,便是由它來負責。Botton是子節點(child node),由它來控制按按鈕及之後的文字顯示。
- main()雖然不再是必要的,但是保留在JavaFX應用程式裡也有好處:可以在沒有不支援JavaFX的機器上運行JAR檔,另外,swing應用程式也需要main()。
程式運行結果
![]() |
| 運行結果(節錄至http://docs.oracle.com/javafx/2/get_started/hello_world.htm) |
按下RUN之後就會看到畫面出現,按下中間的按鈕,會在下方output的視窗看到Say Hello World。
備註:文章是看著官網自己翻譯出來的,但不是逐字翻譯,如果有建議,希望mail給我,作為修改的參考。
2013年1月20日 星期日
什麼是JavaFX?
前言
因為想自己學JavaFX,所以利用這裡來作筆記,所有資料都是從甲骨文官網及其他網路高手蒐集來的,版權均屬於原作者,請大家如果要使用,切記尊重智慧財產權。
什麼是JavaFX?
JavaFX可以讓程式設計師很簡單的撰寫Rich Internet Applications(RIAs),而且增加了豐富的圖形及媒體的API,另外,Java有的好處它都有,所以原來就會Java的程式設計師,進入的障礙就很低,系統間的轉換以及開發的難度和成本都會降低。
JavaFX的主要特點
- 與 JDK 7 完全整合
- Java APIs 都可以使用
- 採用新的圖形引擎
- 採用新的FXML
- 採用新的媒體引擎
- 可以內崁瀏覽器物件
- 豐富的UI控制項,也可以利用API自定
- 完成輸出為應用程式
- 和Java一樣跨平台
- 很多的範例可以參考利用(在甲骨文的官網上)
- 即時更新的文件
工具
如果要撰寫Java FX,必須到甲骨文的官網上面下載JDK 7以及JavaFX Sence Builder,另外配合NetBeans開發會比較方便,如果想要鍛練寫程式的功力,那就用筆記本吧~
訂閱:
文章 (Atom)



