建筑智能化系统工程设计施工的现状与问题



《建筑智能化系统工程设计施工的现状与问题》由会员分享,可在线阅读,更多相关《建筑智能化系统工程设计施工的现状与问题(22页珍藏版)》请在文档大全上搜索。
1、DIS 期末總報告書-線上賓果遊戲-組別:第十組組員名單:R91725006賴坤威R91725053顏亦涵R91725055陳亭諭目錄1.動機與目標-32.遊戲簡介-32.1 Server端-32.2 Client端-43.系統流程-54.系統架構-65.系統需求-76.系統設計-86.1 Game Class-86.1.1 Game 的Class簡介-106.1.2 Game主程式的流程-106.1.3 Class之間的關係圖-136.2 Player Class-186.2.1 Player的Class簡介-186.2.2 Player主程式的流程-197.系統容錯力考量-208.未來展望
2、-229.工作分配-221. 動機與目標因為網路遊戲的興起,我們可以看到宏碁戲谷、天堂等各種線上遊戲的熱門,凝聚了許多網友的力量,帶來了豐富的利潤。而我們在瀏覽各個網站之後,看到了許多大家耳熟能詳的小遊戲,如:俄羅斯方塊、大老二、麻將等日常遊戲,於是靈機一動,發現我們從小玩到大的賓果遊戲,沒有開發成線上遊戲,於是,我們想運用在分散式資訊系統所學的,開發一個線上賓果遊戲,希望提供一個多人連線的娛樂伺服器,在一個穩定的架構下,讓客戶端有清楚易用的使用者介面,滿足親和性的使用者需求。最重要的是,可以容許錯誤的發生。2. 遊戲簡介賓果遊戲為大家耳熟能詳的遊戲,在本章節會簡介本系統的遊戲架構,如下:2.
3、1. Server端l 主機名稱為自己,主機可以設定。l 玩家人數的限制:規定參加這局遊戲的玩家人數最大值。l 等候玩家加入的時間:在這段time-out時間內,玩家可以陸續加入此局遊戲。l 喊球間斷時間:本系統為server叫號,所以server可以決定喊球時間,越快比賽越刺激!l 遊戲狀態:秀出遊戲現在的狀態為何。l 亮球板:呈現出此時叫號的狀況,叫到的數字在亮球板上的數字會反白,也會立即呈現在圖中的”稍候”中。l 玩家詳細資料表格:此table紀錄玩家的ID,擁有幾張賓果卡,還有亂叫次數。如果亂叫超過三次,則此玩家就算輸。2.2. Client端 l 尊姓大名:輸入玩家名稱。l 隨機卡號
4、:根據現在時間亂數產生的卡號。l 主機名稱:填入欲加入的主機名稱,也可以由系統自己去抓。l 遊戲狀況: 秀出遊戲現在的狀態為何。l 亮球板:呈現出此時叫號的狀況,叫到的數字在亮球板上的數字會反白,也會立即呈現在圖中的”稍候”中。l 發球時大叫:提供玩家叫號時,要不要以聲音提示。3.系統流程ServerPlayer 開啟遊戲開啟遊戲等候玩家加入遊戲開始驗證賓果離開發球遊戲結束加入新局等待遊戲開始喊號判斷自己是否賓果賓果沒有贏球,重新發球。我賓果了!Game Over恭喜你贏了!清除遊戲繼續再一局離開l 遊戲安裝後,並執行bingo.game.BINGO,開啟Server主畫面。l 同樣地,玩家也
5、安裝好遊戲,並bingo.player.Player,開啟玩家主畫面。l 等候第一個玩家加入遊戲。玩家若想加入遊戲,按下加入新局的按鈕,透過RMI啟動mayIPlay()事件,傳給Server玩家名字和參數設定,若允許玩家加入此局,Server即傳回賓果卡片。l 當第一個玩家加入時,立刻開始倒數計時。在倒數時新的玩家仍能加入此局。倒數結束,遊戲即刻展開。 l Server根據輸入的喊號時間N,每N秒開始喊球號。l 在畫面中可以看到Server現在所喊的球號。玩家可以在卡片上依球號做上記號。l 當玩家發現完成五條線時,按下賓果,我贏了!的按鈕,通知Server並傳回玩家ID和卡片。 l Serv
6、er暫停遊戲並檢驗玩家的ID和加密過的卡片。l 假如玩家真的贏了,恭喜玩家贏了並結束此局。l 假如玩家並未真的賓果,此局仍會繼續進行,但玩家的狼叫次數+1,若狼叫滿三次,則此玩家就算出局。l 當遊戲結束,玩家可以選擇重新設定遊戲,並加入新局;也可以選擇離開遊戲。 4.系統架構:線上賓果遊戲所採用的系統架構如下圖所示:備援ServerServer.ClientClientClientClientl client 端(玩家)透過網路連線至 Server 便可進行賓果遊戲l 主Server 的主要功能為確保遊戲正常運作l 平行之備援 Server 主要功能在確保主 Server Crash 掉時能立
7、即補求主 Server 遺留下的工作。l 後端 DB 主要是存放玩家資訊、及相關彙總資料。5.系統需求:系統需求分為硬體需求、軟體需求、及功能需求三點說明:1. 硬體需求:由於此次遊戲主要強調的重點是多人同樂,所以在硬體需求上,至少要有兩台 PCs 以上。2. 軟體需求:l Operation System:n Server: windows 2000 servern Client: windows 98/2000/XPl Programming Language: Javal Middleware: Java RMI6.系統設計總共分成三個部分 l Game Class是Server端的程式
8、l Player Class是Client端的程式l Share Class為其兩個Class都會用到的Class。6.1 Game Class 6.1.1 Game 的Class簡介:n BINGO:主程式,這個類別會啟動l RingMaster:l Registrar: RMI機制以便和遠端物件建立溝通。l ControlPane:使用者介面。n RingMaster:主要功能在建立和控制Game裡的物件和彼此之間的溝通,負責:l 維持遊戲的狀態和局數。l 協調GamesThread、 RegistrarImpl、BallAnnoucer l 呼叫Game內大部分其他Class的物件,比如
9、SocketGate、GameParameters等。當建立這些物件後,RingMaster負責兩件事: l 傳送references給物件,讓他們可以啟動其他物件的建構元。 l 提供一個API讓他們可以透過RingMaster交換訊息。 n RegistrarImpl:實作RMI的interface-Registrar,和player三個RMI method對應:l whatsHappening用於Client端想知道現在遊戲的狀態,詢問Game Server。l mayIPlay用於Client端申請加入新局,Server若同意便發送賓果卡給玩家。l BINGO用於玩家(Client端)發
10、送他自己賓果的訊息給Server,Sever要驗證玩家是否是真的賓果,並且把結果通知玩家們。n ControlPane:主要顯示”主機設定”這個畫面,並且啟動GamesThread來負責接聽玩家是否按下結束遊戲的按鈕。n GameThread:是Thread的子類別,負責一直偵測是否玩家不想再玩遊戲。遊戲在當有第一個玩家想玩時起動,GameThread會被ControlPane啟動且一直活著,變成迴圈在跑,直到有玩家賓果或者二十五顆球都發完,當Game Over後,這個迴圈才結束。如果這一局不是最後一局,則下一局開始,GameThread 會繼續活著。n BallAnnouncer:也是Thr
11、ead的子類別。負責發球的工作,將球發給玩家們。n BagofBalls:是一個interface將會給RandomBag實作。包含了GetNext這個Method(取得下一顆球號)。會將此設為interface是因為便於修改,比如繼承的class可以新增一些自己特製的動作。n RandomBag:實作BasofBall,將二十五顆球隨機產生,排出不同的順序。這樣一來每張卡片上面的數字排序位置就可以不一樣。這個類別會被BallAnnouncer來呼叫。n NotaryPublic:中立第三者,負責將玩家喊賓果時傳來的卡片解密,以便檢驗卡片是否被動過手腳。n Roster:負責保留玩家名單。為每