java解析魔兽争霸3录像_GitHub - wucao/jw3gparser: Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具)...
jw3gparser
Java解析《魔獸爭(zhēng)霸3》游戲錄像工具,可解析w3g、nwg(網(wǎng)易對(duì)戰(zhàn)平臺(tái)錄像)格式錄像。
使用方法
public class Test {
public static void main(String[] args) throws IOException, W3GException, DataFormatException {
Replay replay = new Replay(new File("d:/wucao/Desktop/151020_[UD]LuciferLNMS_VS_[NE]checkuncle_Amazonia_RN.w3g"));
Header header = replay.getHeader();
System.out.println("版本:1." + header.getVersionNumber() + "." + header.getBuildNumber());
long duration = header.getDuration();
System.out.println("時(shí)長(zhǎng):" + convertMillisecondToString(duration));
UncompressedData uncompressedData = replay.getUncompressedData();
System.out.println("游戲名稱:" + uncompressedData.getGameName());
System.out.println("游戲創(chuàng)建者:" + uncompressedData.getCreaterName());
System.out.println("游戲地圖:" + uncompressedData.getMap());
List list = uncompressedData.getPlayerList();
for(Player player : list) {
System.out.println("---玩家" + player.getPlayerId() + "---");
System.out.println("玩家名稱:" + player.getPlayerName());
if(player.isHost()) {
System.out.println("是否主機(jī):主機(jī)");
} else {
System.out.println("是否主機(jī):否");
}
System.out.println("游戲時(shí)間:" + convertMillisecondToString(player.getPlayTime()));
System.out.println("操作次數(shù):" + player.getAction());
System.out.println("APM:" + player.getAction() * 60000 / player.getPlayTime());
if(!player.isObserverOrReferee()) {
System.out.println("玩家隊(duì)伍:" + (player.getTeamNumber() + 1));
switch(player.getRace()) {
case HUMAN:
System.out.println("玩家種族:人族");
break;
case ORC:
System.out.println("玩家種族:獸族");
break;
case NIGHT_ELF:
System.out.println("玩家種族:暗夜精靈");
break;
case UNDEAD:
System.out.println("玩家種族:不死族");
break;
case RANDOM:
System.out.println("玩家種族:隨機(jī)");
break;
}
switch(player.getColor()) {
case RED:
System.out.println("玩家顏色:紅");
break;
case BLUE:
System.out.println("玩家顏色:藍(lán)");
break;
case CYAN:
System.out.println("玩家顏色:青");
break;
case PURPLE:
System.out.println("玩家顏色:紫");
break;
case YELLOW:
System.out.println("玩家顏色:黃");
break;
case ORANGE:
System.out.println("玩家顏色:橘");
break;
case GREEN:
System.out.println("玩家顏色:綠");
break;
case PINK:
System.out.println("玩家顏色:粉");
break;
case GRAY:
System.out.println("玩家顏色:灰");
break;
case LIGHT_BLUE:
System.out.println("玩家顏色:淺藍(lán)");
break;
case DARK_GREEN:
System.out.println("玩家顏色:深綠");
break;
case BROWN:
System.out.println("玩家顏色:棕");
break;
}
System.out.println("障礙(血量):" + player.getHandicap() + "%");
if(player.isComputer()) {
System.out.println("是否電腦玩家:電腦玩家");
switch (player.getAiStrength())
{
case EASY:
System.out.println("電腦難度:簡(jiǎn)單的");
break;
case NORMAL:
System.out.println("電腦難度:中等難度的");
break;
case INSANE:
System.out.println("電腦難度:令人發(fā)狂的");
break;
}
} else {
System.out.println("是否電腦玩家:否");
}
} else {
System.out.println("玩家隊(duì)伍:裁判或觀看者");
}
}
List chatList = uncompressedData.getReplayData().getChatList();
for(ChatMessage chatMessage : chatList) {
String chatString = "[" + convertMillisecondToString(chatMessage.getTime()) + "]";
chatString += chatMessage.getFrom().getPlayerName() + " 對(duì) ";
switch ((int)chatMessage.getMode()) {
case 0:
chatString += "所有人";
break;
case 1:
chatString += "隊(duì)伍";
break;
case 2:
chatString += "裁判或觀看者";
break;
default:
chatString += chatMessage.getTo().getPlayerName();
}
chatString += " 說:" + chatMessage.getMessage();
System.out.println(chatString);
}
}
private static String convertMillisecondToString(long millisecond) {
long second = (millisecond / 1000) % 60;
long minite = (millisecond / 1000) / 60;
if (second < 10) {
return minite + ":0" + second;
} else {
return minite + ":" + second;
}
}
}
輸出DEMO:
版本:1.26.6059
時(shí)長(zhǎng):24:53
游戲名稱:WCA01
游戲創(chuàng)建者:A.1st_LawLiet
游戲地圖:Maps\Download\(2)Amazonia.w3x
---玩家1---
玩家名稱:A.1st_LawLiet
是否主機(jī):主機(jī)
游戲時(shí)間:24:32
操作次數(shù):0
APM:0
玩家隊(duì)伍:裁判或觀看者
---玩家2---
玩家名稱:checkuncle
是否主機(jī):否
游戲時(shí)間:24:31
操作次數(shù):5831
APM:237
玩家隊(duì)伍:2
玩家種族:暗夜精靈
玩家顏色:紅
障礙(血量):100%
是否電腦玩家:否
---玩家3---
玩家名稱:LuciferLNMS
是否主機(jī):否
游戲時(shí)間:24:31
操作次數(shù):7816
APM:318
玩家隊(duì)伍:1
玩家種族:不死族
玩家顏色:灰
障礙(血量):100%
是否電腦玩家:否
---玩家4---
玩家名稱:WCA_SEA_OB2
是否主機(jī):否
游戲時(shí)間:24:53
操作次數(shù):0
APM:0
玩家隊(duì)伍:裁判或觀看者
---玩家5---
玩家名稱:wca_sea_ob1
是否主機(jī):否
游戲時(shí)間:24:32
操作次數(shù):0
APM:0
玩家隊(duì)伍:裁判或觀看者
[0:09]checkuncle 對(duì) 所有人 說:All rights reserved by Blizzard
[0:10]checkuncle 對(duì) 所有人 說:w3g files released by www.Replays.Net.
[0:36]LuciferLNMS 對(duì) 所有人 說:gl
[0:38]checkuncle 對(duì) 所有人 說:gl
[24:30]checkuncle 對(duì) 所有人 說:gg
[24:43]checkuncle 對(duì) 所有人 說:For more replays, plz visit www.Replays.Net
參考文檔
Change Log
V1.1.0
支持網(wǎng)易對(duì)戰(zhàn)平臺(tái)錄像格式nwg解析;
V1.1.1
修復(fù)部分錄像沒有玩家離開游戲標(biāo)記的導(dǎo)致玩家游戲時(shí)間是0的BUG;
V1.2.0
去除FileType, 程序自動(dòng)識(shí)別錄像類型, 修復(fù)網(wǎng)易對(duì)戰(zhàn)平臺(tái)部分新錄像報(bào)"錄像格式不正確"錯(cuò)誤的BUG;
總結(jié)
以上是生活随笔為你收集整理的java解析魔兽争霸3录像_GitHub - wucao/jw3gparser: Java Warcraft Ⅲ Replay Parser(Java解析《魔兽争霸3》游戏录像工具)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PropertyUtils 工具类
- 下一篇: java美元兑换,(Java实现) 美元