版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE摘要目前,隨著計算機網(wǎng)絡的發(fā)展,以計算機技術(shù)和網(wǎng)絡技術(shù)為核心的現(xiàn)代網(wǎng)絡技術(shù)已經(jīng)在現(xiàn)實生活和生產(chǎn)中得到了廣泛的使用,休閑類網(wǎng)絡游戲集趣味性,娛樂性,互動性和益智性于一體,已經(jīng)成為多數(shù)人群的休閑方式,也為多數(shù)人所喜好。本設計收集了關(guān)于JAVA基礎的書籍,著重收錄了關(guān)于SOCKET編程的內(nèi)容,找到了五子棋概述和規(guī)則的資料,查閱了網(wǎng)絡通信技術(shù)的相關(guān)論文,同時也參考了很多關(guān)于五子棋實現(xiàn)的程序資料以及關(guān)于JAVA開發(fā)工具的介紹的文檔。在期間,作者學習了多線程技術(shù)、數(shù)據(jù)傳輸技術(shù)、SOCKET編程技術(shù),研究了網(wǎng)絡通信原理、JAVA編寫原理等一系列的原理。開發(fā)了五子棋網(wǎng)絡對戰(zhàn)的代碼,實現(xiàn)了網(wǎng)絡聊天、聯(lián)機對戰(zhàn)、網(wǎng)絡通信、界面組織如:棋盤、建立服務器、連接到服務器等功能。通過對以上技術(shù)的學習和研究,利用SOCKET編程,能服務器與客戶端之間的連接,利用多線程技術(shù)完成了服務器端與客戶端之間的數(shù)據(jù)傳輸、網(wǎng)絡通信,使得兩個客戶端能夠同步的進行處理。關(guān)鍵詞:JAVA多線程SOCKET五子棋AbstractAtpresent,withthedevelopmentofcomputernetworks,computerandnetworktechnologyasthecoreofmodernnetworktechnologyhasbeenwidelyusedinreallifeandproduction,thecasualgamesetinteresting,entertaining,interactiveandpuzzleinone,hasbecomethemajoritypopulationofleisure,butalsoforthemajorityofpeoplehavepreferences.
ThedesignofthecollectionofbooksontheJAVA-based,focusingonthecollectionofcontentSOCKETprogramming,foundthedataoverviewandbackgammonrules,accesstothenetworkcommunicationtechnologyrelatedpapersalsorefertoalotofinformationonbackgammonprogramimplementationaswellasondocumentdescribestheJAVAdevelopmenttools.Inthemeantime,Ilearnedthemulti-threadingtechnology,datatransmissiontechnology,SOCKETprogrammingtechniquetostudytheprincipleofnetworkcommunication,JAVAwriteaseriesofprinciplessuchastheprinciple.Developedbackgammononlineplaycodeimplementsonlinechat,onlinegaming,networkcommunications,interfaceorganizationssuchas:theboard,establishaserver,connecttotheserverandotherfunctions.Throughtheabovetechnicalstudyandresearch,theuseSOCKETprogramming,connectionsbetweentheserverandclientcanusemulti-threadingtechnologytocompletethedatatransferbetweentheclientandtheserver,andnetworkcommunication,sothatboththeclientcansynchronizeforprocessing.Keywords:JAVAmultithreadingSOCKETGobang目錄1緒論 11.1背景及意義 11.2選題的目的 11.3五子棋介紹 21.4主要完成內(nèi)容 22開發(fā)環(huán)境及工具介紹 32.1開發(fā)環(huán)境及運行環(huán)境 32.1.1開發(fā)環(huán)境 32.1.2運行環(huán)境 32.1.2開發(fā)工具 32.2Java簡介 32.2.1Java的起源和發(fā)展 32.2.2Java特點 42.3JavaSocket網(wǎng)絡編程簡介 52.3.1JavaSocket網(wǎng)絡編程基礎 52.3.2Socket編程的實現(xiàn) 62.4Java圖形編程 72.5多線程機制 73需求分析和總體設計 93.1需求分析作用 93.1.1界面需求分析 93.1.2軟件需求分析 93.2總體設計 93.2.1系統(tǒng)設計思想 103.2.2系統(tǒng)總體設計 103.3功能模塊及流程 113.3.1系統(tǒng)主要模塊 113.3.2 服務器端作用 123.3.3 客戶端作用 134詳細設計及實現(xiàn) 154.1系統(tǒng)主流程 154.2如何判斷輸贏 164.3開發(fā)環(huán)境的搭建 194.4功能模塊的界面實現(xiàn) 205軟件的測試 235.1軟件測試的方法 236總結(jié)語 25參考文獻 261緒論1.1背景及意義1.背景隨著經(jīng)濟社會的迅速發(fā)展,人們生活水平有了很大的提高,人們的生活觀念也發(fā)生了巨大的改變。高品質(zhì)的生活、現(xiàn)代化得生活方式成為人們共同追求的目標;休閑、娛樂性活動作為時尚生活中的一部分,而被大多數(shù)的人所追捧。棋類項目作為一種智力型項目,可以益智健心、修身養(yǎng)性,也可以滿足人們對于娛樂和休閑的新需求。一些項目比如五子棋等等,由于項目本身互動的特點,一直被人們所喜愛,因此得以生存和發(fā)展,成為許多人喜愛的休閑娛樂性棋類項目。而今,以網(wǎng)絡技術(shù)為核心和計算機技術(shù)的現(xiàn)代網(wǎng)絡技術(shù)已經(jīng)在現(xiàn)實生活得到了十分的廣泛的使用。休閑類網(wǎng)絡游戲集合了益智性、趣味性、互動性、娛樂性于一體,已經(jīng)成為多數(shù)人群的選擇的休閑方式。借此,本論文在分析了當前計算機網(wǎng)絡的蓬勃發(fā)展和人們對于休閑娛樂性生活方式的追求,以java語言為工具,在MyEclipse的環(huán)境那下,以精美的界面,以常規(guī)安全的socket建立連接,設計更為益智的網(wǎng)絡版五子棋游戲,增強了趣味性和益智性。2.意義現(xiàn)在人們壓力日益增大,人們需要勞逸結(jié)合也獲得更高的工作效率,工作之余的娛樂對每一個人來說都是必不可少的放松方式。五子棋游戲簡單易學同時具有很大奧妙性,也非常富有趣味性與消遣性。在經(jīng)過不斷發(fā)展后,五子棋已經(jīng)成為棋盤娛樂的重要的組成部分,它能夠開發(fā)智力、增強思維能力,而且富含哲理,有助于修身養(yǎng)性。是人們休閑娛樂的不二的選擇。而網(wǎng)絡互動娛樂是近幾年迅速發(fā)展起來的新的娛樂形式,成為IT產(chǎn)業(yè)中增長最快的娛樂形式之一。 網(wǎng)絡五子棋游戲很多是使用Java語言開發(fā)的一款游戲。它使用SOCKET建立連接,多線程處理數(shù)據(jù),這些特點使這款游戲無論是客戶端還是服務器的實現(xiàn)都相對容易。1.2選題的目的隨著計算機網(wǎng)絡技術(shù)的不斷發(fā)展,網(wǎng)絡游戲已經(jīng)成為最具潛力的熱點領(lǐng)域。各種各樣的游戲使人眼花繚亂,而特別是其中一些休閑益智類的棋牌游戲,集娛樂性、趣味性、益智性和互動性于一體,擁有很大的用戶。棋類游戲能鍛煉人的思維,起到修身養(yǎng)性的作用。五子棋游戲可以分為兩類:一類是單機版五子棋游戲,另一類是網(wǎng)絡五子棋游戲。隨著計算機網(wǎng)絡和JAVA技術(shù)的不斷發(fā)展,使用Java開發(fā)網(wǎng)絡五子棋游戲?qū)⑹且粋€實用性很強的畢業(yè)設計項目。網(wǎng)絡五子棋游戲的總體功能是要設計出具有精美界面的,具備人工智能的,支持網(wǎng)絡對弈的五子棋游戲。本系統(tǒng)最終的目的是建立一個有具體規(guī)則的網(wǎng)絡五子棋平臺,達到網(wǎng)絡對弈的目的。1.3五子棋介紹五子棋起源于中國古代的傳統(tǒng)黑白棋種之一,是一種兩人對弈的純策略型棋類游戲?,F(xiàn)代五子棋日本稱之為“連珠”,英譯為Renju,英文為“FIR”(FiveinaRow的縮寫)或“Gobang”,中文有“串珠”、“五子連”、“連五子”等很多種名字。它發(fā)展于日本,流行于歐美。容易上手,老少皆宜,而且引人入勝;不僅能提高智力,而且富含哲理。 傳統(tǒng)五子棋的棋具與圍棋類似,棋子分為黑白兩色,棋盤有大有小,棋子放置于棋盤線交叉點上。兩人對局,各選一色,輪流落子。五子棋游戲規(guī)則:游戲雙方輪流在棋盤下棋子,一方的棋子在橫、豎、兩個對角線上首先到達五子者為勝方。因為五子棋在落子后不能移動或拿掉,所以也可以用紙和筆來進行游戲。 隨著五子棋的發(fā)展,逐步發(fā)現(xiàn)先行優(yōu)勢非常大,最后總結(jié)出“先行必勝”的結(jié)論。五子棋成為競技運動,核心問題是怎樣解決傳統(tǒng)五子棋下法中“先行必勝”的問題。而競技五子棋便是參賽雙方打破“先行必勝”的問題,以棋盤和棋子為介體,進行智力性對抗的競技體育項目。1.4主要完成內(nèi)容本課題為了分析了五子棋規(guī)則及技巧,以及研究客戶端界面的布局,決定用Java開發(fā)五子棋游戲。主要完成客戶端界面設計和網(wǎng)絡對戰(zhàn)2個功能模塊??蛻舳素撠熓占脩舻男畔⒑徒缑婢S護,以及錯誤處理;服務器的建立以及對戰(zhàn)用戶的基本信息和兩個對戰(zhàn)用戶的棋盤信息,判斷輸贏。2開發(fā)環(huán)境及工具介紹2.1開發(fā)環(huán)境及運行環(huán)境2.1.1開發(fā)環(huán)境★MicrosoftWindowsXP或以上版本★JDK1.60★MyEclipse運行環(huán)境★MicrosoftWindowsXP或以上版本操作系統(tǒng)★1024*768或以上的屏幕分辨率2.1.2開發(fā)工具Java的開發(fā)工具很多,比如JBuilder、MyEclipse、NetBeansIDE、JCreator等等,不同的工具可能對開發(fā)不同的程序有針對的優(yōu)勢。我選擇MyEclipse進行編寫,我們說一下MyEclipse的優(yōu)勢。★MyEclipse是一種具有可擴展的開放源代碼IDE。MyEclipse可以在同一IDE中集成了來自不同供應商的工具,并實現(xiàn)了工具之間的相互操作,從而顯著簡化了項目工作流程?!颩yEclipse框架的靈活性來自于它的擴展點。在XML中定義的已知接口,并充當插件的耦合點。擴展點的范圍包括從簡單字符串,到一個Java類的描述。★MyEclipse的最大特點是它能接受由Java開發(fā)者自己編寫的開放源代碼插件。2.2Java簡介 Java是一種簡單的、分布式的、面向?qū)ο蟮摹⒖梢浦?、解釋的、安全的的多線程語言。它以其平臺無關(guān)性、硬件結(jié)構(gòu)無關(guān)性、強安全性、面向?qū)ο?、語言簡潔的特點,在網(wǎng)絡編程語言中占據(jù)了無可比擬的優(yōu)勢,成為實現(xiàn)電子商務系統(tǒng)的首選語言[2]。2.2.1Java的起源和發(fā)展 Java是Sun公司在1995年推出的新興的編程語言,它是一種跨平臺的、應用于當前高速發(fā)展的網(wǎng)絡的編程語言。在編程語言中,可認為Basic語言促使了C語言的出現(xiàn),C語言促進了C++的出現(xiàn),而C++又促使了Java語言的出現(xiàn)。 自從Java正式推出后,以它特有的優(yōu)勢迅速發(fā)展,經(jīng)過幾年的發(fā)展,Java已經(jīng)在軟件開發(fā)等領(lǐng)域占有很大的市場。Java分為三種:J2SE、J2EE和J2ME。J2SE是Java平臺標準版[3],主要應用于桌面程序和Java小應用程序開發(fā);J2EE主要用于企業(yè)級開發(fā)和大型網(wǎng)站的開發(fā);J2ME主要用于手機等移動設備程序的開發(fā)。2.2.2Java特點★平臺無關(guān)性Java的平臺無關(guān)性能讓這種軟件在每個平臺上都能正常地運行,就是"只要寫一次程序,在任何地方、任何時間該程序永遠都能夠運行"。Java解釋器生成與體系無關(guān)的字節(jié)碼指令,這些指令對應于Java虛擬機里表示,Java解釋器得到字節(jié)碼后,對它進行轉(zhuǎn)換,只要安裝Java運行系統(tǒng),Java就可以在任何處理器上運行。 ★簡單性 Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務,開發(fā)者只要知道一些概念就能夠編寫一些應用程序?!锒嗑€程 設計Java的多線程,是為了滿足人們對創(chuàng)建交互式網(wǎng)上程序的需要。用Java編寫出來的應用程序可以同時執(zhí)行很多任務。多線程機制使應用程序可以并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作?!锝研?Java語言被病毒感染和破壞得最少。Java丟棄了難學和危險的指針功能,而大部分病毒程序常用的方法就是通過巧妙地運用地址變量如指針來獲取計算機的資源,從而使程序不安全?!锩嫦?qū)ο笳Z言 Java的設計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口模型。對象中封裝它的狀態(tài)變量和相應的方法,實現(xiàn)了模塊化和信息的隱藏;而類則是提供對象的原型,并且通過繼承的機制,子類可以使用父類所提供的方法,以實現(xiàn)代碼的復用。 ★自動內(nèi)存管理也可以說自動內(nèi)存管理是Java健壯性的體現(xiàn),內(nèi)存管理是很多種應用程序內(nèi)的很關(guān)鍵因素。在網(wǎng)絡上的其他地方讀取大量的數(shù)據(jù),之后把該數(shù)據(jù)寫入硬盤上的數(shù)據(jù)庫內(nèi),一般的設計就是把數(shù)據(jù)讀入內(nèi)存中的某些集合內(nèi),對這些數(shù)據(jù)執(zhí)行某些操作,之后把數(shù)據(jù)寫入數(shù)據(jù)庫。在數(shù)據(jù)寫入數(shù)據(jù)庫后,在下一批處理之前,臨時存儲數(shù)據(jù)的集合必須清空舊數(shù)據(jù),或被刪除后再建。這種操作可能執(zhí)行很多次,很多語言要手工清空或刪除集合數(shù)據(jù)結(jié)構(gòu)。Java的自動內(nèi)存管理[4]正好解決這一點,它使程序員不用再為內(nèi)存管理寫大量的代碼。2.3JavaSocket網(wǎng)絡編程簡介2.3.1JavaSocket網(wǎng)絡編程基礎網(wǎng)絡編程,簡單的理解就是兩臺計算機相互通信。其基本模型就是客戶機/服務器模型,也就是通信雙方中的一方必須提供一個固定的端口,而另一方則只需要知道這個端口,并去建立兩者之間的聯(lián)系,然后完成數(shù)據(jù)交換。這里提供固定位置的一方通常稱為服務器,而建立聯(lián)系的一方通常稱為客戶端[5]?;诳蛻魴C/服務器的Socket通信模型如圖2-1所示:接收服務結(jié)果向服務器發(fā)出服務請求向服務器發(fā)送連接請求將處理結(jié)果反饋給客戶端解釋并處理請求信息接收用戶請求信息阻塞,等待建立連接在Socket上監(jiān)聽客戶端請求在制定服務器端公認的地址和端口服務器端創(chuàng)建Socket對象創(chuàng)建Socket對象客戶端建立連接請求信息反饋信息接收服務結(jié)果向服務器發(fā)出服務請求向服務器發(fā)送連接請求將處理結(jié)果反饋給客戶端解釋并處理請求信息接收用戶請求信息阻塞,等待建立連接在Socket上監(jiān)聽客戶端請求在制定服務器端公認的地址和端口服務器端創(chuàng)建Socket對象創(chuàng)建Socket對象客戶端建立連接請求信息反饋信息圖2-1基于客戶機/服務器的Socket通信模型圖Socket工作過程如下:(1)建立連接:服務器端程序分配一個端口號,開始監(jiān)聽來自客戶端的請求。當客戶請求一個連接時,服務器使用accept()方法打開Socket連接,將該Socket連接到此端口上。(2)數(shù)據(jù)通信:服務器和客戶端使用Socket的InputStream(輸入流)和OutputStream(輸出流)進行通信。(3)關(guān)閉連接:通信結(jié)束,服務器和客戶端程序斷開連接,釋放所有占用的系統(tǒng)資源。 Java為這個模型的實現(xiàn)提供了簡化的Socket編程接口。在程序中只要導入java.io包就可以方便的使用java的Socket編程接口。Java中Socket連接機制如圖2-2所示:服務器服務器ServerSocket(port#)ServerSocket()Socker()OutputStreamInputStreamServer.close()客戶端Socket(host,port#)(Attempttoconnect)OutputSteramInputStreamSocket.close()圖2-2Socket的連接機制[6]2.3.2Socket編程的實現(xiàn)Socket類表示了系統(tǒng)的IP地址和端口號的結(jié)合,可以理解為客戶端或者服務器端的一個特殊對象。它包含兩個處理流的方法,一個是getInputStream(),另一個是getOutputStream(),分別用來獲得網(wǎng)絡的輸入流和輸出流。構(gòu)造Socket對象的代碼如下: Sockets=newSocket(IP,port); IP,port分別為服務器端的IP地址和服務器端的端口號。 ServerSocket類是一個專門建立Socket服務器的類,它可以用服務器需要使用的端口號作為參數(shù)來創(chuàng)建ServerSocket對象。示例代碼如下: ServerSocketss=newServerSocket(TCP_PORT); 當一個客戶端程序建立一個Socket連接,所連接的端口號為對應TCP_PORT時,服務器對象ss便響應這個連接,在用上述ss對象調(diào)用accept()創(chuàng)建一個代表服務器的Socket對象。創(chuàng)建后服務器便可以利用這個Socket對象與客戶端進行數(shù)據(jù)交換。示例代碼如下: SocketclientSocket=ss.accept();在本系統(tǒng)的實現(xiàn)過程中,在支持網(wǎng)絡對弈的服務器類的定義中需要使用ServerSocket類來響應多個客戶端的連接請求。能夠同時建立多個服務器,玩家可以選擇不同的服務器參與游戲。2.4Java圖形編程Java中的Graphics類是一個工具類,用來繪圖和顯示格式化文本,Graphics類是在java.awt包中聲明的。在Java程序中繪圖必須在一個窗口或者是一個容器中進行,繪圖窗體經(jīng)常被設計為一個組件容器。顯示格式化文本和繪圖是調(diào)用Graphics類的drawXX()方法完成的,例如drawString(String)等等。繪圖采用的坐標系[7]是原點在左上角,縱軸向下以像素為單位的坐標系。2.5多線程機制多線程機制是指單個程序可以運行多個不同的線程,執(zhí)行不同的任務。因為線程只能在單個進程的作用域內(nèi)活動,所以創(chuàng)建線程比創(chuàng)建進程要廉價得多,同一類線程共享代碼和數(shù)據(jù)空間,每個線程有獨立的運行桟和程序計數(shù)器(PC),線程切換的開銷小。因此多線程編程在現(xiàn)代軟件設計中在量采用。創(chuàng)建新線程必須編寫一個線程類,用Java編寫多線程代碼有兩種方式★直接繼承Java的線程類Thread;★實現(xiàn)Runnable接口無論采用哪種方式均需要在程序中編寫Run()方法,線程在運行時要完成的任務在該方法實現(xiàn)。Thread類封裝了線程的行為。繼承Thread類須重寫run()方法實現(xiàn)各自的任務。程序中不要直接調(diào)用線程的run()方法,而是調(diào)用start()方法啟動線程,讓其進入可調(diào)度的狀態(tài),線程獲得調(diào)度時將自動執(zhí)行run()方法。由于Java的單重繼承的限制,有些類必須繼承其它個類時又要實現(xiàn)線程的特性。這時可通過實現(xiàn)Runnable接口的方式來滿足兩方面的要求。Runnable接口只有一個方法run(),它就是線程運行時要執(zhí)行的方法,只要將具體代碼寫入其中即可。線程在調(diào)度時將自動調(diào)用Runnable接口對象的run方法。多線程是Java的一個特點,多線程可以使程序反應更快、交互性更強,并能提高執(zhí)行效率。在網(wǎng)絡五子中如果服務器是單線程的,則只能與一個客戶端相連,就失去了網(wǎng)絡對戰(zhàn)的意義了。所以應該采用多線程方式。當服務器與一個客戶端建立連接,就開啟一個線程與之相連,同時監(jiān)聽其它用戶的連接。請求的通信協(xié)議規(guī)定:publicclassRequest{ publicstaticfinalintLOGIN=1;//輸入用戶名的請求 publicstaticfinalintCR_ROOM=2;//創(chuàng)建房間的請求 publicstaticfinalintGET_ROOM=3;//獲取房間列表的請求 publicstaticfinalintDEL_ROOM=4;//刪除房間 publicstaticfinalintFLUSH_ROOM=5;//刷新房間的請求publicstaticfinalintIN_ROOM=6;//進入房間publicstaticfinalintIN_RESULT=7;//進入房間結(jié)果的請求publicstaticfinalintCHESS=8;//落子的請求publicstaticfinalintSEND_MSG=9;//發(fā)送聊天請求publicstaticfinalintNEWS_TART=10;//新開游戲請求publicstaticfinalintWIN=11;//代表贏的請求publicstaticfinalintGIVEUP=12;//放棄請求publicstaticfinalintSUM=13;//求和publicstaticfinalintSUM_RESULT=14;//求和結(jié)果處理publicstaticfinalintEXIT=15;//退出publicstaticfinalintEXIT_ROOM=16;//退出游戲大廳的請求publicstaticfinalintROVS=17;//轉(zhuǎn)觀戰(zhàn)請求publicstaticfinalintIN_LOOK=18;//進入觀戰(zhàn)publicstaticfinalintLOO_GET_DATA=19;//觀看請求數(shù)據(jù)publicstaticfinalintBACK_CHESS=20;//悔棋publicstaticfinalintBACK_CHESS_RESULT=21;//悔棋結(jié)果處理}
3需求分析和總體設計3.1需求分析作用軟件需求分析是軟件開發(fā)周期的第一個階段,也是關(guān)系到軟件開發(fā)成敗的最關(guān)鍵一步。只有通過了軟件需求分析,才能把軟件的功能和性能由總體的概念性和理論性描述轉(zhuǎn)化為具體的規(guī)格說明,從而建立軟件開發(fā)的基礎。實踐證明,需求分析工作進行得準確程度,在很大程度上決定了軟件開發(fā)的成敗。軟件需求分析的任務就是讓用戶與開發(fā)者明確開發(fā)的是一個什么軟件。具體的說,就是通過對問題及其環(huán)境的理解、分析與綜合把握,建立邏輯模型,完成軟件的邏輯方案設計。3.1.1界面需求分析軟件的界面簡潔明了而不失精美,操作簡單容易,功能按鈕名稱簡單易懂,棋盤的大小,棋子的樣式。3.1.2軟件需求分析現(xiàn)有的網(wǎng)絡編程模式主要分成兩類:一種是基于C/S(Client/Server)模式,另一種是B/S(Browser/Server)模式。網(wǎng)絡五子棋系統(tǒng)應用于局域網(wǎng),對交互性要求很高,本系統(tǒng)選用了C/S模式進行實現(xiàn),網(wǎng)絡內(nèi)部使用TCP/IP方式利用Socket提供的服務,使用JavaGraphics類進行用戶圖形界面的搭建。系統(tǒng)分成兩個部分,分別為服務端程序以及客戶端程序[8]。結(jié)合實際情況,將服務器端的程序和客戶端的程序放在一起,便可以更為方便的建立游戲和參與游戲,有效解決了在局域網(wǎng)中服務器未開啟,則無法進行游戲的缺陷。五子棋網(wǎng)絡游戲主要分為兩個部分,游戲服務端和游戲客戶端。游戲服務端主要存儲所有連線客戶的相關(guān)信息及各種狀態(tài),并負責游戲客戶之間數(shù)據(jù)的傳遞;游戲客戶端提供給客戶聯(lián)機對戰(zhàn)按鈕,使其能與其他玩家進行游戲。由于將服務器端和客戶端程序放在一起,所以可以減少界面繪制的冗余代碼,使得客戶端和服務器端使用相同的界面。3.2總體設計總體設計是軟件開發(fā)過程中的另一個重要階段,在這一階段中將根據(jù)需求分析中提出的邏輯模型,合理地完成物理模型的設計。這個階段的主要目標是將反映了用戶信息需求的邏輯方案轉(zhuǎn)換成物理方案,并為下一階段提供必須的技術(shù)資料??傮w設計應遵循以下原則:★整體性:軟件是作為統(tǒng)一整體而存在的。因此,在總體設計中要從整個軟件的角度去考慮。★靈活性:為保持軟件長久的生命力,要求該軟件具有很強的環(huán)境適應性。為此,該軟件必須具有較好的開放性與結(jié)構(gòu)的可變性?!锟煽啃裕嚎煽啃允侵杠浖钟饨绺蓴_的能力及受外界干擾時的恢復能力?!锝?jīng)濟性:經(jīng)濟性是指在滿足游戲軟件需求的前提下,盡可能地減少對游戲的開銷。3.2.1系統(tǒng)設計思想通過服務器的連接,不同的玩家可以連接到各自想?yún)⒓颖荣惖姆掌鞯刂?,并開始各自的游戲。通過安全的SOCKET連接交換數(shù)據(jù)。通過多線程,使得每個對戰(zhàn)的雙方不會受到第三方數(shù)據(jù)的干擾。本系統(tǒng)的功能能夠?qū)崿F(xiàn)一個在網(wǎng)絡上供客戶進行對戰(zhàn)的五子棋網(wǎng)絡游戲,因為是C/S模式的網(wǎng)絡游戲,客戶只要連接到服務器上,就能選擇任何其它用戶已創(chuàng)建好的游戲進行對戰(zhàn)游戲。在C/S模式游戲中,Server一般提供所有用戶的全部信息,并能提供客戶之間的信息轉(zhuǎn)發(fā)??蛻糁g的通訊必須通過Server進行,因為多個客戶能夠連接到同一臺Server上,所以Server必須用Thread負責每個用戶的通訊和消息處理。客戶連接成功,Server利用特定的客戶Thread連接不斷從客戶讀取數(shù)據(jù),實現(xiàn)客戶和服務器或者客戶與客戶之間的信息的交互。客戶端同樣采用的是線程控制的思想,在每一個客戶端連接上服務器后,就為此客戶端啟動一個網(wǎng)絡收發(fā)數(shù)據(jù)線程。3.2.2系統(tǒng)總體設計系統(tǒng)使用Socket技術(shù)以及java多線程機制進行客戶與服務端之間信息的交互,但一個真正實用程序必須針對具體應用定制一套協(xié)議用于用戶程序之間進行交互,而該協(xié)議的定制往往是編寫程序的關(guān)鍵也是核心內(nèi)容,該協(xié)議的完善決定程序是否能夠正常運行。所謂協(xié)議[9]就是程序之間交互的信息的格式規(guī)定,服務端和客戶端都遵循該協(xié)議才能夠進行對話,通俗講是人類之間的語言。3.3功能模塊及流程3.3.1系統(tǒng)主要模塊游戲各模塊功能如表3-1:表3-1各模塊功能模塊名稱功能聯(lián)機對戰(zhàn)用于提示玩家將要進行和他人的對戰(zhàn),點擊后跳轉(zhuǎn)到輸入玩家姓名的頁面,在此同時其內(nèi)部執(zhí)行客戶端的連接。輸入玩家姓名輸入玩家姓名,并檢測該名稱是否已經(jīng)存在,循環(huán)執(zhí)行。游戲大廳創(chuàng)建房間用于創(chuàng)建自己的房間并等待他人的加入。點擊并確定創(chuàng)建,會出現(xiàn)自己所創(chuàng)建房間號碼,同時創(chuàng)建房間按鈕會變成刪除房間按鈕。進入房間用于用戶選擇要進入的房間,點擊之后,等待對方是否同意其加入。轉(zhuǎn)觀戰(zhàn)用于查看其它玩家對戰(zhàn)的請求,點擊會跳轉(zhuǎn)到對戰(zhàn)大廳,選擇想要觀看的對戰(zhàn)房間名稱,點擊進入觀戰(zhàn)。五子棋對戰(zhàn)界面新開用于提醒對方玩家是否新開一局?;谄逵糜谠儐柺欠褡约嚎梢曰谄?,即撤銷之前的一步棋子。放棄放棄正在進行的對戰(zhàn)。求和用于詢問對方玩家是否同意求和。退出強制性退出正在進行的對戰(zhàn)聊天框在右邊輸入和對方玩家想要說的話,按Enter鍵發(fā)送,對方就可以看到,并且可以給與回復。同時根據(jù)上面的系統(tǒng)的設計要求,可以將此網(wǎng)絡五子棋游戲分為以下五個模塊:初始化模塊:建立棋盤數(shù)組并清零;初始化界面并在屏幕上畫出棋盤。主循環(huán)控制模塊:負責控制下棋順序,當輪到某方下子時,負責將程序流程轉(zhuǎn)到相應的模塊中。玩家落子模塊:即用戶在指定落子區(qū)域單擊后,程序就會得到該棋子的坐標,并且將棋盤數(shù)組中坐標處記錄棋子的顏色,1代表白色,2代表黑色,以說明是哪一方下的棋子。勝負判斷模塊:根據(jù)預先設定的五子棋規(guī)則,判斷游戲輸贏。網(wǎng)絡模塊[10]:網(wǎng)絡功能的實現(xiàn),使兩臺不同計算機的用戶通過網(wǎng)絡連接,實現(xiàn)網(wǎng)絡對弈的功能。網(wǎng)絡編程的模式和選取網(wǎng)絡編程模式主要分成兩類:一種是基于C/S(客戶機/服務器)模式,另一種是B/S(瀏覽器/服務器)式;C/S程序具有好的交互性,功能強大,但是客戶端必須安裝客戶端軟件,限制了其應用;B/S模式下要求客戶端具有瀏覽器,但瀏覽器在安全方面有一些限制,交互性與功能有一些限制網(wǎng)絡五子棋系統(tǒng)應用,所以一般的網(wǎng)絡五子棋游戲都選用了C/S模式進行實現(xiàn),使用TCP/IP方式利用Socket通過傳輸層提供服務。在Socket工作中,用ClientSocket類建立客戶端連接,用ServerSocket類建立服務器端連接,這兩個組件分別用來操縱客戶端和服務器端的Socket對象進行連接和傳輸數(shù)據(jù)。在通信過程中,服務器端應用程序先啟動,然后等待客戶端的連接請求。在另外一臺計算機上啟動客戶端應用程序,同時輸入服務器端Socket地址和端口號進行選擇服務器,找到服務器后就向服務器端發(fā)請求連接服務器端,允許連接后即向客戶端Socket收到Accept信號??蛻舳撕头掌鞫司驼浇⑵鹆撕?就可以分別調(diào)用TserveRsocket和TClientSocket的Socket屬性和客戶端進行數(shù)據(jù)傳輸??蛻舳撕头掌鞫薙ocket組件必須設置相同的端口號。服務器端作用服務器端[11]主要通過建立流連接來連接客戶端,與客戶端進行相互通信、轉(zhuǎn)發(fā)信息。接收客戶端的信息,接收信息后按照此客戶端的要求將信息發(fā)送到相應的客戶端,服務器端起到了中轉(zhuǎn)的作用。服務器類用于接收客戶端的連接,并為每個客戶端在服務器端啟動唯一的守護線程,線程主要功能是接收客戶端發(fā)送過來的消息并做出相應的處理。客戶端發(fā)送到服務器端的主要消息有兩部分:一部分是客戶端發(fā)送給服務器端需要服務器端進行處理的,如客戶端發(fā)送過的連接信息、客戶端改名信息、客戶端斷開連接信息等;另一部分是客戶端發(fā)送給服務器端需要服務端轉(zhuǎn)發(fā)給其他客戶端的消息,如客戶端給游戲另一方發(fā)送的棋盤狀態(tài)數(shù)據(jù)、聊天信息等。玩家進入游戲界面時,如果玩家不想進入別人已經(jīng)建立好的游戲中,那也可以自己從界面中建立一個房間,等待其他玩家的進入。直接點擊創(chuàng)建房間,這樣一個自己的游戲就建立了,如果有玩家加入游戲,系統(tǒng)會提示某某玩家請求進入房間,這時你可以選擇是或者否。游戲各模塊功能跟客服端的模塊相同。服務器類使用狀況如圖3-1:接受玩家接受玩家處理消息顯示狀態(tài)轉(zhuǎn)發(fā)消息服務器端圖3-1服務器類用況圖客戶端作用游戲客戶端的主要功能是為了初始化和組織用戶界面,并且定義了各個按鈕的功能。玩家進入游戲界面時,首先提示玩家選擇聯(lián)機對戰(zhàn),當玩家選擇聯(lián)機對戰(zhàn)后,會彈出請輸入玩家名的聊天框,輸入玩家名點擊進入(在此判斷是否會有相同名稱的玩家名),跳轉(zhuǎn)到另一個玩家界面,再此玩家可以創(chuàng)建房間或者加入已經(jīng)有了的房間。游戲客戶端使用狀況如圖3-2:界面組織界面組織游戲控制信息交換玩家輸入游戲玩家圖3-2游戲客戶端用況圖客戶端副類的主要功能是當前玩家與其他玩家進行對弈時,網(wǎng)絡客戶端處理需要發(fā)送和接收的消息。先手判斷先手判斷落子繪制棋盤勝負判斷玩家圖3-3棋盤類用況圖
4詳細設計及實現(xiàn)4.1系統(tǒng)主流程玩家進入游戲,選擇聯(lián)機對戰(zhàn),輸入玩家昵稱,進入游戲大廳,選擇進入房間、創(chuàng)建房間或者轉(zhuǎn)觀戰(zhàn),進入房間,進入對弈階段。對弈結(jié)束,從新開始。系統(tǒng)主流程如圖4-1:開始開始聯(lián)機對戰(zhàn)用戶登錄進入游戲大廳隨機分配轉(zhuǎn)觀戰(zhàn)用戶存在創(chuàng)建房間悔棋進入房間進行對戰(zhàn)重新輸入求和退出放棄聊天圖4-1網(wǎng)絡五子棋游戲流程圖4.2如何判斷輸贏輸贏的判斷是網(wǎng)絡五子棋游戲中一個很重要的部分。當雙方每放下一個棋子的時候,程序都要進行判斷是否已經(jīng)產(chǎn)生了輸贏。如果是,則停止游戲,并發(fā)送結(jié)果給服務器,服務器再發(fā)送結(jié)果給對方。橫,豎或者對角線方向上擁有五顆同樣的棋子時,即為勝利。圖4-2五子棋判斷輸贏示意圖當在棋盤中放入一個棋子時,比如白色。程序要計算它左邊連在一起的白色棋子的個數(shù),然后計算右邊與它相連在一起的白色棋子的個數(shù)。再將兩數(shù)相加,如果為四,與自己加起來剛好為五。則白棋獲勝。用同樣的方法在垂直和對角線方向進行判斷同色棋子個數(shù)。如果獲勝,則客戶端發(fā)送信息給服務器,否則由對方下棋,并重復進行相同的運算。具體的算法如下:1.豎著判斷輸贏的算法:publicbooleanisWin(inti,intj){ intj1=j-1; intcount=1; while(true){ if(j1>=0&&chessBoard[i][j]==chessBoard[i][j1]){ count++; j1--; }else{ break; } } j1=j+1; while(true){ if(j1<col&&chessBoard[i][j]==chessBoard[i][j1]){ count++; j1++; }else{ break; } } if(count>=5){ returntrue; } returnfalse; }2.橫著判斷輸贏的算法: publicbooleanisWin1(inti,intj){ intcount=1; inti1=i-1; while(true){ if(i1>=0&&chessBoard[i][j]==chessBoard[i1][j]){ count++; i1--; }else{ break; } } i1=i+1; while(true){ if(i1<row&&chessBoard[i][j]==chessBoard[i1][j]){ count++; i1++; }else{ break; } } if(count>=5){ returntrue; } returnfalse; }3.斜著(東北方向)判斷輸贏的算法 publicbooleanisWin2(inti,intj){ intcount,i1,j1; count=1; j1=j+1;i1=i+1; while(true){ if(i1<row&&j1<col&&chessBoard[i][j]==chessBoard[i1][j1]){ count++; i1++; j1++; }else{ break; } } j1=j-1;i1=i-1; while(true){ if(i1>=0&&j1>=0&&chessBoard[i][j]==chessBoard[i1][j1]){ count++; i1--; j1--; }else{ break; } } if(count>=5){ returntrue; } returnfalse; }4.斜著(西北方向)判斷輸贏的算法 publicbooleanisWin3(inti,intj){ intcount,i1,j1; count=1; j1=j+1;i1=i-1; while(true){ if(i1>=0&&j1<col&&chessBoard[i][j]==chessBoard[i1][j1]){ count++; i1--; j1++; }else{ break; } } j1=j-1;i1=i+1; while(true){ if(i1<row&&j1>=0&&chessBoard[i][j]==chessBoard[i1][j1]){ count++; i1++; j1--; }else{ break; } } if(count>=5){ returntrue; } returnfalse;}4.3開發(fā)環(huán)境的搭建1.安裝JDK從網(wǎng)站上下載免費安裝軟件,并按照要求一步一步安裝。2.安裝MyEclipse從官方網(wǎng)站上下載免費壓縮包,在jdk安裝目錄下,解壓此壓縮包即可。3.配置環(huán)境變量在環(huán)境變量的配置中,假設JDK的安裝目錄為D:\ProgramFiles\Java\jdk1.6.0_10環(huán)境變量PATH方法一:在c:\Autoexe.bat文件的底部或者最后以后一個path命令之后,輸入:SETPATH=%PATH%;D:\ProgramFiles\Java\jdk1.6.0_10\bin方法二:在“系統(tǒng)屬性”對話框中直接設置環(huán)境變量:PATH=……;D:\ProgramFiles\Java\jdk1.6.0_10\bin;4.4功能模塊的界面實現(xiàn)界面是軟件與用戶交互的最直接的層,界面的好壞決定用戶對軟件的第一印象。而且設計良好的界面能夠引導用戶自己完成相應的操作,起到向?qū)У淖饔?。同時界面如同人的面孔,具有吸引用戶的直接優(yōu)勢。設計合理的界面能給用戶帶來輕松愉悅的感受和成功的感覺,相反由于界面設計的失敗,讓用戶有挫敗感,再實用強大的功能都可能在用戶的畏懼與放棄中付諸東流。一個好的按鈕名稱應該是易懂的,用詞準確的,屏棄模楞兩可的字眼,要與同一界面上的其它按鈕易于區(qū)分,能望文知意最好。理想的情況是用戶不用查閱幫助就能知道該界面的功能并進行相關(guān)的正確操作。通常界面設計都按Windows界面的規(guī)范來設計,可以說:界面遵循規(guī)范化的程度越高,則易用性相應的就越好。本系統(tǒng)軟件界面有以下幾個功能:聯(lián)機對戰(zhàn)、輸入玩家姓名、創(chuàng)建房間、觀戰(zhàn)和退出等按鈕。點擊“開始游戲”按鈕,在界面中的展示如圖4-3,4-4,4-5,4-6:圖4-3聯(lián)機對戰(zhàn)開始游戲(聯(lián)機對戰(zhàn))圖4-4玩家登錄注冊輸入玩家昵稱,同時判斷是否有已存在的玩家,若有重新輸入。圖4-5游戲大廳游戲大廳包括:轉(zhuǎn)觀戰(zhàn),創(chuàng)建房間,進入房間(同時可以處理一些消息)圖4-6玩家對戰(zhàn)五子棋對戰(zhàn)界面包括:新開,悔棋,放棄,求和,退出,聊天框功能(同時處理一些消息)
5軟件的測試5.1軟件測試的方法 軟件測試就是利用測試工具按照測試方案和流程對產(chǎn)品進行功能和性能測試,甚至根據(jù)需要編寫不同的測試工具,設計和維護測試系統(tǒng),對測試方案可能出現(xiàn)的問題進行分析和評估。執(zhí)行測試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品符合需求。 軟件測試的目的: ★測試并不僅僅是為了找出錯誤。通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助項目管理者發(fā)現(xiàn)當前軟件開發(fā)過程中的缺陷,以便改進。 ★這種分析能幫助測試人員設計出有針對性的測試方法,改善測試的效率。 ★沒有發(fā)現(xiàn)錯誤的測試也是有價值的。完整的測試是評定軟件質(zhì)量的重要方法。 軟件測試的方法:軟件測試可以分為黑盒測試和白盒測試。黑盒測試就是測試要在軟件的接口處進行。這種方法是把測試內(nèi)容看做一個盒子,程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性不被測試人員考慮,只依據(jù)程序的需求規(guī)格說明書來檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試主要是為了發(fā)現(xiàn)以下4種錯誤: ★是否有不正確或遺漏的功能。 ★在接口上,輸入是否能正確的接受。能否輸出正確的結(jié)果。 ★是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤。 ★是否有初始化和終止性的錯誤。 白盒測試是細致檢查軟件的過程性細節(jié)。此方法就是叫測試人員把軟件看成一個打開的盒子一樣,測試人員可以利用程序內(nèi)部的邏輯結(jié)構(gòu),設計及相關(guān)信息選擇測試用例,測試程序所有邏輯路徑。測試不同點的程序狀態(tài)來確定所測試出來的是否和預測的狀態(tài)相同。白盒測試又被叫做結(jié)構(gòu)測試或者邏輯驅(qū)動測試。白盒測試主要是相對進行的。如下程序模塊檢查: ★對程序模塊的所有獨立的執(zhí)行路徑至少測試一遍。 ★對所有的邏輯判定,取“真”與取“假”的兩種情況至少測一遍。 ★測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等等。 由以上的分析,本游戲采用的是黑盒測試的方法。具體測試結(jié)果如表5-1:表5-1網(wǎng)絡客戶端功能測試測試用例ID測試步驟預期結(jié)果 備注1初始界面顯示-正常進入啟動服務器成功進入客戶端2初始界面顯示-不能登錄未啟動服務器給出玩家服務器未啟動的提示3玩家進入輸入玩家名字玩家成功進入未有重復4玩家進入玩家輸入名字在玩家列表中已經(jīng)存在系統(tǒng)給出用戶提示:玩家姓名已存在5創(chuàng)建房間單擊創(chuàng)建房間按鈕系統(tǒng)在聊天框中給出提示并且顯示給其他玩家房間信息6加入游戲-成功加入在玩家列表中選擇一個等待游戲的玩家的房間,單擊進入房間按鈕加入對方創(chuàng)建的游戲系統(tǒng)提示等待玩家有人加入,同意后,給出加入成功提示,并且初始化棋盤,開始游戲7加入游戲-失敗在玩家列表中選擇一個等待游戲的玩家的房間,單擊進入房間按鈕加入對方創(chuàng)建的游戲系統(tǒng)提示等待玩家有人加入,不同意后,給出加入失敗提示9悔棋,求和在游戲過程中單機悔棋、求和,等待對方處理信息若同意,系統(tǒng)提示對方同意并且執(zhí)行其操作,若不同意,則只能接著游戲8放棄退出游戲用戶在游戲當中,單擊放棄或者退出按鈕清空棋盤數(shù)據(jù),并向游戲?qū)Ψ桨l(fā)送斷開連接信息用例測試結(jié)果:正確。6總結(jié)語 通過幾個月的對軟件系統(tǒng)的設計和實現(xiàn),一個能夠完成網(wǎng)絡對弈的五子棋游戲基本實現(xiàn)。全部的總結(jié)工作,具體概括如下: 論文首先研究對比了網(wǎng)絡五子棋游戲的具體優(yōu)勢,分析了C/S和B/S模式的各自的優(yōu)缺點。對應系統(tǒng)的具體要求,構(gòu)建了基于C/S模式的網(wǎng)絡五子棋對戰(zhàn)的基本設計。 采用了網(wǎng)絡編程中的一種,Socket編程,分析了Socket通信的基本原理及實現(xiàn)。 完成了網(wǎng)絡五子棋對弈系統(tǒng)的總體的方案設計,以Java為編程語言基礎,以MyEclipse為五子棋游戲的開發(fā)工具,完成了系統(tǒng)各模塊的設計,其中包括服務器模塊、客戶端模塊以及美化界面方面的設計。 雖然網(wǎng)絡五子棋這款游戲?qū)崿F(xiàn)了基本的設計,但是需要改進的地方還有很多,早這里我首先感謝一下我的指導老師孫晨霞老師,在程序設計和規(guī)劃上給了我很多實質(zhì)性的建議,但是我個人認為需要改進的地方還有有以下幾點: 游戲界面還是不夠美化,程序設計還是存在些許冗余,不能高效率的在個人PC上運行。 對游戲邏輯模塊進行優(yōu)化,進一步提高可擴展性,以適應將來新的需求和變化。參考文獻[1]耿祥義、張躍平:Java基礎教程(第2版),清華大學出版社,2007.05,P10-P12[2]HarveyM.Deitel,P.J.Deitel:Java大學基礎教程,劉曉莉,周璐,錢方,等譯,機械工業(yè)出版社,2006.01,P20-P25[3]吳春煌:科技論文寫作,中山大學出版社,2001.07,P15-P35[4]Oaks,Scott:javaThreads,ThirdEdition,O'ReillyMediaInc,2004.03,P12-P20[5]馮博、應群:面向?qū)ο蟮腏ava網(wǎng)絡編程。清華大學出版社,2004.11,P152-P155[6]孫晨霞、楊興運:Java程序設計。中國計劃出版社2007.8,P188-P191[7]孫更新等:Java畢業(yè)設計指南與項目實踐,科學出版社,2008.03,P78-P88[8]單文仁:Java在我國的應用現(xiàn)狀和發(fā)展趨勢,科技成果縱橫,2007.02,P132-P155[9]孫衛(wèi)琴:JAVA面向?qū)ο缶幊蹋娮庸I(yè)出版社,2006.07,P65-P69[10]朱福喜、黃昊著:Java項目開發(fā)與畢業(yè)設計指導,北京:清華大學出版社,2008.05,P54-P65[11]郭驊:Java網(wǎng)絡編程中的若干問題,電子與電腦,2007.11,P36-P40基于C8051F單片機直流電動機反饋控制系統(tǒng)的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內(nèi)壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內(nèi)核設計及其應用研究基于單片機的遠程抄表系統(tǒng)的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統(tǒng)單片機系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機單片機控制系統(tǒng)的研制基于單片機的數(shù)字磁通門傳感器基于單片機的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機的多生理信號檢測儀基于單片機的電機運動控制系統(tǒng)設計Pico專用單片機核的可測性設計研究基于MCS-51單片機的熱量計基于雙單片機的智能遙測微型氣象站MCS-51單片機構(gòu)建機器人的實踐研究基于單片機的輪軌力檢測基于單片機的GPS定位儀的研究與實現(xiàn)基于單片機的電液伺服控制系統(tǒng)用于單片機系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機和CPLD的粗光柵位移測量系統(tǒng)研究單片機控制的后備式方波UPS提升高職學生單片機應用能力的探究基于單片機控制的自動低頻減載裝置研究基于單片機控制的水下焊接電源的研究基于單片機的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機的氚表面污染測量儀的研制基于單片機的紅外測油儀的研究96系列單片機仿真器研究與設計基于單片機的單晶金剛石刀具刃磨設備的數(shù)控改造基于單片機的溫度智能控制系統(tǒng)的設計與實現(xiàn)基于MSP430單片機的電梯門機控制器的研制基于單片機的氣體測漏儀的研究基于三菱M16C/6N系列單片機的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機的膛壁溫度報警系統(tǒng)設計基于AVR單片機的低壓無功補償控制器的設計基于單片機船舶電力推進電機監(jiān)測系統(tǒng)基于單片機網(wǎng)絡的振動信號的采集系統(tǒng)基于單片機的大容量數(shù)據(jù)存儲技術(shù)的應用研究基于單片機的疊圖機研究與教學方法實踐基于單片機嵌入式Web服務器技術(shù)的研究及實現(xiàn)基于AT89S52單片機的通用數(shù)據(jù)采集系統(tǒng)基于單片機的多道脈沖幅度分析儀研究HYPERLINK
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)食品安全管理與監(jiān)督手冊(標準版)
- 金融風險管理理論與方法(標準版)
- 會議安全管理與應急預案制度
- 公共交通服務設施管理制度
- 車站環(huán)境衛(wèi)生管理制度
- 養(yǎng)老院檔案信息管理制度
- 2026年柳州銀行股份有限公司招聘備考題庫及完整答案詳解一套
- 中信證券股份有限公司分支機構(gòu)2026年校園招聘備考題庫有答案詳解
- 養(yǎng)老院入住老人健康監(jiān)測制度
- 2026年重慶飛駛特人力資源管理有限公司派往某單位黨建工作輔助崗招聘備考題庫及完整答案詳解1套
- 外貿(mào)跟單基礎知識培訓課件
- (高清版)DBJ∕T 13-278-2025 《福建省電動汽車充電基礎設施建設技術(shù)標準》
- 2025年高一數(shù)學必修一數(shù)學競賽模擬題
- QGDW11970.7-2023輸變電工程水土保持技術(shù)規(guī)程第7部分水土保持設施質(zhì)量檢驗及評定
- 2025至2030年中國止鼾器行業(yè)市場現(xiàn)狀調(diào)查及前景戰(zhàn)略研判報告
- 人教版信息科技五年級全一冊 第26課 尋找最短的路徑 課件
- 人民軍隊性質(zhì)宗旨教育
- T-CEPPEA 5002-2019 電力建設項目工程總承包管理規(guī)范
- 護士長管理培訓課件
- 暫緩行政拘留申請書
- TSG 21-2015《固定式壓力容器安全技術(shù)監(jiān)察規(guī)程》
評論
0/150
提交評論