Thursday, September 18, 2008

Tips #1: swap( a, b)

How do you swap two values in C/C++? General, we will create a function as below:

bool swap( int& value1, int& value2 )
{
int tempValue;
tempValue = value1;
value1 = value2;
value2 = tempValue;
return true;
}

Here comes the question. Can you swap these two values without using any temporary variable? For sure, you can swap two values without any temporary variable. Here is the solution,

bool swap( int& value1, int& value2 )
{
value1 ^= value2;
value2 ^= value1;
value1 ^= value2;
return true;
}

Any question?

Tuesday, September 16, 2008

新天上碑─外測程式變成正式版程式 Part 2

新天上碑─外測程式變成正式版程式提到如何將測試版程式修改成正式版,但是,有時候修改後卻發現無法連接到正式版伺服器〈圖一〉,而自己也確信伺服器沒有在維修,那問題出在甚麼地方呢?

主要的問題在於新天上碑─外測程式變成正式版程式中有個預設前提,那就是官方提供的最新更新軟體會包含新的主程式〈game.exe〉;在一些情形下,更新軟體並沒有包含主程式〈因為需要更新的不是主程式〉,因此當你嘗試連接到正式伺服器的時候,實際上仍然是連接到測試伺服器,而這時候測試伺服器已經關閉,當然就無法連接上〈圖一〉,即使連接上也不是測試伺服器已經關閉,當然就無法連接上〈圖一〉,即使連接上也不是正式伺服器。

圖一

那麼如何修改?首先你必須有能編輯非文字檔案的編輯器,例如UltraEditHex Edit,然後打開game.exe這個程式,之後搜尋"219.84.173.106",這個"219.84.173.106"是外側伺服器的位址〈圖二〉;當你找到之後,將"219.84.173.106"修改成"219.84.173.90",而"219.84.173.90"是正式伺服器的位址〈圖三〉;最後將修改後的game.exe儲存即可。

圖二

圖三

最後發表一下牢騷,個人使用的作業系統為XP SP3,有2GB記憶體,安裝了COMODO防火牆和AVG防毒軟體,4.8版的game.exe居然吃掉了3XXMB記憶體和4XXMB虛擬記憶體,就一個2D遊戲軟體而言,記憶體的管理不是差而已,而是超級的沒有效率;很懷疑它的最低系統要求還能跑的動!