• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

        自己手工制作MUD客戶端服務(wù)程序

        自己手工制作MUD客戶端服務(wù)程序

        更新時(shí)間:2022-05-14 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

             隨著Internet的發(fā)展,越來(lái)越多的人加入到這個(gè)充滿無(wú)限生機(jī)的網(wǎng)絡(luò)世界中來(lái),作為一個(gè)網(wǎng)絡(luò)信息時(shí)代的專業(yè)電腦玩家,掌握網(wǎng)絡(luò)編程就顯得格外重要。本文通過(guò)一個(gè)MUD客戶端服務(wù)程序向您介紹了Internet網(wǎng)絡(luò)編程及MUD的一些知識(shí)。
        MUD,全稱Multiple User Dungeon,意為多用戶"地牢"游戲,現(xiàn)在網(wǎng)蟲們一般都把它叫做泥巴。如果你已經(jīng)上了網(wǎng)的話,當(dāng)你得知了一個(gè)MUD的地址和端口后你便可以加入此MUD了,在Windows95操作系統(tǒng)下,你可以用 "telnet地址 端口" 這條命令來(lái)登錄到MUD,但是Windows95的telnet程序由于不是專門用來(lái)玩MUD的,因此使用起來(lái)非常不方便,這主要是由于telnet不能處理文字的回繞,并且因?yàn)檩斎胼敵鲈谕淮翱,造成輸入輸出信息混雜在一起,使用戶辨認(rèn)困難。歷史輸入的不能重用,大大增加了用戶的輸入量。而且在MUD中服務(wù)器傳給你的信息中有很多控制信息用來(lái)使輸出文字改變顏色或突出顯示,這些信息被telnet簡(jiǎn)單的忽略掉了,鑒于這些不便,有一些程序員開發(fā)了MUD客戶端服務(wù)程序,這些程序一般都具有這些功能:
        * 連接到MUD --- 這是基本功能
        * 命令行歷史 --- 可重用以前的命令
        * 宏命令        --- 以宏代替較長(zhǎng)的命令
        * 輸入輸出窗口分開--- 避免輸入輸出信息混亂
        * 輸出信息回卷 --- 允許查看以前的輸出信息
        * 強(qiáng)調(diào)顯示 --- 能處理MUD系統(tǒng)傳來(lái)的控制序列
        有一些還有更高級(jí)的功能:
        * 自動(dòng)登錄        --- 根據(jù)用戶歷史記錄,自動(dòng)登錄到MUD
        * 多重連接 --- 允許同時(shí)連接到多個(gè)MUD上,或同時(shí)在一個(gè)MUD上登錄多人
        * 觸發(fā)裝置        --- 在某種情況下,自動(dòng)發(fā)出某命令
        * 自動(dòng)導(dǎo)航系統(tǒng)    --- 通過(guò)記錄east,west,south,north,up,down等命令,生成邏輯地圖,并可自動(dòng)導(dǎo)航用戶去某地
        * 提供編程接口    --- 用戶可編程,制作機(jī)器人,代替用戶辛辛苦苦的在MUD上練功
        Dos/Windows下的MUD客戶端服務(wù)程序主要有MUDCaller,BSXMUD等,其中以Zugg Software公司的ZMud較普及,也好用,下面我們用VB來(lái)做一個(gè)我們自己的MUD Client。
        首先介紹一下Winsock控件。在VB中,利用 WinSock 控件可以與遠(yuǎn)程計(jì)算機(jī)建立連接,并通過(guò)用戶TCP或UDP協(xié)議進(jìn)行數(shù)據(jù)交換。這兩種協(xié)議都可以用來(lái)創(chuàng)建客戶與服務(wù)器應(yīng)用程序。在創(chuàng)建MUD客戶端時(shí),我們使用TCP協(xié)議。在給該控件的RemoteHost及RemotePort賦值后,調(diào)用其connect方法就可以連接到MUD主機(jī)上。然后用GetData和SendData就可以與MUD主機(jī)對(duì)話了。而從MUD主機(jī)傳來(lái)的數(shù)據(jù)是夾有escape控制字符串的ASCII文本,說(shuō)到escape控制字符串,需要解釋一下, 所謂escape控制字符串是ANSI中用于鍵盤控制和顯示控制的以escape(ASCII 27/0x1B)和'['開頭的一串字符,在MUD中一般只涉及到設(shè)置輸出屬性,在escape和'['后跟a1;a2;...'m',該串以字符m結(jié)束,a1,a2等是數(shù)字,意義如下:
        0:恢復(fù)黑白顯示;
        1:高亮度顯示
        2:正常顯示
        30...37:黑,紅,綠,黃,藍(lán),洋紅,青,白
        如:chr(27)[1;31m表示從這里起用亮紅顯示,而chr(27)[2;37;0m表示恢復(fù)黑白顯示方式并用普通白色顯示。
        現(xiàn)在我們打開VB,新建一個(gè)標(biāo)準(zhǔn)工程,選工程|部件菜單,加入Microsoft Winsock Control 5.0及Microsoft Rich TextBox Control 5.0這兩個(gè)控件到工具欄中。
        將Form1改名為fMud,從工具欄拖一個(gè)CommandButton到fMud上,改名叫cmdSend,設(shè)置其default屬性為True。拖一個(gè)Rich TextBox到fMud上,改名叫MudOut,設(shè)置其Text屬性為空,ScrollBars為rtfBoth。再拖一個(gè)ComboBox到fMud上,改名叫MudIn,設(shè)置Text屬性為空。最后拖一個(gè)Winsock控件到fMud上,改名叫MudSock。.下一步是用菜單編輯器給fMud做一個(gè)菜單,其中有一個(gè)子菜單起名叫Connect,主窗口就做好了。
        下面向工程里添加一個(gè)新Form,改名叫fConnect,用于接收用戶要聯(lián)往的MUD主機(jī)地址及端口。首先在上面放兩個(gè)Label,分別把Caption設(shè)為"MUD地址:" 和 "端口:",再放兩個(gè)TextBox分別起名叫tAddress和tPort,擺好位置,使兩個(gè)Label分別指向兩個(gè)TextBox,最后放一個(gè)CommandButton,使其Name=CmdConnect,Caption="&Connect",Default=True,Enabled=False。好了,下面開始編程:
        fMud窗口:
        fMud的定義部分:
            Dim bConnected as Boolean
        Connect菜單:
        If Not bConnected Then
        fConnect.Show 1
        MudSock.Connect                     '連接到MUD主機(jī)上
        bConnected = True
        MudIn.SetFocus
            End If
        fMud的Load事件:
            bConnected = False
        fMud的Resize事件:
        MudOut.Top = 0                         '調(diào)整控件的位置就大小
        MudOut.Left = 0
        MudOut.Width = fMud.Width - 120
        MudOut.Height = fMud.Height - 700
        MudIn.Top = MudOut.Height+20
        MudIn.Left = 0
        MudOut.Width = fMud.Width - 120
        MudSock的DataArrival事件:
        Dim strData As String
        If Connected Then
        MudSock.GetData strData             '從MudSock的緩沖區(qū)中取數(shù)據(jù)
        MudOut.Text = MudOut.Text+strData
        MudOut.SelStart = len (MudOut.Text)
        If len(MudOut.Text) > 2000 Then        '緩沖2000字的文本
            MudOut.Text = Right (MudOut.Text,2000)
        End If
        Ene If
        cmdSend的Click事件:
        Dim s As String
        Dim i As Integer
        s = MudIn.Text + Chr(13) & Chr(10)        '給命令行加上回車換行
        fMud.MudSock.SendData s
        For i = 1 To MudIn.ListCount
        If MudIn.List(i) = MudIn.Text Then
                MudIn.RemoveItem (i)             '刪去重復(fù)的歷史命令
        End If
        Next i
        If MudIn.ListCount > 30 Then                 '緩沖30條歷史命令
        MudIn.RemoveItem 0
        End If
        MudIn.AddItem MudIn.Text                 '將本條命令加到歷史記錄最后
        MudIn.SelStart = 0
        MudIn.SelLength = Len(MudIn.Text)        '本條命令文本被選擇,以便下
        '輸入一條命令時(shí),不用擦除便可直接鍵入
            fConnect窗口:
        tAddress和fPort的Change事件:
                If (tAddress.Text <> "") And (tPort.Text <> "") Then
        CmdConnect.Enabled = True
        Else
                        CmdConnect.Enabled = False
                    End If
        Connect按鈕的Click事件:
            fMud.MudSock.RemoteHost = tAddress.Text
            fMud.MudSock.RemotePort = CInt(tPort.Text)
        fConnect.Hide
        好了,一個(gè)MUD客戶端服務(wù)程序就做好了,你現(xiàn)在已經(jīng)可以用它連接到MUD了。不過(guò)限于篇幅,現(xiàn)在本程序的功能只有輸出信息回卷,分開輸入輸出和重用歷史命令,它已比telnet玩MUD好用了。另外,要支持強(qiáng)調(diào)顯示功能,只需從MUD主機(jī)傳來(lái)的信息串中識(shí)別出escape'['控制串,并用RichTextBox的SelColor方法就可以設(shè)置文本顏色,這也是我們一開始為什么用RichTextBox而不用一般的TextBox的原因。最后指出,WinSock的Connect連接是否正確應(yīng)在MudSock的onError事件中編程,本程序略去。

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 一级特级女人18毛片免费视频| 亚洲a∨无码男人的天堂| 美女视频黄a视频全免费网站色 | 亚洲中文字幕久久精品无码VA| 久久ww精品w免费人成| 亚洲AV日韩AV鸥美在线观看| a毛片久久免费观看| 亚洲精品乱码久久久久66| 国产va在线观看免费| 91在线亚洲精品专区| 99re6在线精品视频免费播放 | 中文亚洲AV片在线观看不卡| 久久久久久国产a免费观看不卡 | 亚洲一卡2卡3卡4卡乱码 在线| 免费大黄网站在线看| 国产精品亚洲专区一区| 亚洲天堂在线视频| 免费人成在线观看视频高潮| 久久精品国产亚洲AV麻豆网站| 91免费播放人人爽人人快乐| 天堂亚洲国产中文在线| 国产中文字幕免费观看| 国产区在线免费观看| 亚洲黄色片免费看| 日韩免费a级在线观看| 一级一片免费视频播放| 亚洲日本精品一区二区| 一二三四免费观看在线电影| 色欲色欲天天天www亚洲伊| 亚洲男人av香蕉爽爽爽爽| 无码日韩精品一区二区免费暖暖| 亚洲成人免费电影| 日韩高清免费在线观看| a级毛片免费观看视频| 亚洲一区二区影视| 亚洲国产成人精品91久久久| 无码一区二区三区免费| 亚洲国产成人手机在线观看| 中文字幕亚洲天堂| 男人的好看免费观看在线视频| 一级片在线免费看|