freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

vc象棋游戲--智能中國(guó)象棋系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-05-12 18:12本頁(yè)面

【導(dǎo)讀】智能中國(guó)象棋系統(tǒng)在此基礎(chǔ)上實(shí)現(xiàn)人與機(jī)器的對(duì)弈,突破了以往傳統(tǒng)象棋游。戲只能人與人對(duì)戰(zhàn)的限制,使中國(guó)象棋這一古老的游戲形式煥發(fā)出蓬勃朝氣。放棋譜以及挑戰(zhàn)英雄榜等功能模塊。人人對(duì)戰(zhàn)規(guī)則明確,包含了中國(guó)象棋所有的著法;作和播放棋譜模塊容易操作,方便學(xué)習(xí);挑戰(zhàn)英雄榜則為象棋游戲增加了樂(lè)趣。棋譜不易保存、不易演示等問(wèn)題。

  

【正文】 h。 } public int getHeight() { return height。 } public String getName() { return name。 } public Color 獲取棋子顏色 () { return foreColor。 } public void set棋子類(lèi)別 (String 類(lèi)別 ) { 顏色類(lèi)別 = 類(lèi)別 。 } public String 棋子類(lèi)別 () { return 顏色類(lèi)別 。 } } 然后在棋盤(pán)類(lèi)( ChessBoard)里定義棋盤(pán)的表示、棋子的類(lèi)別、顏色以及棋子在棋盤(pán)上的位置表示: /*棋盤(pán)的表示 */ public void paintComponent(Graphics g) { (g)。 for(int j=1。j=y 軸長(zhǎng) 。j++) { (point[1][j].x,point[1][j].y,point[x 軸長(zhǎng) ][j].x,point[x 軸長(zhǎng) ][j].y)。 } for(int i=1。i=x 軸長(zhǎng) 。i++) { if(i!=1amp。amp。i!=x 軸長(zhǎng) ) { (point[i][1].x,point[i][1].y,point[i][y 軸長(zhǎng) 5].x,point[i][y 軸長(zhǎng)5].y)。 (point[i][y 軸長(zhǎng) 4].x,point[i][y 軸長(zhǎng) 4].y,point[i][y 軸長(zhǎng) ].x,point[i][y 軸長(zhǎng) ].y)。 } else { (point[i][1].x,point[i][1].y,point[i][y 軸長(zhǎng) ].x,point[i][y 軸長(zhǎng) ].y)。 } } (point[4][1].x,point[4][1].y,point[6][3].x,point[6][3].y)。 (point[6][1].x,point[6][1].y,point[4][3].x,point[4][3].y)。 (point[4][8].x,point[4][8].y,point[6][y 軸長(zhǎng) ].x,point[6][y 軸長(zhǎng) ].y)。 (point[4][y 軸長(zhǎng) ].x,point[4][y 軸長(zhǎng) ].y,point[6][8].x,point[6][8].y)。 for(int i=1。i=x 軸長(zhǎng) 。i++) { (+i,i*unitWidth,unitHeight/2)。 } int j=1。 for(char c=39。A39。c=39。J39。c++) { (+c,unitWidth/4,j*unitHeight)。 j++。 } } /*棋子的類(lèi)別 */ public String 紅方顏色 =紅色 ,黑方顏色 =黑色 。 ChessPiece 紅車(chē) 1,紅車(chē) 2,紅馬 1,紅馬 2,紅相 1,紅相 2,紅帥 ,紅士 1,紅士 2, 紅兵 1,紅兵 2,紅兵 3,紅兵 4,紅兵 5,紅炮 1,紅炮 2。 ChessPiece 黑車(chē) 1,黑車(chē) 2,黑馬 1,黑馬 2,黑將 ,黑士 1,黑士 2, 黑卒 1,黑卒 2,黑卒 3,黑卒 4,黑卒 5,黑象 1,黑象 2,黑炮 1,黑炮 2。 通過(guò)以上兩段本系統(tǒng)就實(shí)現(xiàn)了棋盤(pán)和棋子的定義,然后通過(guò)下面的方法實(shí)現(xiàn)棋子在棋盤(pán)上的表示: public ChessBoard(int w,int h,int r,int c) { setLayout(null)。 addMouseListener(this)。 addMouseMotionListener(this)。 Color bc=getBackground()。 unitWidth=w。 unitHeight=h。 x 軸長(zhǎng) =r。 y 軸長(zhǎng) =c。 ...... 紅車(chē) 1=new ChessPiece(車(chē) ,bc,w4,h4,this)。 紅車(chē) 棋子類(lèi)別 (紅方顏色 )。 紅車(chē) 2=new ChessPiece(車(chē) ,bc,w4,h4,this)。 紅車(chē) 棋子類(lèi)別 (紅方顏色 )。 ...... point[1][10].setPiece(紅車(chē) 1,this)。 point[2][10].setPiece(紅馬 1,this)。 ...... } 實(shí)現(xiàn)界面后,就 可以在此基礎(chǔ)上實(shí)現(xiàn)象棋系統(tǒng)的其它功能。 對(duì)弈功能的實(shí)現(xiàn) 對(duì)弈是用戶(hù)對(duì)象棋游戲最基本的需求,本系統(tǒng)的對(duì)弈功能包括人人對(duì)戰(zhàn)和人機(jī)對(duì)戰(zhàn)。人人對(duì)戰(zhàn)功能的實(shí)現(xiàn)其實(shí)就是一系列象棋規(guī)則的集中體現(xiàn),譬如“馬走日”、“相走田”、“炮打隔山”等。本系統(tǒng)通過(guò)對(duì)象棋規(guī)則的定義以及圖形化的棋子如何在棋盤(pán)中消失來(lái)實(shí)現(xiàn)人人對(duì)戰(zhàn)這一功能: public boolean movePieceRule(ChessPiece piece,int startI,int startJ,int endI,int endJ) { =piece。 ...... int minI=(startI,endI)。 int maxI=(startI,endI)。 ...... boolean 可否走棋 =false。 if(().equals(車(chē) ))//車(chē)的走棋規(guī)則 { if(startI==endI) { int j=0。 for(j=minJ+1。j=maxJ1。j++) { if(point[startI][j].isPiece()) { 可否走棋 =false。 break。 } } if(j==maxJ) { 可否走棋 =true。 } } else if(startJ==endJ) { int i=0。 for(i=minI+1。i=maxI1。i++) { if(point[i][startJ].isPiece()) { 可否走棋 =false。 break。 } } if(i==maxI) { 可否走棋 =true。 } } else { 可否走棋 =false。 } } ...... } 如何監(jiān)視棋子在棋盤(pán)中移動(dòng)和消失的實(shí)現(xiàn): public void mousePressed(MouseEvent e)//按下鼠標(biāo)時(shí)發(fā)生事件的情況 {...... } public void mouseDragged(MouseEvent e)//拖動(dòng)棋子移動(dòng)時(shí)發(fā)生的事件 { ...... } public void mouseReleased(MouseEvent e)//釋放鼠標(biāo)時(shí)發(fā)生的事件 { { (pieceRemoved) 。 if( ().equals(紅方顏色 )) { } if( ().equals(黑方顏色 )) { } (piece,startI,startJ,m,n) 。 (沒(méi)吃棋子 )。 } 系統(tǒng)的最終目的是要實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn),人機(jī)對(duì)戰(zhàn)的核心是使電腦具有人工智能。本文通過(guò) αβ剪枝算法使電腦生成有效的著法來(lái)實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn)功能: public ListMotion generatePossibleMoves()//有效著法的生成 { ListMotion ret = new ArrayListMotion()。 for (int x = 0。 x 9。 x++) { for (int y = 0。 y 10。 y++) { int ChessMan = ChessBoard[x][y]。 if (ChessMan != 0) { if (!isRedGo amp。amp。 isRed(ChessMan)) { continue。 } if (isRedGo amp。amp。 !isRed(ChessMan)) { continue。 } switch (ChessMan) { case 7: if (isValidMove(x, y, x, y + 1)) { (new Motion(ChessMan, x, y, x, y + 1, 0))。 } if (isValidMove(x, y, x, y 1)) {
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1