2014年12月18日 星期四

Microsoft XNA Game Studio 2.0 的安裝

xna-header
這篇文章要介紹如何安裝 XNA Game Studio 2.0
首先要確定您的電腦已安裝
Visual Studio 2005

C# Express 2005 下載Link http://www.microsoft.com/taiwan/vstudio/express/visualcsharp/download/
或以上版本
XNA Game Studio 2.0 的系統需求為:
-Windows Vista 或 Windows XP SP2 以上版本 的作業系統。
-可被 Visual Studio 2005 辨識的硬體。
-外加支援 DirectX 9.0c 和 Shader Model 1.1 的顯示卡(有些 Start Kits 建議使用 Shader Model 2.0)。
-如果你要使用 XACT(Microsoft Cross-Platform Audio Creation Tool) 功能來做音效的部份,則您的電腦需要有 .Net Framework 1.1。
如果您覺得很複雜看不懂,就確定您的電腦可以正常跑 DirectX 以及 .Net Framework 就對了。
(有人提出想要知道,我再另外補文章)
接下來就是看圖說故事時間啦

XNA 2.0 遊戲架構簡解

xna-header
我這次要談的是 XNA 2.0 的基本遊戲架構
為什麼特別說是 2.0 呢?
因為我不知道 MS 在以後的版本會不會改成其他的架構
科技日新越益,日後說不定有更好的架構也說不定
(本主題使用 Visual Studio 2005 以及 XNA 2.0)
XNA 2.0 的遊戲架構:
1.初始化 圖像、輸入裝置、聲音
2.載入 資源
3.開始遊戲循環,在每個循環中做以下四件事
  -抓取使用者輸入訊號
  -處理需要的計算 (像是 AI,動作,碰撞偵測 或是其他)
  -檢查是否達成遊戲結束的條件 - 如果是的話則跳出這個循環
  -繪圖至螢幕,產生音效,遊戲控制器的回饋
4.結束 圖像、輸入裝置、聲音
5.釋放資源
(翻譯自 Beginning XNA 2.0 Game Programming)

在 XNA 放置 2D 圖片 - 從背景開始

xna-header
遊戲中最重要的一項就是圖像啦
這篇就是要談怎麼使用 XNA 在遊戲裡放 2D 的圖片
背景是每個遊戲裡都一定會有的 2D 圖
即使是大部份的 3D 遊戲,也會貼一張假山假天空的 2D 背景畫面

2014年10月6日 星期一

Socket Error 錯誤號碼及原因

在Coding 網路連線資料傳輸時,免不了會遇到的錯誤代碼,記錄如下備查
  • Socket error #0 –
    Direct send error.
    直接傳送錯誤。
  • Socket error #10004 [WSAEINTR] –
    Interrupted function call.
    函式呼叫被中止。
  • Socket error #10013 [WSAEACCES] –
    Permission denied.
    沒有權限。
  • Socket error #10014 [WSAEFAULT] –
    Bad Address.
    不正確的地址。
  • Socket error #10022 [WSAEINVAL] –
    Invalid argument.
    無效的引數(參數)。

2014年6月26日 星期四

[Delphi 7]開啟時發生錯誤!Borland license information was found, but it is not valid for Delphi.

開啟 Delphi 時開過了很久都沒動作,後來好不容易動了,卻出現了如下的錯誤視窗:
Borland license information was found, but it is not valid for Delphi.Youcan not run Delphi without this information.Click the 'Exit' button to exit Delphi.
如此只要將
C:\Documents and Settings\用戶名\.borland
文件夾刪除即可
再次開啟時就會自動建立好

2014年3月20日 星期四

[Delphi]視窗位置 Vcl.Forms.TPosition

調整選項以在應用程式剛開啟時,放到你所選擇的位置
以下就各個選項做說明
poDesigned
The form appears positioned on the screen and with the same height and width as it had at design time.
form 將會顯示在和你設計規劃的時候相同的大小和位置

poDefault
The form appears in a position on the screen and with a height and width determined by the operating system.
交由作業系統決定所該顯示的位置和大小,通常都會在上一個程式開啟後的位置再往右下一點

2014年1月15日 星期三

[Delphi] 利用Winsock 檢查要使用的Port 是否已被佔用

注意,如果使用Winsock2 無法正常檢查!!
此程式會檢查給的port 是否已經被使用,如果是就+1,直到找到空著(沒有被使用)的埠為止。
function TNetServer.GetFreePort(aPort: Integer): Integer;
var
  _vSock: TSocket;
  _vWSAData: TWSAData;
  _vAddrIn: TSockAddrIn;
begin
  try
  if WSAStartup(MAKEWORD(2, 2), _vWSAData) = 0 then begin
    _vSock := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    try
      if _vSock <> SOCKET_ERROR then begin
        _vAddrIn.sin_family := AF_INET;
        _vAddrIn.sin_addr.S_addr := htonl(INADDR_ANY);
        _vAddrIn.sin_port := htons(APort);
        while (Bind(_vSock, _vAddrIn, SizeOf(_vAddrIn)) <> 0) and (WSAGetLastError = WSAEADDRINUSE) do
        begin
            inc(aPort);
            _vAddrIn.sin_port := htons(aPort);
        end;
      end;
    finally
      CloseSocket(_vSock);
      WSACleanup();
    end;
  end;
  finally
    Result := aPort;
  end;
end;


如果有需要指定範圍,可在 18, 19行間增加如下:


if aPort > XXXXX then aPort := OOOOO;


XXXXX 是最大的埠號值

OOOOO 是最小的埠號值