国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JAVA的象棋游戲設(shè)計(jì)與實(shí)現(xiàn)

2016-03-20 02:07:13
關(guān)鍵詞:走棋中國象棋網(wǎng)絡(luò)通信

蘭 偉

(重慶科創(chuàng)職業(yè)學(xué)院 信息工程系, 重慶 永川 402160)

棋牌對(duì)弈類游戲是玩家利用休閑時(shí)消遣的主要競(jìng)技性游戲,因具有良好的娛樂性和智慧性,深受玩家喜愛。同時(shí)軟件程序員也熱衷編寫棋牌對(duì)弈類游戲,原因是棋牌對(duì)弈類游戲可以訓(xùn)練程序員面向?qū)ο笤O(shè)計(jì)能力,同時(shí)也能學(xué)習(xí)和應(yīng)用人工智能相關(guān)知識(shí)。中國象棋,是由兩人輪流走子,以“將死”或“困斃”對(duì)方將(帥)為勝的一種棋類運(yùn)動(dòng)。由于用具簡(jiǎn)單,趣味性強(qiáng),是當(dāng)今國內(nèi)最流行棋藝活動(dòng)之一。

Java語言是一款非常優(yōu)秀的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,因其具有極高的安全性和跨平臺(tái)性,廣泛應(yīng)用于互聯(lián)網(wǎng)、嵌入式智能終端、游戲開發(fā)等領(lǐng)域。[1]本文以Java語言為例,利用面向?qū)ο笤O(shè)計(jì)思想設(shè)計(jì)一款網(wǎng)絡(luò)對(duì)弈版的中國象棋游戲。

一、需求分析

(一)功能需求

本系統(tǒng)主要需要完成網(wǎng)絡(luò)對(duì)戰(zhàn)時(shí)開始新局、走棋、認(rèn)輸、求和、悔棋、網(wǎng)絡(luò)連接設(shè)置等基本操作。

(二)性能需求

本系統(tǒng)完成中國象棋網(wǎng)絡(luò)對(duì)弈功能。除了滿足功能需求外,還需要考慮網(wǎng)絡(luò)質(zhì)量問題,因?yàn)榱己玫木W(wǎng)絡(luò)環(huán)境才能增加游戲樂趣。用戶對(duì)網(wǎng)絡(luò)性能要求主要體現(xiàn)連接時(shí)延、棋局同步時(shí)延和連接穩(wěn)定性方面。連接時(shí)延是指對(duì)弈雙方建立網(wǎng)格連接的平均時(shí)延,棋局同步時(shí)延是指一方玩家落子后到另一方玩家游戲界面顯示的時(shí)間差,網(wǎng)絡(luò)穩(wěn)定性是規(guī)定時(shí)間內(nèi)連接玩家之間棋局同步成功的概率。性能需求見表1。[2]

表1 網(wǎng)絡(luò)對(duì)弈版的中國象棋性能需求

二、核心技術(shù)

網(wǎng)絡(luò)編程需要解決兩個(gè)問題:一個(gè)是如何在網(wǎng)絡(luò)中準(zhǔn)確定位一臺(tái)或多臺(tái)主機(jī),另一個(gè)是當(dāng)找到所需要的主機(jī)后如何進(jìn)行可靠高效的數(shù)據(jù)傳輸。Java Socket(中文翻譯成:套接字)技術(shù)就是用來解決Java網(wǎng)絡(luò)編程中主機(jī)定位和數(shù)據(jù)傳輸?shù)?,Socket實(shí)質(zhì)是雙向連通的輸入輸出流。無論是服務(wù)器端還是客戶端都可以向流中寫入和讀取信息,從而實(shí)現(xiàn)服務(wù)器與客戶端的通信功能。[3]

三、系統(tǒng)功能設(shè)計(jì)

本系統(tǒng)主要需要解決兩個(gè)核心問題,第一是中國象棋棋盤、棋子等各元素的抽象,即類的設(shè)計(jì);第二是對(duì)游戲友好界面的設(shè)計(jì)。

(一)棋盤類設(shè)計(jì)

中國象棋棋盤是一個(gè)由10條橫線和9條豎線構(gòu)成的網(wǎng)絡(luò),共90個(gè)交叉點(diǎn)。這些交叉點(diǎn)又稱為棋點(diǎn),每一個(gè)棋子只能在棋點(diǎn)上行走。為了能準(zhǔn)確記錄下棋盤的每個(gè)棋點(diǎn),可以選擇一個(gè)大小為90的數(shù)組模擬棋盤上的90個(gè)棋點(diǎn)。如圖1所示。

圖1 中國象棋棋盤模型

因此可以設(shè)計(jì)一個(gè)棋點(diǎn)類(ChessPoint)和一個(gè)類盤類(ChessBoard),設(shè)計(jì)如下:

(二)棋子類設(shè)計(jì)

中國象棋共有32顆棋子,雙方各16顆。類型有“車”、“馬”、“相/象”、“士”、“帥/將”、“炮”、“兵/士”。紅方的“帥”和黑方的“將”只是所加載的圖片不同,棋子的功能是一樣的。類似的還有“兵/士”和“相/象”。棋子另外還有所在位置、是否顯示、紅方或黑方等屬性。因此中國象棋棋子可抽象出的棋子類(ChessPiece)如下:[4]

(三)棋子走棋規(guī)則類設(shè)計(jì)

不同的棋子有不同的走法,即走棋規(guī)則。例如“車”的走棋規(guī)則是按水平或垂直方向無障礙行走或吃棋子。因?yàn)橹袊笃遄咂逡?guī)則較復(fù)雜,因此單獨(dú)設(shè)計(jì)一個(gè)規(guī)則類(Rule)。[5]

(四)游戲主界面設(shè)計(jì)

游戲主界面類ChineseChess是一個(gè)可視化的界面,因此需要繼承JFrame類。在該界面中我們通過菜單完成網(wǎng)絡(luò)設(shè)置、開始新棋局、認(rèn)輸、求和等操作。另外還要顯示棋盤及棋子,可以完成走棋操作。[6]因此,ChineseChess類設(shè)計(jì)如下:

(五)網(wǎng)絡(luò)通信設(shè)計(jì)

因?yàn)楸鞠到y(tǒng)為一款網(wǎng)絡(luò)對(duì)弈版的中國象棋游戲,因此需要設(shè)計(jì)網(wǎng)絡(luò)通信模塊。根據(jù)面向?qū)ο蟮木幊趟枷?,一切皆為?duì)象,網(wǎng)絡(luò)通信模塊可以設(shè)計(jì)成一個(gè)網(wǎng)絡(luò)通信類,完成網(wǎng)絡(luò)對(duì)弈的需要。網(wǎng)絡(luò)通信類需要使用Socket技術(shù)。因網(wǎng)絡(luò)對(duì)弈需要兩臺(tái)電腦通過Internet完成對(duì)弈,因此需要輸入和輸出Socket,即服務(wù)器端和客戶端兩個(gè)方向的流實(shí)現(xiàn)數(shù)據(jù)傳輸。

在服務(wù)器端,首先需要根據(jù)端口(port)建立一個(gè)serverSocket,然后建立一個(gè)等待客戶端的監(jiān)聽Socket,然后再各創(chuàng)建一個(gè)輸入輸出流。在客戶端需要根據(jù)服務(wù)器的IP地址和Port創(chuàng)建客戶端Socket,同樣需要各創(chuàng)建一個(gè)輸入輸出流,這樣服務(wù)器端和客戶端就可以通信了。另外網(wǎng)絡(luò)通信類中設(shè)計(jì)一個(gè)調(diào)度方法 dispatcher(String s),通過提取字符 s的信息,可以得出調(diào)用者的操作類別,包括走棋、悔棋、新游戲申請(qǐng)等,再根據(jù)操作類別做相應(yīng)的處理。

四、結(jié)論

本文在分析中國象棋走棋規(guī)則后,采用Java技術(shù)、網(wǎng)絡(luò)通信技術(shù)和面向?qū)ο蟮脑O(shè)計(jì)方法,完成了網(wǎng)絡(luò)對(duì)弈版中國象棋設(shè)計(jì),實(shí)現(xiàn)玩家通過網(wǎng)絡(luò)完成對(duì)弈功能。通過實(shí)驗(yàn)運(yùn)行,證明本次設(shè)計(jì)可行,并達(dá)到了預(yù)期效果。

[1]Bruce Eckel.Java 編程思想[M].北京:機(jī)械工業(yè)出版社,2007:680-688.

[2]臧利萍,程文靜,王衛(wèi)振.基于Android的中國象棋游戲的模擬[J].電腦知識(shí)與技術(shù),2014(32):7742-7743.

[3]杜幫國.基于Java平臺(tái)的中國象棋游戲的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2013.

[4]高偉,郭瑾,張昊.基于JAVA技術(shù)的中國象棋游戲設(shè)計(jì)與實(shí)現(xiàn)[J].大連民族學(xué)院學(xué)報(bào),2007(5):17-19.

[5]李勇.基于移動(dòng)互聯(lián)網(wǎng)的國際象棋對(duì)弈系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.

[6]戴錦餛.計(jì)算機(jī)象棋[J].微計(jì)算機(jī)應(yīng)用,1994(3):5-11.

猜你喜歡
走棋中國象棋網(wǎng)絡(luò)通信
《金鏟鏟之戰(zhàn)》火熱自走棋品類該如何下料?
《金鏟鏟之戰(zhàn)》火熱自走棋品類該如何下料?
“自走棋”競(jìng)技化到底行不行?
“自走棋”競(jìng)技化到底行不行?
基于網(wǎng)絡(luò)通信的智能照明系統(tǒng)設(shè)計(jì)
電子制作(2019年15期)2019-08-27 01:11:48
網(wǎng)絡(luò)通信中信息隱藏技術(shù)的應(yīng)用
基于網(wǎng)絡(luò)通信的校園智能音箱設(shè)計(jì)
電子制作(2018年1期)2018-04-04 01:48:30
談?dòng)?jì)算機(jī)網(wǎng)絡(luò)通信常見問題及技術(shù)發(fā)展
電子制作(2017年17期)2017-12-18 06:41:06
馬踏連營
馬踏連營
讀寫算(上)(2016年12期)2016-12-13 10:50:39
凤台县| 富锦市| 维西| 扶余县| 和林格尔县| 湟中县| 乌兰浩特市| 霍林郭勒市| 永靖县| 郧西县| 乾安县| 怀宁县| 乌鲁木齐市| 武鸣县| 微博| 禹州市| 冕宁县| 潜江市| 贺州市| 泗洪县| 盐池县| 比如县| 天气| 南郑县| 马山县| 罗田县| 淳安县| 育儿| 清丰县| 霸州市| 宜城市| 栾城县| 绥德县| 通山县| 玛曲县| 乌兰察布市| 榆树市| 大余县| 德江县| 长武县| 镇安县|