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

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        自己手工制作MUD客戶端服務程序

        自己手工制作MUD客戶端服務程序

        更新時間:2022-05-14 文章作者:未知 信息來源:網絡 閱讀次數:

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

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 国产成人AV免费观看| 91免费国产精品| 亚洲免费一区二区| 免费视频成人片在线观看| 日本牲交大片免费观看| 亚洲国产综合91精品麻豆| 亚洲国产精品成人午夜在线观看| 国产一级婬片A视频免费观看| 永久免费av无码网站韩国毛片| 亚洲日韩在线中文字幕第一页| 亚洲最大的视频网站| 怡红院免费全部视频在线视频| 妞干网免费视频观看| 亚洲国产精品久久久久网站| 毛片免费在线观看| 国产精品亚洲高清一区二区| 黄色视屏在线免费播放| 日本高清免费网站| 黄色毛片免费网站| 麻豆国产入口在线观看免费| 亚洲乱码一二三四区麻豆| 国产一区二区三区免费| 亚洲精品乱码久久久久久下载| 热久久这里是精品6免费观看| 国产成A人亚洲精V品无码性色| 日本高清不卡中文字幕免费| 在线jyzzjyzz免费视频| 疯狂做受xxxx高潮视频免费| 青草草在线视频永久免费| 又大又硬又粗又黄的视频免费看| 四虎影视精品永久免费| 亚洲国产精品成人AV在线| 久久久久久A亚洲欧洲AV冫| 一级午夜免费视频| 久久久无码精品亚洲日韩软件| 日韩免费的视频在线观看香蕉 | 我想看一级毛片免费的| 亚洲精品一卡2卡3卡三卡四卡| 四虎成人免费大片在线| 波霸在线精品视频免费观看| 亚洲国产成人va在线观看网址|