Skip to content

Commit

Permalink
修复比赛场牌谱导致程序出错的bug;测试性增加繁体支持
Browse files Browse the repository at this point in the history
  • Loading branch information
zyr17 committed Apr 21, 2019
1 parent f670ce4 commit be4a140
Show file tree
Hide file tree
Showing 10 changed files with 177 additions and 27 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,15 @@ result中即为结果。

## 已知问题

繁体中文的系统暂时无法正确显示。

Ubuntu高版本中可能会出现GUI将可执行文件当做动态链接库的情况。目前没有找到解决方法,请使用Terminal执行。

如果运行Electron时出现游戏界面黑屏、白屏、崩溃等问题,有可能是显卡对WebGL的支持问题,可以尝试将resources/app/main.js文件第21行的双斜杠删去,关闭硬件加速运行。

由于本人较菜没有上圣没法打王座,同时没有参加过任何比赛场,所以这两块数据有所缺失,这些牌谱可能会出现bug。
由于设计时从未参加过比赛场,发现问题后开了个比赛场测试并发现比赛场数据和想象中有较大出入,目前会直接忽略比赛场牌谱数据,在以后做了相关实现后加入。

由于本人较菜没有上圣没法打王座,相关牌谱可能会出现bug。

## 联系

Expand Down
2 changes: 1 addition & 1 deletion appveyor-linux.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: 0.1.3.{build}
version: 0.1.4.{build}
image: Ubuntu1804
branches:
only:
Expand Down
2 changes: 1 addition & 1 deletion appveyor-win.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: 0.1.3.{build}
version: 0.1.4.{build}
branches:
only:
- master
Expand Down
2 changes: 2 additions & 0 deletions doc/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ MajsoulPaipuAnalyzer简易使用说明

config.json常用设置

-1:第二行language默认为简体中文zh-CN,若需要使用简体转的繁体中文请改成zh-TW,瞎翻的英文请改成en-US。注意繁中目前没有经过任何测试不保证可用,若不可用请等待后续版本。。

0. 啥都不改默认分析全部牌谱

1. 分析特定房间:第10行方括号中填入房间编号(友人0 铜场1 银场2 金场3 玉场4 王座5 比赛场? 王座比赛场待确认)
Expand Down
1 change: 1 addition & 0 deletions i18n/en-US.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"CHCP": "chcp 437",
"MAIN": {
"MACROUNDEFINED": "both macro _WIN32 and linux are not defined!",
"CANTDATA/SRC": "Can't find data/",
Expand Down
1 change: 1 addition & 0 deletions i18n/zh-CN.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"CHCP": "chcp 936",
"MAIN": {
"MACROUNDEFINED": "宏 _WIN32 和 linux 均未被定义!请确认是否为Windows或者Linux平台。",
"CANTDATA/SRC": "无法找到文件夹 data/",
Expand Down
136 changes: 136 additions & 0 deletions i18n/zh-TW.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
{
"CHCP": "chcp 950",
"MAIN": {
"MACROUNDEFINED": "宏 _WIN32 和 linux 均未被定義!請確認是否為Windows或者Linux平臺。",
"CANTDATA/SRC": "無法找到文件夾 data/",
"CANTDATA/SRCAFT": "",
"CANTDATA/SRC/*": "無法在 data/",
"CANTDATA/SRC/*AFT": " 下找到任何文件夾!",
"SRC": "數據源",
"ID": "ID",
"CANTDATA/": "找不到 data/ 文件夾!"
},
"ANALYZER": {
"BASEDATA": "基礎數據",
"ANALYZEPAIPUNUM": "共分析了 ",
"ANALYZEPAIPUNUMAFT": " 個牌譜",
"ALLRESULT": "全部分析結果壹覽",
"OVRESULT": "綜合數據",
"HULERESULT": "和牌數據",
"CHONGRESULT": "放銃數據",
"FULURESULT": "副露數據",
"ALRESULT": "AL數據",
"REACHRESULT": "立直數據",
"LIUJURESULT": "流局數據"
},
"ADRESULT": {
"#1R": "壹位率",
"#2R": "二位率",
"#3R": "三位率",
"#4R": "四位率",
"AL#1#1R": "AL中保壹率",
"AL#234#1R": "AL中逆壹率",
"AL#4#123R": "AL中避四率",
"ALAL+R": "AL兩次以上率",
"HULER": "和牌率",
"ZIMOR": "自摸率",
"CHONGR": "放銃率",
"REACHR": "立直率",
"FULUR": "副露率",
"DAMAHULER": "默聽和牌率",
"CHONGLEDAMAR": "銃了默聽率",
"FULUHULER": "和牌時副露率",
"FULUCHONGR": "放銃時副露率",
"HULEP": "和牌得點",
"CHONGP": "放銃失點",
"HULESU": "和牌素點",
"CHONGSU": "放銃素點",
"DAMAHULEP": "默聽和牌得點",
"CHONGLEDAMAP": "銃了默聽失點",
"HULE3900+R": "和了得點3900+率",
"HULE7700+R": "和了得點7700+率",
"HULE11600+R": "和了得點11600+率",
"CHONG3900+R": "放銃失點3900+率",
"CHONG7700+R": "放銃失點7700+率",
"CHONG11600+R": "放銃失點11600+率",
"HULECC": "和牌巡數",
"CHONGMYCC": "放銃時自己巡數",
"CHONGHISCC": "放銃時對方巡數",
"CHONGSHANTEN": "放銃時向聽數",
"FULUHULECC": "副露和牌巡數",
"MENQINGHULECC": "門清和牌巡數",
"REACHINHULER": "和牌時立直率",
"TANYAOHULER": "斷幺率",
"PINFUHULER": "平和率",
"CHITOIHULER": "七對率",
"TOITOIHULER": "對對率",
"RANSHOUHULER": "染手率",
"AKAA": "赤寶平均枚數",
"DORAA": "寶牌平均枚數",
"URAA": "裏寶平均枚數",
"ALLDORAA": "寶牌總平均枚數",
"YIPATSUHULER": "壹發率",
"OYAHULER": "自親和牌率",
"CHONGLEREACHR": "銃了立直率",
"CHONGLEPINFUR": "銃了平和率",
"CHONGLECHITOIR": "銃了七對率",
"CHONGLETOITOIR": "銃了對對率",
"CHONGLETANYAOR": "銃了斷幺率",
"CHONGLERANSHOUR": "銃了染手率",
"REACHINCHONGR": "放銃時立直率",
"CHONGLEOYAR": "銃了親家率",
"CHONGLEYIPATSUR": "銃了壹發率",
"CHONGLEFULUR": "銃了副露率",
"BEIZIMOR": "被自摸率",
"BEIZIMOP": "被自摸失點",
"BEIZIMOMYCC": "被自摸自己巡數",
"ZHAZHUANGR": "被炸莊率",
"ZHAZHUANGP": "被炸莊失點",
"REACHHULEP": "立直和了得點",
"REACHHULESU": "立直和了素點",
"REACH3900+R": "立直和3900+率",
"REACH7700+R": "立直和7700+率",
"REACH11600+R": "立直和11600+率",
"REACHCC": "立直平均巡數",
"REACHPINFUR": "TODO:立直平和",
"REACHTANYAOR": "立直時斷幺率",
"REACHDORA2+R": "立直2寶以上率",
"REACHDORA3+R": "立直3寶以上率",
"REACHDORAA": "立直平均寶牌",
"FIRSTREACHR": "先制立直率",
"ZIMOINREACHHULER": "立直和了自摸率",
"REACHGOODR": "立直為好形率",
"REACHGOODHULER": "好形和牌率",
"REACHGOODHULEP": "好形和牌得點",
"REACHGOODCHONGR": "好形放銃率",
"REACHGOODCHONGP": "好形放銃失點",
"REACHGOODPROFIT": "好形立直凈利",
"REACHBADR": "立直為愚形率",
"REACHBADHULER": "愚形和牌率",
"REACHBADHULEP": "愚形和牌得點",
"REACHBADCHONGR": "愚形放銃率",
"REACHBADCHONGP": "愚形放銃失點",
"REACHBADPROFIT": "愚形立直凈利",
"REACHPROFIT": "立直凈利",
"CHONGINREACHR": "立直時放銃率",
"HULEINREACHR": "立直時和牌率",
"LIUJUTENPAIR": "流局聽牌率",
"LIUJUINP": "流局聽牌得點",
"LIUJUNOTENR": "流局未聽率",
"LIUJUOUTP": "流局未聽失點",
"LIUJUPROFIT": "流局凈利",
"#A": "平均順位",
"TOTALROUND": "總局數",
"TOTALGAME": "總盤數",
"ROUNDPROFIT": "每局凈利",
"GAMEPROFIT": "每盤凈利",
"LIUJUR": "流局率"
},
"MISC": {
"WORDNOTEXIST": "要查找的詞匯不在詞表中!",
"ERROR": "錯誤:",
"DASH": "-----",
"ENTEREXIT": "按 Enter 鍵退出程序...",
"COLON": ""
}
}
43 changes: 24 additions & 19 deletions lib/majsoul/analyze.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@ function analyzepaipu(arr, start){
}
else{
let cmd;
[cmd, start] = getnumber(arr, start);
[cmd, ss] = getnumber(arr, ss);
let addlen = cmd % 8 == 2;
unknownnumber += ' ' + cmd;
[cmd, start] = getnumber(arr, start);
[cmd, ss] = getnumber(arr, ss);
if (addlen)
start += cmd;
ss += cmd;
continue;
}
let valid = true;
Expand Down Expand Up @@ -158,6 +158,8 @@ function analyzepaipu(arr, start){
roomres.type = 'friend';
else if (arr[i + 1] == 2)
roomres.type = 'match';
else if (arr[i + 1] == 4)
roomres.type = 'contest';
else
roomres.type = 'unknown' + arr[i + 1];
i += 2;
Expand Down Expand Up @@ -244,12 +246,12 @@ function analyzepaipu(arr, start){
}
else{
let cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
let addlen = cmd % 8 == 2;
unknownnumber += ' ' + cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
if (addlen)
start += cmd;
i += cmd;
}
}
}
Expand All @@ -259,12 +261,12 @@ function analyzepaipu(arr, start){
}
else{
let cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
let addlen = cmd % 8 == 2;
unknownnumber += ' ' + cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
if (addlen)
start += cmd;
i += cmd;
}
}
}
Expand All @@ -276,12 +278,12 @@ function analyzepaipu(arr, start){
}
else{
let cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
let addlen = cmd % 8 == 2;
unknownnumber += ' ' + cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
if (addlen)
start += cmd;
i += cmd;
}
}
let room = {
Expand Down Expand Up @@ -313,6 +315,9 @@ function analyzepaipu(arr, start){
hint: roomres['1a'] < 13,
};
}
else if (roomres.type == 'contest'){
data.extra.id = undefined;
}
data.roomdata = room;
}
else if (arr[i] == 0x5a){
Expand Down Expand Up @@ -388,12 +393,12 @@ function analyzepaipu(arr, start){
}
else{
let cmd;
[cmd, start] = getnumber(arr, start);
[cmd, k] = getnumber(arr, k);
let addlen = cmd % 8 == 2;
unknownnumber += ' ' + cmd;
[cmd, start] = getnumber(arr, start);
[cmd, k] = getnumber(arr, k);
if (addlen)
start += cmd;
k += cmd;
}
}
data.playerdata[pid].finalpoint = score.final;
Expand All @@ -405,17 +410,17 @@ function analyzepaipu(arr, start){
}
else{
let cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
let addlen = cmd % 8 == 2;
unknownnumber += ' ' + cmd;
[cmd, start] = getnumber(arr, start);
[cmd, i] = getnumber(arr, i);
if (addlen)
start += cmd;
i += cmd;
}
}
//var pp = path.join(__dirname, '../../data/gamedata.txt');
//if (valid && data.extra.id != undefined) fs.appendFileSync(pp, JSON.stringify(data) + '\n');
paipugamedata[data.extra.id] = data;
if (data.extra.id != undefined) paipugamedata[data.extra.id] = data;
ss += paipulength;
}
}
Expand Down
6 changes: 6 additions & 0 deletions src/i18n.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ namespace I18N{
}
auto json = Algo::ReadJSON("i18n/" + lang + ".json");
std::string word1, word2;
json.Get("CHCP", word1);
#ifdef _WIN32
system("chcp 65001");
system(word1.c_str());
system("cls");
#endif
while (json.GetKey(word1)){
auto jsonp = json[word1];
while (jsonp.GetKey(word2)){
Expand Down
5 changes: 0 additions & 5 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,6 @@ namespace MAIN{
}

int readconfig(){
#ifdef _WIN32
system("chcp 65001");
system("chcp 936");
system("cls");
#endif
if (access("config.json", 0) == -1){
Out::cout << "Can't find config.json!\n";
PAUSEEXIT;
Expand Down

0 comments on commit be4a140

Please sign in to comment.