亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 用delphi開發directx控件 (2000年12月20日).txt

?? delphi 編程技巧
?? TXT
字號:
用Delphi開發DirectX控件 (2000年12月20日) 

本站更新  分類:   作者:整理編輯:China ASP  推薦:   閱讀次數:418  
(http://www.codesky.net)  

--------------------------------------------------------------------------------

  Microsoft推出的DirectX使我們在Windows9x下開發游戲軟件便利了許多。一般在介紹DirectX 的資料里都講的是如何用VC++來開發,其實inprise公司的語言也可以用來開發基于DirectX的游戲軟件。我們這里用的是DirectX控件,它有Delphi3和Delphi4不同的版本。在
http://www.ingjapan.ne.jp/hori/ 處你可以download,是由一個日本人寫的,而且,這套控件是完全免費的,你可以自由使用。在這套控件里有DirectX的各種范例程序,我們今天來討論一下其中基于DirectX的網絡通信程序如何開發。

  想必大家都看到過那些硝煙紛飛的即時戰略游戲,這些游戲中一個很誘人的買點就是可以幾個人同時加入戰斗,各自扮演一方高手,殺它個你死我活。那么這些即時戰略游戲中的網絡對戰部分是怎么寫的呢?其實在Microsoft的DirectX中專門有一類API就是負責網絡通信的,不管是基于IPX,還是TCP/IP,或者是Modem,它都可以圓滿解決。而作為程序設計的我們一般來說不用操心這些連接方式不同而帶來的代碼的不同,我們可以一視同仁,只要寫一套統一的代碼就可以了,各種連接方式的細節問題我們就交給DirectX去處理了。

  下面我們具體分析一下一個chat聊天程序的構造。運行samples\network\chat.dpr,我們就看到了一個最簡單的聊天程序了。首先程序會讓你選擇連接的方式:IPX連接、Internet TCP/IP連接、調制解調器連接和串行連接;選擇好連接方式后(下面假設你是選擇用TCP/IP方式連接),你可以選擇是創建一個新游戲還是進入一個已經存在的游戲(當然現在這里的游戲就是指一個聊天程序!);如果你是選擇建立一個新游戲,那么接下來要你輸入游戲的名字和你的名字,然后聊天就開始了;如果你是選擇加入一個已經存在的游戲的話,那么你可以通過輸入指定的IP地址來連接或者索性讓程序去搜索有哪些已經存在的游戲名字。如果你在連接方式中選擇的是調制解調器連接的話,就稍微復雜一些,需要選擇調制解調器,并準備撥號和應答等。有沒有發現這些連接的方式和過程和我們通常在游戲中看到的很相似?由于這些關于連接的對話框都是由DirectX提供的,因而會有一點語言上的問題。如果你安裝的是DirectX的中文版本的話,那么你看見的將全部是中文。(順便說一句,這套Delphi 控件所支持的DirectX必須在5.0版本以上。)
  這個程序本身并不復雜,下面是其主要的幾個過程,我們已經加上了較為詳細的注釋:

  //增加游戲者
  procedure TMainForm.DXPlay1AddPlayer(Sender: TObject; Player: TDXPlayPlayer);
  begin
   Memo1.Lines.Add(Format(' %s entered a room.', [Player.Name]));
  end;


  //游戲者離開
  procedure TMainForm.DXPlay1DeletePlayer(Sender: TObject;Player: TDXPlayPlayer);
  begin
   Memo1.Lines.Add(Format(' %s left a room.', [Player.Name]));
  end;

  
  //DirectPlay打開
  procedure TMainForm.DXPlay1Open(Sender: TObject);
  var
   i: Integer;
  begin
   for i:=0 to DXPlay1.Players.Count-1 do
if DXPlay1.Players[i].RemotePlayer then
Memo1.Lines.Add(Format(' %s is entering a room.', [DXPlay1.Players[i].Name]));
end;

 procedure TMainForm.FormDestroy(Sender: TObject);
  begin
   DXPlay1.Close;
  end;

  //窗口創建執行事件
  procedure TMainForm.FormCreate(Sender: TObject);
  begin
   try
   //DirectPlay 打開
DXPlay1.Open;
   except
   //防錯處理
on E: Exception do
begin
Application.ShowMainForm := False;
Application.HandleException(E);
Application.Terminate;
end;
   end;

   //顯示有關信息在窗口的caption
   MainForm.Caption := Format('%s : %s', [DXPlay1.ProviderName, DXPlay1.SessionName]);
  end;

  //當有消息發送時
  procedure TMainForm.DXPlay1Message(Sender: TObject; Player: TDXPlayPlayer; Data: Pointer;DataSize: Integer);
  var
   s: string;
  begin
   case DXPlayMessageType(Data) of 
DXCHAT_MESSAGE:
begin
if TDXChatMessage(Data^).Len<=0 then
s := ''
else begin
//計算字符串長度和內容
SetLength(s, TDXChatMessage(Data^).Len);
StrLCopy(PChar(s), @TDXChatMessage(Data^).c, Length(s));
end;

//顯示收到的消息
Memo1.Lines.Add(Format('%s> %s', [Player.Name, s]));
end;
  end;
  end;

  //發送按鈕
  procedure TMainForm.Button1Click(Sender: TObject);
  var
   Msg: ^TDXChatMessage;
   MsgSize: Integer;
  begin
   MsgSize := SizeOf(TDXChatMessage)+Length(Edit1.Text);
   GetMem(Msg, MsgSize);
   try
Msg.dwType := DXCHAT_MESSAGE;
Msg.Len := Length(Edit1.Text);
StrLCopy(@Msg^.c, PChar(Edit1.Text), Length(Edit1.Text));

//發送消息到所有的人
DXPlay1.SendMessage(DPID_ALLPLAYERS, Msg, MsgSize);

//發送消息到自己
DXPlay1.SendMessage(DXPlay1.LocalPlayer.ID, Msg, MsgSize);
Edit1.Text := '';
   finally
   FreeMem(Msg);
   end;
  end;

  TDXPlay控件是寫這類程序的關鍵,其屬性、事件和方法并不多。GUID屬性用來程序的自我識別,具有相同GUID的程序互相之間就能識別,所以你可以看到GUID是一個很長的數字;Open方法用來打開通訊端口,Close用來關閉通訊端口;SendMessage方法是用來發送消息到所有的游戲者,當你的程序收到消息的時候,會產生OnMessage 事件。

  這個程序的代碼應該是相當簡練了,但是卻完成了點對點的多點聊天功能。如果你在自己的程序里約定好一套規則,那么你的程序也就具備了互相的通信能力,是不是感覺很簡單?可以說,利用DirectX來寫這方面的通信程序是最佳的選擇,你可以對網絡的知識完全不懂,因為這一切已經由Microsoft花費了大量人力物力進行優化的代碼來完成了。如果說有什么缺點,就是要求用戶的電腦上一定要安裝上DirectX,這在現在win98越來越普及的情況下,并不是一件難事。再說,Microsoft的DirectX也是一套完全免費的軟件。利用DirectX優秀的性能加上功能強大的 Delphi語言,相信你一定能寫出一套優秀的游戲軟件(當然擁有設計良好的對戰功能)。


 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲国产中文字幕欧美| 久久人人爽人人爽| 国产在线精品一区二区夜色| 中文字幕亚洲一区二区av在线| 91精品国产综合久久久蜜臀图片| 岛国一区二区三区| 麻豆精品精品国产自在97香蕉| 亚洲黄一区二区三区| 国产午夜一区二区三区| 国产色产综合产在线视频| 欧美在线观看视频一区二区| 成人美女视频在线看| 麻豆免费精品视频| 婷婷丁香激情综合| 亚洲黄色录像片| 国产精品毛片久久久久久| 精品人伦一区二区色婷婷| 欧美日韩国产成人在线免费| 97se亚洲国产综合自在线不卡 | 亚洲一区在线免费观看| 国产午夜精品福利| 欧美大片一区二区| 制服丝袜一区二区三区| 精品视频在线看| 在线看国产一区二区| 99久久99久久精品免费观看| 高清不卡在线观看av| 国产精品66部| 国产经典欧美精品| 国产麻豆精品一区二区| 国产乱子轮精品视频| 国产在线不卡一区| 狠狠色狠狠色综合| 国产乱妇无码大片在线观看| 国产精品一区二区久激情瑜伽| 国内久久婷婷综合| 国产在线播精品第三| 国产米奇在线777精品观看| 国产美女主播视频一区| 国产999精品久久| 成人性色生活片免费看爆迷你毛片| 狠狠色丁香久久婷婷综合_中 | 国产剧情av麻豆香蕉精品| 极品销魂美女一区二区三区| 激情六月婷婷久久| 国产一区视频在线看| 激情久久五月天| 国产精品一二三四区| 高清beeg欧美| 97久久人人超碰| 欧美在线看片a免费观看| 欧美图片一区二区三区| 欧美日本精品一区二区三区| 日韩一卡二卡三卡四卡| 精品成人一区二区三区四区| 国产亚洲精久久久久久| 亚洲免费成人av| 亚洲777理论| 久久er精品视频| 成人中文字幕电影| 色一情一乱一乱一91av| 国产亚洲污的网站| 国产精品萝li| 亚洲在线中文字幕| 日本va欧美va精品发布| 国产精品一区一区三区| 91欧美一区二区| 欧美精品日韩一区| 久久久国产精华| 一级女性全黄久久生活片免费| 三级亚洲高清视频| 国产乱色国产精品免费视频| 色菇凉天天综合网| 日韩视频免费观看高清完整版在线观看| 2023国产精品自拍| 亚洲欧美激情插| 狠狠色丁香九九婷婷综合五月| 95精品视频在线| 欧美一区二区三区四区五区 | 欧美影院一区二区| 精品国产三级a在线观看| 国产精品国产自产拍高清av王其| 亚洲伊人伊色伊影伊综合网| 九九在线精品视频| 91九色最新地址| 久久亚洲精精品中文字幕早川悠里| 亚洲色欲色欲www在线观看| 日本欧美一区二区| 91一区在线观看| 亚洲精品一线二线三线无人区| 亚洲天堂2014| 高清不卡一二三区| 日韩一区二区三区在线视频| 亚洲欧美另类在线| 国产福利精品一区二区| 欧美精品tushy高清| 中文字幕一区二区不卡| 久久99精品国产麻豆婷婷洗澡| 色哟哟一区二区| 国产精品毛片大码女人| 另类小说一区二区三区| 欧美丝袜第三区| 国产精品少妇自拍| 狠狠色丁香久久婷婷综| 3d成人动漫网站| 亚洲综合在线视频| 不卡高清视频专区| 国产香蕉久久精品综合网| 美国十次综合导航| 91精品婷婷国产综合久久竹菊| 国产精品乱码人人做人人爱| 黄网站免费久久| 日韩三级伦理片妻子的秘密按摩| 一区二区三区波多野结衣在线观看| 国产一区二区影院| 日韩免费视频一区| 污片在线观看一区二区| 在线观看亚洲a| 亚洲乱码国产乱码精品精可以看| 国产精一区二区三区| 精品国产麻豆免费人成网站| 日韩—二三区免费观看av| 欧美日韩国产免费一区二区| 亚洲精品成a人| 色狠狠桃花综合| 亚洲一区视频在线观看视频| 91在线观看成人| 最新欧美精品一区二区三区| 成人黄色小视频在线观看| 国产欧美视频一区二区| 精品一区免费av| www日韩大片| 国产精品一区二区视频| 国产日韩欧美电影| 国产成人精品亚洲日本在线桃色 | 国产精品全国免费观看高清| 国产乱码一区二区三区| 国产欧美一区二区精品久导航| 国产成人精品影视| 成人欧美一区二区三区白人 | 国精产品一区一区三区mba桃花| 日韩一区二区视频| 国内精品视频一区二区三区八戒| 精品国产免费人成电影在线观看四季| 久久精品国产第一区二区三区| 日韩欧美一二三四区| 国内精品久久久久影院薰衣草| 国产欧美一区二区精品忘忧草| 99九九99九九九视频精品| 亚洲人成精品久久久久久| 欧洲一区二区三区免费视频| 亚洲线精品一区二区三区| 欧美人伦禁忌dvd放荡欲情| 日韩av不卡在线观看| 26uuu亚洲综合色欧美 | jlzzjlzz亚洲日本少妇| 成人免费小视频| 欧美三级在线播放| 免费观看成人鲁鲁鲁鲁鲁视频| 久久亚洲捆绑美女| 91丝袜美腿高跟国产极品老师 | 日产国产欧美视频一区精品| 日韩欧美国产综合| 国产91精品精华液一区二区三区| 亚洲婷婷国产精品电影人久久| 欧美精品精品一区| 国产麻豆精品一区二区| 亚洲欧美日韩精品久久久久| 欧美一区二区三区免费视频| 极品美女销魂一区二区三区免费| 中文字幕日本不卡| 欧美少妇一区二区| 激情文学综合网| 一区二区三区在线观看视频| 日韩一区二区免费在线电影 | 在线精品亚洲一区二区不卡| 青青国产91久久久久久| 国产精品女人毛片| 欧美日韩精品一区二区天天拍小说 | 欧美xxxxx牲另类人与| 不卡一卡二卡三乱码免费网站| 亚洲福利一区二区| 久久精品一区二区三区av| 欧美在线观看视频一区二区| 极品美女销魂一区二区三区| 一区二区三区美女视频| 欧美精品一区二区久久久| 日本精品一级二级| 国产美女精品一区二区三区| 亚洲一区免费在线观看| 国产亚洲精久久久久久| 欧美色中文字幕| 国产不卡视频在线观看| 日韩精品色哟哟| 国产精品国产自产拍高清av王其 | 欧美电影免费观看高清完整版在线观看 | 狠狠色狠狠色合久久伊人| 精品日韩99亚洲| 精品国产一区二区国模嫣然| 欧美亚洲综合网|