SLG(模擬戰略遊戲)數據量龐大、類別繁雜,硬編碼極難維護。本文展示《Java 究竟怎麼玩》框架採用的 **CSV 表格 + 反射映射** 載入策略,以及 **序列化 + 混淆 + GZIP** 存檔機制,兼顧策劃協作效率與防改動需求。
public static Object[] loadPropertys(String fileName, Class clazz) {
List
使用範例:
Friend[] friends = (Friend[]) CSVConfigure.loadPropertys("friend.csv", Friend.class);
單一方法即可將任意 CSV 映射為任意 VO 陣列,新增資料類別只需補 CSV 與 VO,零修改載入邏輯。
SerializableObjectOutputStream → 位元組陣列addChange/backChange)讀取時反向:解壓 → URLDecoder → 位移還原 → ObjectInputStream 還原物件圖。
// 壓縮
public static byte[] compress(byte[] buffer) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream gzos = new GZIPOutputStream(baos);
gzos.write(buffer); gzos.flush(); gzos.close();
return baos.toByteArray();
}
// 存檔入口
public static void save(String fileName, String message) throws IOException {
save(new File(fileName), new ByteArrayInputStream(compress(message.getBytes())));
}
friend.csv、item.csv、stage.csv 等,策劃直接維護完整範例原始碼下載:CSDN 下載連結