發表文章

Python 3 of py2exe "UnicodeDecodeError: 'cp950' codec can't decode bytes" 可能解法

前幾天,我在執行Python 3版的py2exe出現
"UnicodeDecodeError: 'cp950' codec can't decode bytes"
錯誤,就上網Google一下可能的解法:

notepad或notepad++的utf-8編碼文件: open('filename', encoding = 'utf-8-sig')
notepad++的utf-8 without BOM文件: open('filename', encoding = 'utf8')

 最後我把C:\Python34\Lib\site-packages\py2exe\runtime.py,
第577 line:
從原本
with open(target.script, "U") as script_file:

改成
with open(target.script, "U", encoding = 'utf-8-sig') as script_file:

就可以正常執行
py -3.4 -m py2exe myscript.py -W mysetup.py ... edit myssetup.py py -3.4 mysetup.py py2exe

關於Notepad++ plug-in NppExec 嘗試執行 C/C++ code, 出現"電腦遺失libintl-8.dll"錯誤可能的解法

For windows8 or windows 8.1
1. 系統->進階系統設定->環境設定->系統變數,編輯Path,加上libintl-8.dll的path,例如:
C:\Program Files\Dev-Cpp\MinGW32\bin\
2. 以"系統管理員的身份執行" Notepad++

enjoy~

CAMEL UP完全山寨計劃:free tortoise running

今天中午,跟同事玩了桌遊CAMEL UP,覺得還不錯,
當下就想到,哪天有空來山寨,寫個Open Source的。
名字暫定為Free Tortoise Running,
既然是山寨,規格就不能完全一樣。

1. 首先駱駝(CAMEL)換成Tortoise,仍為5個,另外走的步數是1~4:
因為原本走1~3設定,如果沙漠板塊(for +1步或-1步)放在2,
而沙漠板塊又不能相鄰放,會造成1和3的位置不能放。
改成走的步數是1~4,別人沙漠板塊放2,其它玩家沙漠板塊還可以放4。

2.遊戲地圖大小原本16格(3*4+4),改成20格(4*4+4):
因為走的步數由1~3變成1~4,所以地圖也要放大

3.初始錢幣為10$(原本3$),玩家所持錢幣可為負的(運氣太差的話),
大致上,物價變為2倍。

4. 領先下注板塊,改成只有第一名有發錢,另外發錢的規則是:
第一張中的話10$(原本5$)
第二張中的話6$(原本3$)
第三張中的話4$(原本(2$)
沒中的話-2$(原本-1$)

5. 最終下注區,由原本只能下注第一名和最後一名,改成1,2,4,5名,四區可下注,
另外發錢的規則是:
第一個中的16$(原本8$)
第二個中的10$(原本5$)
第三個中的6$(原本3$)
第四個中的4$(原本2$)
其它中的1$(原本1$)
沒中的-3$(原本-1$)

6. 踩到沙漠板塊,放該沙漠板塊的玩家得到2$(原本1$),而骰金字塔步數也得到2$(原本1$)

VMWare Player:The default sound device cannot be opened:

如果VMWare player啟動linux時出現:
The default sound device cannot be opened: A device ID has been used that is out of range for your system. Sound will be disconnected

 這個可能是使用"瑞昱高傳真音效"卡,設定上的問題,
 我把"音效裝置連接設定",改成"AC97前置面板"(原本是HD Audio前置面板)
 就可以在VMWare Player下的Fedora 20聽到聲音了。

 或者參考以下的改法:
https://communities.vmware.com/thread/406063
If you have RealTek speakers, look within the RealTek HD Audio Manager.  Select the yellow folder near the analog panel, and make sure "Disable front panel jack detection" is selected.  This fixed the problem for me.

Apparently RealTeks detection blocks the linux virtual machine from accessing the resource, and causes the error.

直角三角形一定有一邊長是無理數,要不然有一角度是無理數

高中時,猜想的:
直角三角形一定有一邊長是無理數,要不然必有一角度是無理數。

我不會證,但由泰勒展開式,似乎可推得此結果。
不曉得是不是這樣?有沒有人證過?

寫給超新手瑪莉歐類型遊戲製作的小技巧

瑪莉歐類型遊戲製作,
對於關卡地圖,
一開始我以為是用一個raw data,
例如用0x00代表背景,0x01代表磚塊,0x02代表金幣…等,
但是這樣在製作關卡地圖,就沒有視覺化。
今天,我看過一個open source python寫的瑪莉歐程式碼,
發現有一個辦法可以使瑪莉歐遊戲關卡稍微視覺化,
就是用一個圖檔,例如*.png檔裡的顏色,來對應到關卡,
如用黃色代表磚塊,金色代表金幣…等。
為了製作方便,可以讓遊戲主程式直接用顏色判斷,
來形成關卡。若是打算要正式商業化發行,
可以寫一個*.png轉raw data的小程式,
讓遊戲主程式來讀raw data,而不用包入*.png。