import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
/**
* 支援指令檔的按鍵控製程序
*/
public class KeySprite{
public static void main(String[] args){
String filename = "test.t";
try{
//讀取設定檔
Vector v = readFile(filename);
//執行檔案
parseVector(v);
}catch(IOException e){
System.out.println("設定檔錯誤");
}catch(Exception e){
System.out.println("其他錯誤");
}
}
/**
* 讀取檔案到Vector中
* @param filepath 檔案路徑
*/
public static Vector readFile(String filepath) throws IOException{
Vector v = new Vector();
//檔案緩衝輸入資料流
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(filepath)));
//讀取資料
String s = br.readLine();
while(s != null){
//添加到v
v.add(s);
//讀取下一行
s = br.readLine();
}
//關閉輸入資料流
br.close();
//返回資料
return v;
}
/**
* 解析讀到的Vector,並執行對應的操作
* @param v Vector對象
*/
public static void parseVector(Vector v){
int size = v.size();
try{
//建立Robot對象
Robot r = new Robot();
for(int i = 0;i < size;i++){
String s = (String)v.get(i);
//分解
String[] data = s.split(" ");
//解析執行
if(data[0].equals("移動")){
//獲得座標
int x = Integer.parseInt(data[1]);
int y = Integer.parseInt(data[2]);
//移動
r.mouseMove(x,y);
}else if(data[0].equals("按鍵")){
//獲得按鍵種類
char c = data[1].toLowerCase().charAt(0);
//按鍵
r.keyPress(c);
//釋放
r.keyRelease(c);
}else if(data[0].equals("暫停")){
//獲得暫停時間
int time = Integer.parseInt(data[1]);
//暫停
Thread.sleep(time);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
}
指令檔test.t
暫停 1000
移動 200 300
暫停 1000
移動 210 300
暫停 1000
移動 220 300
暫停 1000
移動 230 300
暫停 1000
移動 240 300
暫停 1000
移動 250 300
暫停 1000
移動 260 300
暫停 1000
移動 270 300
暫停 1000
移動 280 300
暫停 1000
移動 290 300
暫停 1000
移動 300 300
暫停 1000
移動 310 300