999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于C/S架構(gòu)的五子棋游戲軟件的設(shè)計與實現(xiàn)

2019-10-31 07:00:03萬坤蘇雪蓮冉瑞生
電腦知識與技術(shù) 2019年22期

萬坤 蘇雪蓮 冉瑞生

摘要:五子棋是一項簡單有趣的益智游戲。為了讓五子棋游戲愛好者能夠更加便捷地進(jìn)行游戲,因此設(shè)計并開發(fā)了一款基于C/S(客戶端/服務(wù)器)架構(gòu)的五子棋游戲軟件。該軟件使用了統(tǒng)一建模語言,MYSQL數(shù)據(jù)庫,V-Play開發(fā)框架對游戲進(jìn)行設(shè)計與實現(xiàn)。軟件有三種游戲模式:雙人對戰(zhàn)模式、聯(lián)機(jī)對戰(zhàn)模式與人機(jī)對戰(zhàn)模式,玩家可以根據(jù)自己的需要選擇不同的模式進(jìn)行游戲,并可以和網(wǎng)絡(luò)上的其他玩家對弈。該軟件使得五子棋游戲玩家之間的對弈不再受到時空的限制。

關(guān)鍵詞:C/S;UML;V-Play;C++;五子棋游戲

中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2019)22-0094-03

開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

Design and Implementation of Gobang Game Software Based on C/S Structure

WAN Kun, SU Xue-lian, RAN Rui-sheng

(Chongqing Normal University, Chongqing 401331, China)

ABSTRACT: Gobang is a simple and interesting puzzle game. In order to make it more convenient for gobang fans to play games, a gobang game software based on C/S (client/server) architecture was developed. The software was designed and implemented by UML (Unified Modeling Language), MYSQL database and V-Play development framework. The gobang game has three modes: two-player mode, on-line mode and man-machine mode. Players can choose different modes to play games according to their own needs and play the game with other players on the Internet. This software makes the player of gobang free of time and space restrictions.

Key words: C/S; UML; V-Play; C++; gobang

1 背景

五子棋游戲是一款兩人對弈的策略型棋類游戲,其歷史悠久,相傳起源于四千多年前的堯帝時期,深受世界各地不同年齡的人的喜歡,五子棋游戲規(guī)則十分簡單,游戲雙方分別采用黑色或白色棋子,先使棋子形成五子連線者獲勝。隨著互聯(lián)網(wǎng)的快速發(fā)展,越來越多的工作都可以使用計算機(jī)完成,為了能夠讓人們更加方便、快捷地進(jìn)行五子棋游戲,因此設(shè)計并開發(fā)五子棋游戲軟件。該軟件的開發(fā)不僅能夠讓用戶隨時隨地地進(jìn)行游戲,還可以促進(jìn)五子棋游戲的進(jìn)一步發(fā)展,讓更多的人認(rèn)識這一款簡單好玩的益智游戲。

該軟件采用C/S(Client/Server,客戶/服務(wù)器)架構(gòu)作為軟件的體系結(jié)構(gòu);在軟件設(shè)計時采用UML(Unified Modeling Language,統(tǒng)一建模語言);在軟件實現(xiàn)時采用了OO(Object Oriented,面向?qū)ο螅┸浖_發(fā)方法,以MYSQL數(shù)據(jù)庫存儲數(shù)據(jù),用C++編寫軟件主要邏輯,QML(Qt Meta Language)編寫軟件界面。

該軟件有三種游戲模式:雙人對戰(zhàn)模式、聯(lián)機(jī)對戰(zhàn)模式與人機(jī)對戰(zhàn)模式。玩家可以選擇雙人對戰(zhàn)與朋友在同一臺設(shè)備上進(jìn)行游戲,也可以通過聯(lián)機(jī)對戰(zhàn)和不同地方的人對弈,或者選擇人機(jī)對戰(zhàn)與計算機(jī)進(jìn)行游戲。

2 C/S體系結(jié)構(gòu)

C/S體系結(jié)構(gòu)即Client/Server(客戶機(jī)/服務(wù)器)體系結(jié)構(gòu),是基于資源不對等,且為實現(xiàn)共享而提出來的,是20世紀(jì)90年代成熟起來的技術(shù)。一般情況下,客戶機(jī)與服務(wù)器相距很遠(yuǎn),客戶機(jī)向服務(wù)器請求服務(wù),服務(wù)器為客戶機(jī)提供服務(wù),C/S體系結(jié)構(gòu)定義了客戶機(jī)如何與服務(wù)器協(xié)作,以實現(xiàn)數(shù)據(jù)和程序分布到多臺計算機(jī)上。

軟件采用三層C/S結(jié)構(gòu)(也稱多層C/S結(jié)構(gòu))風(fēng)格,即把用戶界面和應(yīng)用的業(yè)務(wù)邏輯分離,讓表示層在客戶端上運(yùn)行,功能層在應(yīng)用服務(wù)器上運(yùn)行,數(shù)據(jù)層在數(shù)據(jù)庫服務(wù)器上運(yùn)行,這也稱為“瘦客戶機(jī)(thin client)”,“胖服務(wù)器(fat server)”體系結(jié)構(gòu)。

三層C/S結(jié)構(gòu)中的功能層是應(yīng)用的主體,它包括系統(tǒng)中所有重要的和易變的企業(yè)邏輯,應(yīng)用服務(wù)器是應(yīng)用邏輯處理的核心,它是具體業(yè)務(wù)的實現(xiàn)。客戶端將請求信息發(fā)送給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器返回數(shù)據(jù)和結(jié)果,應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器有密集的數(shù)據(jù)交往,應(yīng)用服務(wù)器向數(shù)據(jù)庫服務(wù)器發(fā)送SQL請求,數(shù)據(jù)庫服務(wù)器將數(shù)據(jù)訪問結(jié)果返回給應(yīng)用服務(wù)器。當(dāng)應(yīng)用邏輯變得復(fù)雜或增加新的應(yīng)用時,可增加新的應(yīng)用服務(wù)器,它可與原應(yīng)用服務(wù)器駐留于同一主機(jī)或不同主機(jī)上。三層C/S體系結(jié)構(gòu)的處理流程如圖1所示[1]:

3 技術(shù)簡介

該軟件采用 Qt Creator集成開發(fā)環(huán)境進(jìn)行開發(fā)。在開發(fā)過程中,主要采用了如下幾個技術(shù):

3.1 UML

統(tǒng)一建模語言(Unified Moding Language,UML)提供了用于交流的詞匯表和在詞匯表中組合詞匯的規(guī)則,而建模語言的詞匯表和規(guī)則注重對系統(tǒng)進(jìn)行概念上和物理上的描述,因而像UML這樣的建模語言是用于軟件藍(lán)圖的標(biāo)準(zhǔn)語言[2]。

在五子棋軟件中,對對象的建模讓開發(fā)人員更好的理解軟件,同時還把軟件的結(jié)構(gòu)和行為進(jìn)行聯(lián)通。

3.2 V-Play開發(fā)框架

V-Play是構(gòu)建于Qt商業(yè)版本之上的跨平臺開發(fā)框架,它將許多實用的第三方庫、開源項目和常用功能集成進(jìn)來,極大地提高了開發(fā)者的工作效率。開發(fā)者可以直接使用QML或C++中的相關(guān)元素進(jìn)行調(diào)用,可以使用QML或Qt/C++進(jìn)行跨平臺開發(fā)。QML是一種多泛型語言,能夠根據(jù)屬性以及與其他對象的關(guān)聯(lián)來定義對象,并對其他對象的變化做出響應(yīng)。同時 QML是一種聲明性的語言,可以用來定義應(yīng)用的外觀和引用的行為。在五子棋游戲中,利用QML技術(shù)編寫游戲界面以及控件之間的關(guān)聯(lián)。

3.3 MySQL 數(shù)據(jù)庫技術(shù)

MYSQL是一個高性能的且相對簡單的關(guān)系數(shù)據(jù)庫系統(tǒng),相對于其他數(shù)據(jù)庫來說,其復(fù)雜性相對較低。在本軟件中,MYSQL數(shù)據(jù)庫主要用于存儲的用戶賬戶相關(guān)信息。

3.4 JSON數(shù)據(jù)傳輸技術(shù)

JSON全稱為JavaScript Object Notation,是一種輕量級的數(shù)據(jù)交換格式,由名字可知,JSON就是JAVASRCIPT中的對象和數(shù)組,通過對象和數(shù)組這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu),這也是選擇使用JSON傳輸格式的主要原因。JSON數(shù)據(jù)傳輸技術(shù)用于在聯(lián)機(jī)對戰(zhàn)模式中,通過互聯(lián)網(wǎng)傳輸和JSON數(shù)據(jù)傳輸技術(shù)實現(xiàn)兩個玩家之間的對弈。將棋子的數(shù)據(jù)封裝成JSON數(shù)據(jù),方便在網(wǎng)絡(luò)中傳輸,接收端接收到數(shù)據(jù)后利用JSON數(shù)據(jù)解析技術(shù)將接收到的的數(shù)據(jù)解析出來。以這種方式傳送數(shù)據(jù)能使傳輸數(shù)據(jù)更加的快捷、迅速,降低了傳輸時間與程序的復(fù)雜度,提了整個軟件的性能。

4 系統(tǒng)設(shè)計

4.1 系統(tǒng)總體架構(gòu)

本軟件基于三層C/S體系結(jié)構(gòu)設(shè)計了系統(tǒng)的總體架構(gòu)。系統(tǒng)的總體架構(gòu)包圖如圖2所示:

Game UI與Game Control Client為表示層,是軟件的用戶接口,即人機(jī)交互界面,是用戶與軟件交互的窗口。表示層運(yùn)行在客戶機(jī)上,它不擁有任何業(yè)務(wù)邏輯,只有一些簡單的應(yīng)用邏輯。

Game Control Server與Game Entity為功能層,是軟件的主體。功能層運(yùn)行在應(yīng)用服務(wù)器上,它擁有軟件中所有重要的業(yè)務(wù)邏輯,包括接收數(shù)據(jù)輸入、進(jìn)行邏輯處理并返回處理結(jié)果。

Game DataBase為數(shù)據(jù)層,是由數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,DBMS)負(fù)責(zé)管理。數(shù)據(jù)層運(yùn)行在數(shù)據(jù)庫服務(wù)器上,主要負(fù)責(zé)對數(shù)據(jù)庫中數(shù)據(jù)的存儲、讀、寫和維護(hù)數(shù)據(jù)存儲、數(shù)據(jù)訪問、數(shù)據(jù)完整性約束等工作。

軟件界面由QML腳本語言實現(xiàn),其他部分均由C++程序設(shè)計語言實現(xiàn)。應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器位于同一計算機(jī)上,這種方式使應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器不需要網(wǎng)絡(luò)就能進(jìn)行通信,極大地提高了應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器之間的通信效率,使系統(tǒng)具有更好的性能。

4.2 業(yè)務(wù)邏輯類設(shè)計

通過對功能層的設(shè)計,軟件的實體類包括:User、SystemSetting、Game、Tile、Network、Server,它們主要負(fù)責(zé)數(shù)據(jù)管理和業(yè)務(wù)邏輯處理。如下圖3為業(yè)務(wù)邏輯層部分類圖,該圖表示了功能層中實體類之間關(guān)系。

上圖中的實體類說明如下:

User:負(fù)責(zé)玩家賬號相關(guān)的數(shù)據(jù)管理和業(yè)務(wù)邏輯處理,其中id為游戲賬號,password為賬號密碼,nickname為玩家昵稱,avatar為玩家頭像;

SystemSetting:負(fù)責(zé)系統(tǒng)設(shè)置相關(guān)的數(shù)據(jù)管理和業(yè)務(wù)邏輯處理,其中volumn為游戲音量大小;

Game:負(fù)責(zé)具體游戲相關(guān)的數(shù)據(jù)管理和業(yè)務(wù)邏輯處理,其中mode為游戲模式,chessboardSize為棋盤大小,field為棋盤區(qū)域所有棋子的具體位置;

Tile:負(fù)責(zé)一個具體的棋子相關(guān)的數(shù)據(jù)管理和業(yè)務(wù)邏輯處理,其中type為棋子類型(白子或黑子),row為棋子所在的行號,column為棋子所在的列號;

Network:負(fù)責(zé)網(wǎng)絡(luò)相關(guān)的數(shù)據(jù)管理和業(yè)務(wù)邏輯處理,其中socket為套接字;

Server:負(fù)責(zé)服務(wù)相關(guān)的數(shù)據(jù)管理和業(yè)務(wù)邏輯處理,其中tcpServer為QTcpServer的實例。

5 游戲模式

5.1 雙人對戰(zhàn)

該模式下,兩個玩家可以在同一設(shè)備上進(jìn)行游戲,該模式與實體五子棋游戲類似。玩家可以選擇中途退出游戲或開始新游戲。

5.2 聯(lián)機(jī)對戰(zhàn)

該模式下,軟件會通過玩家的游戲記錄匹配到與玩家水平相當(dāng)?shù)牧硪粋€玩家,兩個玩家通過網(wǎng)絡(luò)在不同的設(shè)備上進(jìn)行游戲。玩家可以選擇中途退出游戲或開始新游戲,但選擇退出游戲或開始新游戲的一方算作失敗,另一方算作勝利。

5.3 人機(jī)對戰(zhàn)

該模式下,只需要一個游戲玩家即可進(jìn)行游戲,另一個玩家由軟件模擬。玩家可以選擇中途退出游戲或開始新游戲,但選擇退出游戲或開始新游戲均算作失敗。

6 系統(tǒng)實現(xiàn)

6.1 登錄界面

玩家輸入賬號、密碼后點擊登錄,軟件對輸入的賬號和密碼與數(shù)據(jù)庫中存儲的賬號信息進(jìn)行匹配,若匹配成功,則登錄成功,反之,登錄失敗。玩家不進(jìn)行登錄也可使用軟件進(jìn)行游戲,此時,軟件會為玩家生成一個游客賬號。為了更好的游戲體驗,建議玩家登錄軟件。

6.2 主界面

主界面是模式選擇界面,主要展示對玩家所提供的三種游戲模式:雙人對戰(zhàn)、聯(lián)機(jī)對戰(zhàn)、人機(jī)對戰(zhàn)。玩家可根據(jù)自己需要選擇相應(yīng)的模式。

6.3 匹配隊友界面

在聯(lián)機(jī)對戰(zhàn)模式中,匹配隊友界面展示了玩家匹配對方玩家的情況。在匹配成功之前玩家可以終止匹配。匹配成功之后兩個匹配上的玩家一起開始新游戲。

6.4 游戲界面

游戲界面展示了游戲背景以及游戲?qū)崟r情況。棋盤大小為17x17,玩家可選擇“無子”的“+”處落子;界面顯示了棋局形式、當(dāng)前落子方、對方上次落子位置。除此之外,界面提供了結(jié)束游戲和重新開始按鈕。在游戲過程中,玩家可以根據(jù)需求設(shè)置游戲,如音效設(shè)置。

6.5 游戲結(jié)束界面

游戲結(jié)束界面顯示了游戲結(jié)束時的狀態(tài)。當(dāng)游戲結(jié)束時,高亮“五子一線”的棋子,游戲操作界面失去焦點,玩家不可再落子,同時應(yīng)用顯示游戲結(jié)束框,提示游戲獲勝(或失敗)。游戲結(jié)束后,玩家可選擇返回主菜單或重新開始游戲。

7 結(jié)論

本文介紹了基于C/S結(jié)構(gòu)的五子棋游戲軟件設(shè)計與實現(xiàn),在五子棋游戲的設(shè)計中,以三層C/S結(jié)構(gòu)為總體架構(gòu),在游戲的開發(fā)與實現(xiàn)中,采用了UML 建模語言、 V-Play開發(fā)框架、MySQL 數(shù)據(jù)庫技術(shù)和JSON數(shù)據(jù)傳輸技術(shù)。對于游戲界面的實現(xiàn),我們使用的QML腳本語言進(jìn)行實現(xiàn),使得游戲界面美觀簡潔,易于使用。本軟件有三種模式可供選擇,并且玩家可以在網(wǎng)絡(luò)上和其他玩家對弈,提高了五子棋游戲的趣味性。

參考文獻(xiàn):

[1] 李金剛, 趙石磊, 杜寧. 軟件體系結(jié)構(gòu)理論與應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2013: 66-67.

[2] Grady Booch, James Rumbaugh, Lvar Jacobson. UML用戶指南[M]. 2版. 北京: 人民郵電出版社, 2006.

[3] 張有聲. 軟件體系結(jié)構(gòu)原理、方法與實踐[M]. 2版. 北京: 清華大學(xué)出版社, 2016.

[4] Simon Bennett, Steve McRobb, Ray Farmer. Object-Oriented Systems Analysis and Design Using UML[M]. 4th ed. McGraw-Hill Education(Asia), 2013.

[5] Michael Blaha, James Rumbaugh. UML面向?qū)ο蠼Ec設(shè)計[M]. 2版. 北京: 人民郵電出版社, 2006.

【通聯(lián)編輯:謝媛媛】

主站蜘蛛池模板: 无码精品国产dvd在线观看9久| 久久精品波多野结衣| 国产精品网拍在线| 久久香蕉国产线| 在线观看国产精品一区| 国产导航在线| 国产亚洲一区二区三区在线| 久久99久久无码毛片一区二区| 一区二区自拍| 91精品啪在线观看国产91| 国产人前露出系列视频| 国产成人无码Av在线播放无广告| 美女被躁出白浆视频播放| 国产区免费| 思思热精品在线8| 精品無碼一區在線觀看 | 中文字幕亚洲综久久2021| 伊在人亞洲香蕉精品區| 国产福利在线观看精品| 在线国产资源| 日韩中文无码av超清| 制服丝袜 91视频| 亚洲精品视频免费| 欧美福利在线观看| 成人日韩欧美| 亚洲综合极品香蕉久久网| 中文字幕无码电影| 91黄视频在线观看| 波多野结衣无码AV在线| 亚洲国产系列| 一级不卡毛片| 国产高清自拍视频| 国产喷水视频| 亚洲无码高清视频在线观看| 五月激情综合网| 国产精品19p| 干中文字幕| 中文成人在线视频| 在线观看免费AV网| 国产精品私拍在线爆乳| 国产正在播放| 久久综合五月婷婷| 精品国产美女福到在线不卡f| 亚洲码在线中文在线观看| 狠狠亚洲五月天| 日本尹人综合香蕉在线观看| 日韩欧美中文字幕在线精品| 国产永久在线视频| 日韩黄色在线| 欧美视频免费一区二区三区| 久久久久久高潮白浆| 免费人成视网站在线不卡| 制服丝袜无码每日更新| 玖玖精品视频在线观看| 久久精品嫩草研究院| 亚洲愉拍一区二区精品| 99re视频在线| 午夜小视频在线| 国产又爽又黄无遮挡免费观看| 精品无码一区二区三区在线视频| 91精品免费久久久| 日本草草视频在线观看| 男女男免费视频网站国产| 国内精品免费| 亚洲综合中文字幕国产精品欧美 | 国产无遮挡猛进猛出免费软件| 日本一区中文字幕最新在线| 国产真实自在自线免费精品| 国产在线日本| 99中文字幕亚洲一区二区| 国产偷倩视频| 国产91透明丝袜美腿在线| 全部免费毛片免费播放| 91视频精品| 谁有在线观看日韩亚洲最新视频| 久久精品国产精品一区二区| 国产精品丝袜在线| 亚洲h视频在线| 精品国产网站| 国产精品.com| 欧美翘臀一区二区三区| 亚洲精品动漫|