近來搞的小 project
在可見的將來,我都要面對類似以下的程式碼:
int XQ::pidS(int t,char c)
{
int n,s,e,i,j,j0,j1,j2,cmp=-1;;
s=24+Turn();
e=32+Turn();
if(c<='9' && c>='1')
{
if(Turn()) n=c-'1'; else n='9'-c;
for(i=s;i<=e;i+=2)
if(YX_X(cch_p[i])==n) {return i;}
return s;
}
if(c>='A' && c<='E')
{
n=c-'A';
for(i=8;i>=0;i--)
for(j=9;j>=0;j--)
if(bd(j,i)>=s)
if(bd(j,i)<=e)
if((bd(j,i)&1)==Turn())
{
if(n==0) return bd(j,i);
n--;
}
return s;
}/*A-E*/
#define CMP_SWAP(a,b) if(YX_Y(cch_p[a])<YX_Y(cch_p[b])) {j=a;a=b;b=j;}
j0=-1;
j1=-1;
j2=-1;
for(i=s;i<=e &&j0==-1;i+=2)
for(j=i+2;j<=e;j+=2)
if(YX_X(cch_p[i])==YX_X(cch_p[j]))
{ if(j1==-1){ j0=i; j1=j;}
else {j2=j;跳出;} }
if(j2==-1) j2=j1;
CMP_SWAP(j1,j2);
CMP_SWAP(j0,j1);
CMP_SWAP(j1,j2);
cmp=-1;
if(c=='+' &&!Turn()) cmp=1;
if(c=='-' &&Turn()) cmp=1;
if(cmp==1) return j0;
return j2;
}
static char translate_c2e(char *c)
{
int i;
感覺就像要看懂 Google 的 Javascript 一樣:
- 大堆像
i, p, k, n, syx, dyx, cch_p等等不知是甚麼東西、甚麼用途的變數名稱,就好像是曾經用過 code obfuscator 處理過,為了保存甚麼商業秘密似的。 - 每行都可以隨機地出現由一至四個不等的空格、tab 組成的縮排,甚至每行都可能會反向縮排,例如 if/else 中間的內容可以隨時在 if 左面、右面,或者在同一行。個個檔案都可以不一樣,甚至同一個檔案內各處也不一樣。
- 隨了縮排不計算,其它正常需要的空格全部不見了,就好像為了要慳位置似的,我說像 Google 的 Javascript 就是這個原因。
真的,不是 wordpress 排版錯誤,我已經努力確保所有空格、縮排位置和原來的程式一模一樣。唯一有改動的,就是程式本來有 Big5 碼,我將那兩個字改為用 UTF-8 碼而已,否則在 wordpress 就看不到了。會使用中文來當程式碼來寫,還是 C++,沒錯,這些中文程式碼就是丙正正遺留下來的餘孽。別的中文化程式語言也落得一樣下場,即使是當年「風頭一時無兩」的中蠎(中文 python)也不例外。這種中文化根本就是為了起長城,將中國人的腦袋和外面的世界隔絕,推廣方面也完全沒有半點好處,更不見得這種東西比英文易理解。
面對這些程式,我只能喊:
救命。
可能是因為當初魏澤人想也沒想過會有人想看、想改他的東西,所以就不需要用別人也能理解的方式去寫吧。但對於我這個入門的新手來說,真是頭痛得不得了。
另一樣更麻煩的,就是夢入神蛋是用 C++ 寫的,但我暫時又只懂用 C(以前學過的 C++ 都原封不動還了給教授),所以或許我只能將 engine 部份加個 command line frontend,然後和 GUI 之間用 socket 溝通也好,別的甚麼方法也好,總之是不能混在一起。其實這種做法和別的國際象棋做法一樣,如果能支援 GTP protocol 就最好,但短期目標 — 起碼要能夠用吧。對於我這個沒怎麼接觸過稍大一點的程式的人來說,距離這個目標還差得太遠了。
等能夠見人的時候才拿出來吧。現在以我的功力,寫出來的東西真是笑壞人肚皮……
其實… 我對於你呢篇blog講既野都係一頭霧水
不過對於你就中文化作出的貢獻, 總係要講聲 “謝謝”
Semson,謝謝你。其實我在寫點東西,但現在還未見有成果。等有些可以見人的東西時就會 post 出來的了。