![中國(guó)象棋博弈系統(tǒng)設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a0/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a01.gif)
![中國(guó)象棋博弈系統(tǒng)設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a0/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a02.gif)
![中國(guó)象棋博弈系統(tǒng)設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a0/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a03.gif)
![中國(guó)象棋博弈系統(tǒng)設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a0/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a04.gif)
![中國(guó)象棋博弈系統(tǒng)設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a0/3cb2bb7e-15c9-44c0-989c-ad201d4ee8a05.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中國(guó)象棋對(duì)弈系統(tǒng)XXXX【摘要】象棋是我們國(guó)家特有的一項(xiàng)棋類(lèi)益智游戲,中國(guó)象棋在中國(guó)有著三千多年的歷史,屬于二人對(duì)抗性游戲的一種。由于用具簡(jiǎn)單,趣味性強(qiáng),成為流行極為廣泛的棋藝活動(dòng)。隨著科技的不斷進(jìn)步,人們不再局限于現(xiàn)實(shí)中在棋盤(pán)上雙人面對(duì)面對(duì)弈,象棋的 “下法”也在改變。網(wǎng)絡(luò)上流傳的關(guān)于象棋的小游戲自然而然也就多了起來(lái)。從開(kāi)始的鍵盤(pán)控制走棋到之后的鼠標(biāo)控制走棋。人們對(duì)這個(gè)系統(tǒng)的需求越來(lái)越高了,現(xiàn)在人們已經(jīng)不滿足于手動(dòng)的控制進(jìn)行游戲了,隨著語(yǔ)音識(shí)別的出現(xiàn)人們更傾向與語(yǔ)音操作實(shí)現(xiàn)走棋了。語(yǔ)音是現(xiàn)下最先進(jìn)的操控方式,他可以不通過(guò)手動(dòng)控制就能夠?qū)崿F(xiàn)我們之前手動(dòng)操作的任務(wù),就如之前說(shuō)的能簡(jiǎn)單就簡(jiǎn)單。這是
2、我們現(xiàn)下的最終狀態(tài)了,能少動(dòng)手就少動(dòng)手,能不動(dòng)手就更好的理念之下我們著手了這次的中國(guó)象棋游戲編程,我們采用了Microsoft Speech SDK來(lái)實(shí)現(xiàn)了我們的語(yǔ)音操作功能來(lái)實(shí)現(xiàn)了最新的走棋功能?!娟P(guān)鍵詞】中國(guó)象棋;語(yǔ)音操控;打譜,悔棋;目錄1 概述11.1項(xiàng)目背景11.2系統(tǒng)簡(jiǎn)介11.3開(kāi)發(fā)環(huán)境11.4主要技術(shù)11.5小組分工12 需求分析22.1用戶分析22.1.1系統(tǒng)定位22.1.2用戶面臨的問(wèn)題22.1.3系統(tǒng)的運(yùn)行環(huán)境22.1.4時(shí)間約束與資源約束22.2用戶設(shè)計(jì)流程22.2.1用戶的觀察與分析22.2.2設(shè)計(jì)22.3任務(wù)分析43 概要設(shè)計(jì)63.1界面設(shè)計(jì)原則6
3、3.2設(shè)計(jì)模型63.3.系統(tǒng)描述93.4使用的交互技術(shù)104 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)114.1界面設(shè)計(jì):114.2棋盤(pán)的繪制:114.2.1豎線的繪制代碼:114.2.2橫線的繪制代碼:124.2.3兵處折線的繪制:124.2.4炮處折線的繪制:154.2.5楚河漢界的繪制:164.3棋子的規(guī)則實(shí)現(xiàn):174.3.1兵/卒的走棋規(guī)則:174.3.2車(chē)的走棋規(guī)則:194.3.3馬的走棋規(guī)則實(shí)現(xiàn):204.3.4炮的走棋規(guī)則實(shí)現(xiàn):214.3.5士的規(guī)則:224.3.6相的規(guī)則:234.3.7帥的規(guī)則:254.4悔棋:264.5播放/關(guān)閉背景音樂(lè):364.6殘局:374.7幫助與關(guān)于:395 可用性評(píng)估415.
4、1評(píng)估指標(biāo)體系415.1.1對(duì)整個(gè)系統(tǒng)的內(nèi)容功能界面等方面進(jìn)行評(píng)估415.1.2對(duì)整個(gè)系統(tǒng)運(yùn)行效率方面進(jìn)行評(píng)估415.1.3對(duì)整個(gè)系統(tǒng)給用戶的體驗(yàn)感滿意度方面進(jìn)行評(píng)估415.2具體步驟425.3結(jié)果分析426 結(jié)論436.1總結(jié):436.2不足之處:436.3心得體會(huì):431 概述1.1項(xiàng)目背景總所周知,隨著互聯(lián)網(wǎng)技術(shù)迅猛的發(fā)展,在各行各業(yè)得到了很廣泛的應(yīng)用。同時(shí),隨著時(shí)代的進(jìn)步,產(chǎn)業(yè)的發(fā)展,生活質(zhì)量的提高,人們的業(yè)余時(shí)間在很大方面的空閑了出來(lái),各種各樣建立在互聯(lián)網(wǎng)基礎(chǔ)上的游戲也是不斷的出現(xiàn),在人們空余的時(shí)間填充他們的生活,網(wǎng)絡(luò)游戲是一類(lèi),但是網(wǎng)絡(luò)游戲要具備有網(wǎng)絡(luò)的情況下進(jìn)行操作,在這種條件受
5、限的情況下,單機(jī)游戲的推廣更是休閑娛樂(lè)一族玩家們的主流,而且貼近生活所設(shè)計(jì)的單機(jī)游戲更是大眾的喜愛(ài)。中國(guó)象棋這類(lèi)的游戲第一,貼近生活,從小耳濡目染的游戲,更是深受大眾的喜愛(ài),成為許多人在平時(shí)閑暇時(shí)間娛樂(lè)消遣的一款游戲,為了滿足廣大玩家的需求,擴(kuò)大中國(guó)象棋的應(yīng)用范圍是針對(duì)目前社會(huì)形式可以進(jìn)行的一項(xiàng),所以針對(duì)網(wǎng)上象棋這類(lèi)游戲的開(kāi)發(fā)對(duì)于我們作為計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的學(xué)生,更是我們應(yīng)該是重點(diǎn)去面對(duì)的一項(xiàng)。1.2系統(tǒng)簡(jiǎn)介整個(gè)系統(tǒng)采用C#語(yǔ)言編寫(xiě),之所以使用C#,因?yàn)镃#在帶來(lái)對(duì)應(yīng)用程序的快速開(kāi)發(fā)能力的同時(shí),并沒(méi)有犧牲C與C+程序員所關(guān)心的各種特性。它忠實(shí)地繼承了C和C+的優(yōu)點(diǎn)。里面包括簡(jiǎn)潔的語(yǔ)法。精心地
6、面向?qū)ο笤O(shè)計(jì)、與Web的緊密結(jié)合、完整的安全性與錯(cuò)誤處理、版本處理技術(shù)、靈活性與兼容性等。在整個(gè)系統(tǒng)功能中有最基本的新建一個(gè)棋盤(pán),新建棋盤(pán)相當(dāng)于我們對(duì)弈時(shí)的重新開(kāi)局,如果中間出現(xiàn)勝負(fù),或者有人中途離場(chǎng)改變對(duì)弈對(duì)手等等,使用新建棋盤(pán)來(lái)解決。系統(tǒng)的走棋是最基本的對(duì)弈操作。系統(tǒng)的悔棋功能實(shí)現(xiàn)的是對(duì)上一個(gè)走棋步驟的訪問(wèn),使棋盤(pán)回到上一個(gè)走棋時(shí)的狀態(tài)。系統(tǒng)的語(yǔ)言識(shí)別包括對(duì)走棋中間落棋的語(yǔ)音播報(bào)等等。這幾個(gè)是系統(tǒng)最基本功能的實(shí)現(xiàn)。整個(gè)系統(tǒng)運(yùn)行過(guò)程較為流暢,可以實(shí)現(xiàn)基本的雙方對(duì)弈操作。1.3開(kāi)發(fā)環(huán)境計(jì)算機(jī)可使用WindowsXP/Windows7/Windows8系統(tǒng)運(yùn)行,這些系統(tǒng)都是個(gè)人電腦上最忌泵具備的
7、系統(tǒng),針對(duì)開(kāi)發(fā)過(guò)程中使用的軟件所支持的硬件條件,這些是開(kāi)發(fā)系統(tǒng)的必須前提。編碼使用Visual studio 2010軟件進(jìn)行編碼,Visual studio 2010是一個(gè)很強(qiáng)大的軟件,他是集合最基本的所有編程語(yǔ)言為一體的一個(gè)軟件,使用Visual studio 2010的最大意義在于它的簡(jiǎn)易操作性,和對(duì)錯(cuò)誤點(diǎn)的及時(shí)提示功能,Visual studio 2010讓整個(gè)系統(tǒng)在開(kāi)發(fā)的過(guò)程中少走了很多彎路,很多問(wèn)題漏洞都能很快的發(fā)現(xiàn)和解決。使用Panel繪畫(huà)軟件進(jìn)行棋盤(pán)的繪制,Panel繪畫(huà)軟件是一款針對(duì)性很強(qiáng)的軟件,對(duì)于繪畫(huà)這一塊有著相當(dāng)方便的操作界面,使得整個(gè)棋盤(pán)的繪制沒(méi)有花費(fèi)過(guò)多時(shí)間。1.4
8、主要技術(shù)主要使用了堆棧技術(shù),堆棧是一種抽象數(shù)據(jù)結(jié)構(gòu),其操作機(jī)理是后進(jìn)先出。當(dāng)你把新條目推進(jìn)堆棧時(shí),已經(jīng)在堆棧內(nèi)的任何條目都會(huì)壓到堆棧的深處。同樣的,把一個(gè)條目從堆棧移出則會(huì)讓堆棧內(nèi)的其他條目都向堆棧的頂部移動(dòng)。只有堆棧最頂端的條目能從堆棧中取出,條目離開(kāi)堆棧的順序和它們被推進(jìn)堆棧的順序一樣。類(lèi)的定義,類(lèi)實(shí)際上就是抽象的概念,把某些具有類(lèi)似或者相同屬性的東西歸整一起,類(lèi)的定義包括對(duì)系統(tǒng)中各個(gè)類(lèi)型的設(shè)置和命名,以及在類(lèi)定義下對(duì)他們功能進(jìn)行編寫(xiě)。Speech SDK的使用,這是一個(gè)微軟開(kāi)發(fā)的實(shí)現(xiàn)語(yǔ)音識(shí)別的語(yǔ)音引擎,利用它提供的接口,我們可以用任何語(yǔ)言編寫(xiě)一種語(yǔ)音識(shí)別軟件或者文字轉(zhuǎn)換聲音文件的軟件。1
9、.5小組分工我們小組主要分工如下:小組成員XX主要負(fù)責(zé)走棋,悔棋等功能代碼生成這一部分,對(duì)于這一部分應(yīng)該是整個(gè)開(kāi)發(fā)系統(tǒng)最困難的一部分,針對(duì)每一個(gè)步驟的構(gòu)思,緊密的連接性等等,都要從整體上面進(jìn)行考慮。小組成員XX主要負(fù)責(zé)棋盤(pán)的繪制和基本界面的設(shè)計(jì),這一塊屬于系統(tǒng)基本用戶界面設(shè)計(jì)模塊,對(duì)于整個(gè)界面的設(shè)計(jì)第一個(gè)要考慮用戶的慣性視覺(jué),怎么樣的界面和棋盤(pán)會(huì)讓人覺(jué)得貼近生活,而且對(duì)于一些細(xì)節(jié)的東西也要進(jìn)行考慮設(shè)計(jì)。小組成員XX主要負(fù)責(zé)檢驗(yàn)和修改系統(tǒng)和后期的文檔整合,檢驗(yàn)和修改系統(tǒng)漏洞需要通過(guò)在運(yùn)行測(cè)試中發(fā)現(xiàn)的問(wèn)題進(jìn)行改進(jìn),文檔的整合,要根據(jù)每個(gè)組員在整個(gè)系統(tǒng)編寫(xiě)過(guò)程中的一些想法和重要部分信息進(jìn)行整22 需
10、求分析2.1用戶分析2.1.1系統(tǒng)定位具有語(yǔ)音功能簡(jiǎn)單的單機(jī)象棋小游戲。2.1.2用戶面臨的問(wèn)題需要一個(gè)簡(jiǎn)單的雙人對(duì)弈棋局;需要我們實(shí)現(xiàn)悔棋功能和打譜的功能操作;需要我們實(shí)現(xiàn)簡(jiǎn)單的語(yǔ)音識(shí)別操作2.1.3系統(tǒng)的運(yùn)行環(huán)境用戶需求要在XP、WIN7、WIN8系統(tǒng)上運(yùn)行。2.1.4時(shí)間約束與資源約束系統(tǒng)需要在2015年6月22日前完成,需要用來(lái)完成象棋的簡(jiǎn)單操作功能。2.2用戶設(shè)計(jì)流程2.2.1用戶的觀察與分析這是一個(gè)中國(guó)象棋對(duì)弈系統(tǒng),可以采取人人單機(jī)對(duì)弈。需要有棋盤(pán)棋子的局面、鼠標(biāo)響應(yīng)控制棋子移動(dòng)、通過(guò)語(yǔ)音識(shí)別放置棋子。用戶可以根據(jù)自己的需要悔棋,用戶還可以選擇打譜,把對(duì)弈雙方之前的棋局一步一步還原
11、,還原時(shí)可以在將棋局動(dòng)態(tài)顯示并使用語(yǔ)音合成將每一步的操作度出來(lái)。2.2.2設(shè)計(jì)圖.1 初步系統(tǒng)結(jié)構(gòu)圖圖.2 中國(guó)象棋游戲活動(dòng)圖2.3任務(wù)分析(1)首先我們要繪制出整體的框架布局(2)開(kāi)始著手在Panel框體中間把棋盤(pán)的繪制寫(xiě)出來(lái),將棋盤(pán)繪制出來(lái)(3)在繪制好的棋盤(pán)中寫(xiě)入棋子的放置語(yǔ)句,將棋子擺放到繪制好了的棋盤(pán)上(4)實(shí)現(xiàn)棋局開(kāi)始行走后棋局能夠按照活動(dòng)圖的流程進(jìn)行(5)繼而在可以實(shí)現(xiàn)基本的走棋功能之后我們能夠在原本的基礎(chǔ)上實(shí)現(xiàn)悔棋功能(6)利用悔棋功能的功能棧來(lái)實(shí)現(xiàn)打譜的功能,利用下棋的文字信息來(lái)實(shí)現(xiàn)語(yǔ)音合成的讀譜功能。 圖.3 中國(guó)象棋用例圖 圖.4 中國(guó)象棋狀態(tài)圖 圖.5 中國(guó)象棋序列圖
12、圖.6 中國(guó)象棋活動(dòng)圖453 概要設(shè)計(jì)3.1界面設(shè)計(jì)原則用戶界面可以分為命令行界面、圖形界面和多通道用戶界面三種基本界面。 命令界面:這是第一人機(jī)界面,在我們的中國(guó)象棋對(duì)弈程序中有選擇棋子、復(fù)選棋子替換原先選中棋子、重新放置選中棋子、悔棋讓棋子回到上一個(gè)狀態(tài)位置。 圖形界面:可以看作是第二人機(jī)界面,是基于圖形方式的人機(jī)界面。由于引入了圖片的話可以大量的減少中國(guó)象棋系統(tǒng)中繪制中國(guó)象棋棋盤(pán)的龐大的代碼量,減少程序的代碼復(fù)雜度。 多通道用戶界面:進(jìn)一步綜合采用了語(yǔ)音、視覺(jué)、設(shè)備和交互技術(shù),使用戶利用多個(gè)通道的實(shí)現(xiàn)人機(jī)交互。更好的的捕捉到用戶的行為方式和動(dòng)作與想法。3.2設(shè)計(jì)模型 圖.7 中國(guó)象棋設(shè)置
13、LOTOS圖實(shí)現(xiàn)的中國(guó)象棋基本功能簡(jiǎn)化圖應(yīng)當(dāng)如上述LOTOS圖所示,形成一個(gè)簡(jiǎn)單的功能結(jié)構(gòu)模塊,在這個(gè)簡(jiǎn)述設(shè)計(jì)中我們可以看出我們實(shí)現(xiàn)的基礎(chǔ)功能都有下棋 悔棋和打譜三項(xiàng)功能模塊。圖.8 象棋棋盤(pán)設(shè)計(jì)模型圖.9 象棋棋子放置模型圖.10 象棋殘局模型3.3.系統(tǒng)描述我們的中國(guó)象棋系統(tǒng)中實(shí)現(xiàn)了棋盤(pán)和棋子的布局,我們的布局實(shí)現(xiàn)操作采用的是命令行界面設(shè)計(jì)的方式來(lái)實(shí)現(xiàn)的,通過(guò)代碼來(lái)繪制棋盤(pán),之后在采用循環(huán)語(yǔ)句將棋子一一擺放在棋盤(pán)上實(shí)現(xiàn)棋盤(pán)和棋子的布局。實(shí)現(xiàn)了棋盤(pán)和棋子的布局之后我們開(kāi)始著手棋局中棋子的規(guī)則的描述,通過(guò)定義類(lèi)定義出七種類(lèi)型的棋子,每種棋子有著自己的走棋規(guī)則,完善了規(guī)則之后我們就要考慮棋局的走
14、勢(shì)了。中國(guó)象棋是雙方對(duì)弈的一種游戲,一人一步。所以我們?cè)谥鹘缑嬷屑尤肓艘?guī)則,這就實(shí)現(xiàn)了基本的下棋功能了。能實(shí)現(xiàn)下棋之后就是簡(jiǎn)單的悔棋,和回放式的打譜功能。3.4使用的交互技術(shù)在中國(guó)象棋系統(tǒng)中我們使用了語(yǔ)音交互技術(shù)實(shí)現(xiàn)了語(yǔ)音合成功能。在下棋落子的時(shí)候會(huì)讀出象棋的行走路徑。 還使用到了筆交互技術(shù)來(lái)實(shí)現(xiàn)了棋盤(pán)和棋子的繪制。使用循環(huán)語(yǔ)句達(dá)成利用筆交互技術(shù)的使用來(lái)繪制基礎(chǔ)棋盤(pán)。使用基本交互技術(shù)來(lái)實(shí)現(xiàn)了背景音樂(lè)的播放棋子的定位選擇以及幫助信息等框架。4 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1界面設(shè)計(jì):使用panel控件(繪制棋盤(pán))、menuStrip控件(菜單欄)、axWindowsMediaPlayer(用于播放mp3背
15、景音樂(lè))、time控件(用于記錄紅黑各方的用時(shí))等。圖.11 初始界面設(shè)計(jì)4.2棋盤(pán)的繪制:4.2.1豎線的繪制代碼:(利用DrawLine函數(shù)繪制棋盤(pán)的豎向線以及紅黑雙方的交叉線,需注意豎線在楚河漢界處有中斷)#region 創(chuàng)建繪畫(huà)對(duì)象 #region 豎向線 /兩邊的豎向線 g.DrawLine(p, point.X, point.Y, point.X, point.Y + wei * 9); g.DrawLine(p, point.X + wei * 8, point.Y, point.X + wei * 8, point.Y + wei * 9); /上半邊的豎向線 for (int
16、 i = 1; i <= 7; i+) g.DrawLine(p, point.X + wei * i, point.Y, point.X + wei * i, point.Y + wei * 4); /下半邊的豎向線 for (int i = 1; i <= 7; i+) g.DrawLine(p, point.X + wei * i, point.Y + wei * 5, point.X + wei * i, point.Y + wei * 9); #endregion /兩邊的交叉線 g.DrawLine(p, point.X + wei * 3, point.Y, poin
17、t.X + wei * 5, point.Y + wei * 2); g.DrawLine(p, point.X + wei * 5, point.Y, point.X + wei * 3, point.Y + wei * 2); g.DrawLine(p, point.X + wei * 3, point.Y + wei * 9, point.X + wei * 5, point.Y + wei * 7); g.DrawLine(p, point.X + wei * 5, point.Y + wei * 9, point.X + wei * 3, point.X + wei * 7);4.2
18、.2橫線的繪制代碼:(利用DrawLine函數(shù)繪制棋盤(pán)的橫向線)#region 創(chuàng)建繪畫(huà)對(duì)象 int wei = 50; Point point = new Point(25, 25); Graphics g = this.panel1.CreateGraphics(); Pen p = new Pen(Color.Black, 2); /橫向線 for (int i = 0; i <= 9; i+) g.DrawLine(p, point.X, point.Y + wei * i, point.X + wei * 8, point.Y + wei * i); 4.2.3兵處折線的繪制:
19、(利用DrawLine函數(shù)繪制兵處的折線)#region "兵"的折線 for (int i = Convert.ToInt16(wei * 0.1); i < wei * 8; i += wei * 2) /右上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 2.7), point.X + i, point.Y + Convert.ToInt16(wei * 2.9); /右下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt1
20、6(wei * 3.1), point.X + i, point.Y + Convert.ToInt16(wei * 3.3); /右上角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 2.9), point.X + i + Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 2.9); /右下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 3.1), point.X +
21、 i + Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 3.1); /右上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 5.7), point.X + i, point.Y + Convert.ToInt16(wei * 5.9); /右下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.1), point.X + i, point.Y + Convert.T
22、oInt16(wei * 6.3); /右上角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 5.9), point.X + i + Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 5.9); /右下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.1), point.X + i + Convert.ToInt16(wei * 0.2), point.Y + Con
23、vert.ToInt16(wei * 6.1); for (int i = Convert.ToInt16(wei * 1.9); i < wei * 8; i += wei * 2) /左上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 2.7), point.X + i, point.Y + Convert.ToInt16(wei * 2.9); /左下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 3.1), point.X
24、 + i, point.Y + Convert.ToInt16(wei * 3.3); /左上角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 2.9), point.X + i - Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 2.9); /左下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 3.1), point.X + i - Convert.ToInt16(
25、wei * 0.2), point.Y + Convert.ToInt16(wei * 3.1); /左上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 5.7), point.X + i, point.Y + Convert.ToInt16(wei * 5.9); /左下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.1), point.X + i, point.Y + Convert.ToInt16(wei * 6.3); /左
26、上角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 5.9), point.X + i - Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 5.9); /左下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.1), point.X + i - Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 6.
27、1); #endregion4.2.4炮處折線的繪制:(利用DrawLine函數(shù)繪制炮處的折線)#region 炮的繪制線 for (int i = Convert.ToInt16(wei * 1.1); i < wei * 8; i += wei * 6) /上方右上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 1.7), point.X + i, point.Y + Convert.ToInt16(wei * 1.9); /上方右上角、橫線 g.DrawLine(p, point.X + i, poin
28、t.Y + Convert.ToInt16(wei * 1.9), point.X + i + Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 1.9); /上方右下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 2.1), point.X + i, point.Y + Convert.ToInt16(wei * 2.3); /上方右下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt
29、16(wei * 2.1), point.X + i + Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 2.1); /下方右上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.7), point.X + i, point.Y + Convert.ToInt16(wei * 6.9); /下方右上角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.9), poin
30、t.X + i + Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 6.9); /下方右下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 7.1), point.X + i, point.Y + Convert.ToInt16(wei * 7.3); /下方右下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 7.1), point.X + i + Convert.T
31、oInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 7.1); for (int i = Convert.ToInt16(wei * 0.9); i < wei * 8; i += wei * 6) /上方左上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 1.7), point.X + i, point.Y + Convert.ToInt16(wei * 1.9); /上方左上角、橫線 g.DrawLine(p, point.X + i, point.Y +
32、 Convert.ToInt16(wei * 1.9), point.X + i - Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 1.9); /上方左下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 2.1), point.X + i, point.Y + Convert.ToInt16(wei * 2.3); /上方左下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(we
33、i * 2.1), point.X + i - Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 2.1); /下方左下角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 7.1), point.X + i, point.Y + Convert.ToInt16(wei * 7.3); /下方左下角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 7.1), point.X +
34、 i - Convert.ToInt16(wei * 0.2), point.Y + Convert.ToInt16(wei * 7.1); /下方左上角、縱線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.7), point.X + i, point.Y + Convert.ToInt16(wei * 6.9); /下方左上角、橫線 g.DrawLine(p, point.X + i, point.Y + Convert.ToInt16(wei * 6.9), point.X + i - Convert.ToInt1
35、6(wei * 0.2), point.Y + Convert.ToInt16(wei * 6.9); #endregion4.2.5楚河漢界的繪制:在棋盤(pán)的中間添加楚河漢界,以及設(shè)置其基本屬性/"楚河","漢界"字 FontFamily fm = new FontFamily("宋體"); Font f = new Font(fm, 35); StringFormat sf = new StringFormat(); sf.Alignment = StringAlignment.Near; g.DrawString("楚河
36、", f, Brushes.Black, point.X + wei - 20, point.Y + wei * 4, sf); g.DrawString("漢界", f, Brushes.Black, point.X + wei * 5, point.Y + wei * 4, sf); /f.Dispose(); g.Dispose(); #endregion Point Grid = new Point(25, 25); IChessItem.IChess selectChess; IChessItem.Enums.ChessType _type = IChe
37、ssItem.Enums.ChessType.Black;圖.12 棋盤(pán)繪制效果圖4.3棋子的規(guī)則實(shí)現(xiàn):4.3.1兵/卒的走棋規(guī)則:移動(dòng)范圍:任何位置。移動(dòng)規(guī)則:每步只能向前移動(dòng)一點(diǎn)。過(guò)河以后,它便增加了向左右移動(dòng)的能力,兵不允許向后移動(dòng)。private Shuai shuai1; protected override bool LimitPoint(int x, int y) if (base.LimitPoint(x, y) /個(gè)性條件 /判斷哪一方 /判斷必須是向前行 /判斷是否過(guò)河 /過(guò)河以后,可以橫行 /未過(guò)河,只能直行 /直線行駛 if (x = GridX | y = GridY
38、) if (type = IChessItem.Enums.ChessType.Black) if (x = GridX) && (GridY - y) = -1)/沒(méi)過(guò)河之前不能橫走和倒走 return true; else if (y > 4) && (Math.Abs(GridX - x) = 1)/過(guò)河之后 return true; else return false; else if (type = IChessItem.Enums.ChessType.Red) if (x = GridX) && (y - GridY = -1)
39、/沒(méi)過(guò)河之前不能橫走和倒走 return true; else if (y < 5) && (Math.Abs(GridX - x) = 1)/過(guò)河之后 return true; else return false; /return base.LimitPoint(x, y); return false; /return true; /返回真假 else return false; private void InitializeComponent() System.ComponentModel.ComponentResourceManager resources = ne
40、w System.ComponentModel.ComponentResourceManager(typeof(Bing); this.shuai1 = new ChessItem.Shuai(); this.SuspendLayout(); / / shuai1 / this.shuai1.AutoSize = true; this.shuai1.BackColor = System.Drawing.SystemColors.Menu; this.shuai1.Font = new System.Drawing.Font("宋體", 30F, System.Drawing
41、.FontStyle.Bold); this.shuai1.ForeColor = System.Drawing.Color.Black; this.shuai1.GridX = 0; this.shuai1.GridY = 0; this.shuai1.Image = (System.Drawing.Image)(resources.GetObject("shuai1"); this.shuai1.ImageAlign = System.Drawing.ContentAlignment.TopLeft; this.shuai1.IsChecked = false; thi
42、s.shuai1.Location = new System.Drawing.Point(0, 0); this.shuai1.Name = "shuai1" this.shuai1.Size = new System.Drawing.Size(51, 51); this.shuai1.TabIndex = 0; this.shuai1.Text = "shuai1" this.shuai1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.shuai1.type = IChes
43、sItem.Enums.ChessType.Black; this.shuai1.Click += new System.EventHandler(this.shuai1_Click); this.ResumeLayout(false); 4.3.2車(chē)的走棋規(guī)則:移動(dòng)范圍:任何位置。移動(dòng)規(guī)則:可以水平或垂直方向移動(dòng)任意個(gè)無(wú)阻礙的點(diǎn)。public class Ju : ChessBase protected override bool LimitPoint(int x, int y) if (base.LimitPoint(x, y) /個(gè)性條件 int count = 0; Panel panel = (Panel)this.Parent; try count = Get
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年七年級(jí)歷史下冊(cè) 第16課 明朝的科技、建筑與文學(xué)說(shuō)課稿 新人教版
- 2025瓷磚買(mǎi)賣(mài)合同
- Unit 3 Family Matters Understanding ideas Like Father,Like Son 說(shuō)課稿 -2024-2025學(xué)年高中英語(yǔ)外研版(2019)必修第一冊(cè)
- 2024-2025學(xué)年高中語(yǔ)文 第三課 第4節(jié) 咬文嚼字-消滅錯(cuò)別字說(shuō)課稿2 新人教版選修《語(yǔ)言文字應(yīng)用》
- 21 古詩(shī)三首 第一課時(shí) 說(shuō)課稿-2024-2025學(xué)年統(tǒng)編版語(yǔ)文四年級(jí)上冊(cè)
- 2025購(gòu)銷(xiāo)合同范本
- 森林安全監(jiān)管方案
- 企業(yè)派駐合同范例
- 網(wǎng)狀吊索拱橋施工方案
- 黔東南綠化草坪施工方案
- 慢性腎衰竭的護(hù)理課件
- 2024-2025學(xué)年河南省鄭州市高二上期期末考試數(shù)學(xué)試卷(含答案)
- 甲流乙流培訓(xùn)課件
- 兒科學(xué)川崎病說(shuō)課
- 2025《省建設(shè)工程檔案移交合同書(shū)(責(zé)任書(shū))》
- 2025年云南農(nóng)墾集團(tuán)總部春季社會(huì)招聘(9人)管理單位筆試遴選500模擬題附帶答案詳解
- 《石油鉆井基本知識(shí)》課件
- 電力兩票培訓(xùn)
- TCCEAS001-2022建設(shè)項(xiàng)目工程總承包計(jì)價(jià)規(guī)范
- 四百字作文格子稿紙(可打印編輯)
- 新概念二冊(cè)課文電子版
評(píng)論
0/150
提交評(píng)論