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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

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

?? 自己對DELPHI學(xué)習(xí)的一點體會
?? TXT
字號:
用Delphi開發(fā)DirectX控件 (2000年12月20日) 

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

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

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

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

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

  //增加游戲者
  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;

  //窗口創(chuàng)建執(zhí)行事件
  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;

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

  //當(dāng)有消息發(fā)送時
  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
//計算字符串長度和內(nèi)容
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;

  //發(fā)送按鈕
  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));

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

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

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

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


 
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区成人在线| 91一区二区在线| 粉嫩嫩av羞羞动漫久久久| 在线视频你懂得一区二区三区| 7777精品久久久大香线蕉 | 偷窥少妇高潮呻吟av久久免费| 日本不卡不码高清免费观看| 91在线视频播放地址| 久久综合久久综合久久| 亚洲一区二区av电影| k8久久久一区二区三区| 精品国产第一区二区三区观看体验| 亚洲精品乱码久久久久久久久| 国产麻豆成人精品| 欧美一级理论片| 亚洲国产日日夜夜| 91免费精品国自产拍在线不卡| 久久综合久久综合久久| 麻豆国产精品官网| 4438亚洲最大| 日韩精品五月天| 欧美日韩欧美一区二区| 成人免费在线观看入口| 风流少妇一区二区| 久久综合一区二区| 极品少妇xxxx精品少妇| 欧美一级视频精品观看| 奇米一区二区三区av| 欧美一卡二卡三卡| 日本亚洲三级在线| 日韩视频在线永久播放| 日本视频一区二区| 日韩女同互慰一区二区| 青青国产91久久久久久 | 青青青伊人色综合久久| 欧美日韩中文字幕精品| 亚洲午夜久久久久久久久电影网| 色先锋久久av资源部| 亚洲一级在线观看| 欧美高清视频一二三区 | 欧美电影影音先锋| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美丰满高潮xxxx喷水动漫| 午夜精彩视频在线观看不卡| 777欧美精品| 精品一区二区三区影院在线午夜| 欧美大片一区二区| 国产精品一品二品| 中文字幕亚洲成人| 欧美三区免费完整视频在线观看| 亚洲成人av在线电影| 日韩一区二区三区免费观看| 老色鬼精品视频在线观看播放| 久久奇米777| 国产福利一区在线| 久久久高清一区二区三区| 2022国产精品视频| 久久一区二区三区四区| 国产精品一区在线观看乱码| 国产日产欧美精品一区二区三区| 成人午夜av在线| 伊人色综合久久天天| 666欧美在线视频| 国内久久婷婷综合| 亚洲欧美激情插| 日韩欧美中文一区| 国产91精品露脸国语对白| 亚洲精品视频观看| 日韩欧美的一区| 91视视频在线观看入口直接观看www | 成人禁用看黄a在线| 中文字幕在线免费不卡| 欧美日本一道本在线视频| 国产自产视频一区二区三区| 一区二区久久久| 亚洲精品一区二区三区在线观看| 精品一区二区三区在线观看国产| 最近日韩中文字幕| 91精品国产综合久久蜜臀| 丁香另类激情小说| 日本不卡一二三区黄网| 亚洲欧美另类图片小说| 久久噜噜亚洲综合| 欧美精品三级日韩久久| 成人av在线电影| 精品一区二区三区免费观看| 亚洲美女在线国产| 国产色婷婷亚洲99精品小说| 欧美日韩一区二区不卡| 成人爱爱电影网址| 久久成人av少妇免费| 夜夜亚洲天天久久| 欧美韩国一区二区| 精品国精品国产| 欧美日韩一区二区欧美激情| 99精品欧美一区二区蜜桃免费| 免费在线一区观看| 亚洲成av人影院| 国产精品不卡一区| 久久久久久久久99精品| 777xxx欧美| 欧美日韩精品一区二区在线播放| 成人h动漫精品一区二区| 国产精品91一区二区| 奇米精品一区二区三区在线观看一| 一区二区三区四区视频精品免费| 国产免费成人在线视频| xfplay精品久久| 欧美精品一区二区三| 538prom精品视频线放| 欧美精品在线一区二区三区| 在线视频国内一区二区| 色婷婷国产精品| 91原创在线视频| 99久久国产综合精品女不卡| 成人97人人超碰人人99| 99久久综合狠狠综合久久| 成人激情小说网站| jiyouzz国产精品久久| 成人污视频在线观看| 岛国精品一区二区| 99v久久综合狠狠综合久久| caoporm超碰国产精品| 91小视频在线免费看| 色综合一区二区三区| 亚洲一区成人在线| 中文字幕欧美国产| 91精品国产高清一区二区三区| 色先锋aa成人| 日韩欧美精品在线视频| 欧美挠脚心视频网站| 69堂精品视频| 精品免费视频.| 欧美精品一区二区三区视频| 精品久久久影院| 国产精品三级久久久久三级| 中文字幕在线不卡国产视频| 一二三四社区欧美黄| 日韩av一区二区在线影视| 国产一区欧美一区| 91一区一区三区| 欧美一区二区三区性视频| www成人在线观看| 国产精品国产馆在线真实露脸| 亚洲男人天堂一区| 欧美日韩视频在线观看一区二区三区 | 久久久久久久久97黄色工厂| 日韩欧美中文一区二区| 久久婷婷一区二区三区| 国产精品系列在线| 亚洲欧美在线aaa| 婷婷国产v国产偷v亚洲高清| 国产精品77777| 一本久道中文字幕精品亚洲嫩| 91麻豆精品国产91久久久资源速度| 日韩精品一区在线观看| 1区2区3区国产精品| 日本午夜精品视频在线观看| 成人福利在线看| 日韩亚洲电影在线| 国产精品高潮呻吟| 美女视频一区在线观看| 91免费观看在线| 欧美xxxxxxxxx| 亚洲欧美色图小说| 国产乱人伦偷精品视频不卡 | 国产精品久线观看视频| 日韩电影免费在线看| 国产不卡免费视频| 91精品麻豆日日躁夜夜躁| 国产精品午夜久久| 日本美女视频一区二区| aaa欧美大片| 国产亚洲va综合人人澡精品| 丝袜美腿亚洲一区| 99久久久久久| 久久人人爽爽爽人久久久| 日韩中文字幕av电影| 91女厕偷拍女厕偷拍高清| 久久精品免费在线观看| 日韩电影在线观看一区| 欧美视频在线一区二区三区| 国产精品丝袜久久久久久app| 狠狠色丁香久久婷婷综合_中| 欧美午夜一区二区| 亚洲免费在线视频| 成人性色生活片| 2023国产精华国产精品| 美洲天堂一区二卡三卡四卡视频| 91视频在线观看| 中文字幕字幕中文在线中不卡视频| 国产原创一区二区三区| 日韩欧美精品三级| 日韩国产欧美一区二区三区| 欧美日韩精品一区视频| 五月天激情小说综合| 欧美在线视频日韩| 一二三四区精品视频| 欧美在线一区二区三区| 午夜天堂影视香蕉久久|