五子棋游戲設(shè)計(jì)論文_第1頁(yè)
五子棋游戲設(shè)計(jì)論文_第2頁(yè)
五子棋游戲設(shè)計(jì)論文_第3頁(yè)
五子棋游戲設(shè)計(jì)論文_第4頁(yè)
五子棋游戲設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、天津商業(yè)大學(xué)寶德學(xué)院Java程序設(shè)計(jì)課程報(bào)告201201學(xué)年第二學(xué)期題目五子棋游戲的設(shè)計(jì)與開(kāi)發(fā)學(xué)號(hào)學(xué)生姓名所在專業(yè)所在班級(jí)目 錄1 引言11.1 設(shè)計(jì)目的11.2 設(shè)計(jì)說(shuō)明22 總體設(shè)計(jì)32.1 功能模塊設(shè)計(jì)32.2 流程圖設(shè)計(jì)43 測(cè)試與運(yùn)行53.1程序測(cè)試53.2程序運(yùn)行54 總結(jié)10參考文獻(xiàn)111 引言五子棋是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱之為連珠,英譯為Renju,英文稱之為Gobang或FIR(Five in a Row 的縮寫(xiě)),亦有連五子、五子連、串珠、五目、五目碰、五格等多種稱謂。五子棋起源于古代中國(guó),發(fā)展于日本,風(fēng)靡于歐洲。對(duì)于它與圍棋的關(guān)系有兩種說(shuō)法,一

2、說(shuō)早于圍棋,早在 “ 堯造圍棋 ” 之前,民間就已有五子棋游戲;一說(shuō)源于圍棋,是圍棋發(fā)展的一個(gè)分支。在中國(guó)的文化里,倍受人們的青睞。五子棋是一項(xiàng)老少皆宜、簡(jiǎn)單易學(xué)的棋盤(pán)游戲。深受大家喜愛(ài)。本次開(kāi)發(fā)的是一個(gè)五子棋游戲,這是一個(gè)綜合性的題目,可以對(duì)Java語(yǔ)言中的各項(xiàng)功能有更好的理解和使用,通過(guò)具體的程序來(lái)加深對(duì)Java語(yǔ)言的掌握,提高自己的編程水平,為以后的工作打下一定的基礎(chǔ)。11 設(shè)計(jì)目的五子棋是一種兩人對(duì)弈的純策略型棋類游戲,是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一。發(fā)展于日本,流行于歐美。容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。本文

3、使用Java語(yǔ)言編寫(xiě)一個(gè)五子棋游戲。具體功能如下:(1)五子棋游戲分為人機(jī)對(duì)弈和人人對(duì)弈兩種模式。單擊游戲菜單可以在模式中選擇人機(jī)對(duì)弈或人人對(duì)弈,在棋盤(pán)下選擇棋盤(pán)大小,開(kāi)局和退出。(2)在視圖菜單下可以選擇Metal、Motif、Windows三種棋盤(pán)背景視圖,(3)在幫助菜單下單擊關(guān)于彈出對(duì)話框“五子棋游戲測(cè)試版本”,單擊確定進(jìn)入測(cè)試版。(4) 選擇棋盤(pán)大小后將出現(xiàn)相應(yīng)大小的五子棋區(qū)域,用戶使用鼠標(biāo)左鍵單擊棋盤(pán)中任何一個(gè)網(wǎng)格交點(diǎn)下棋。 (5)無(wú)論是橫著、豎著、斜著,只要五個(gè)一樣顏色的棋子連到一起就是游戲勝利。(6) 程序會(huì)自動(dòng)判斷輸贏。五子棋勝利后,程序彈出“你贏了,好厲害!”的對(duì)話框。五子

4、棋輸棋后,程序彈出“你贏了,好厲害!”的對(duì)話框。12 設(shè)計(jì)說(shuō)明本程序采用Java程序設(shè)計(jì)語(yǔ)言,在Eclipse平臺(tái)下編輯、編譯與調(diào)試。具體程序由2人組成的小組開(kāi)發(fā)而成。小組成員的具體分工如表1所示:表1各成員分工表成員名稱完成的主要工作程序設(shè)計(jì)課程報(bào)告* *負(fù)責(zé)整個(gè)程序前期的需求分析和整體功能的架構(gòu)程序中棋盤(pán)的布局設(shè)計(jì)程序編碼程序后期的測(cè)試與運(yùn)行報(bào)告的第2章、第3章報(bào)告的第1章目錄、總結(jié)和參考文獻(xiàn)的整理報(bào)告后期的格式設(shè)置2 總體設(shè)計(jì)21 功能模塊設(shè)計(jì)本程序需實(shí)現(xiàn)的主要功能有:(1) 用戶可以任意選擇人機(jī)對(duì)弈或人人對(duì)弈;(2) 用戶可以任意選擇棋盤(pán)大小;(3) 具有三種不同視圖,用戶可以隨意選擇

5、喜歡的棋盤(pán)背景;(4) 自動(dòng)判斷輸贏。程序的總體功能如圖1所示:圖1 總體功能圖 2. 2 流程圖設(shè)計(jì)程序總體流程如圖2所示:圖2 總體流程圖3 測(cè)試與運(yùn)行31 程序測(cè)試在程序代碼基本完成后,經(jīng)過(guò)不斷的調(diào)試與修改,最后測(cè)試本次所設(shè)計(jì)的五子棋游戲能夠正常運(yùn)行,在基本功能與畫(huà)面上與一般的五子棋游戲沒(méi)有太大差別,沒(méi)有出現(xiàn)明顯的錯(cuò)誤和漏洞,但是在一些細(xì)節(jié)方面仍然需要完善,比如在游戲中可以加入一些不同語(yǔ)音的提示,在游戲完成和失敗的時(shí)候可以彈出一些小的Flash動(dòng)畫(huà)等??偟膩?lái)說(shuō)本次設(shè)計(jì)在功能上已經(jīng)基本達(dá)到要求,其他細(xì)節(jié)方面有待以后完善。32 程序運(yùn)行程序運(yùn)行主界面如圖3所示:圖3 程序主界面程序游戲菜單如

6、圖4所示:圖4 程序主菜單程序視圖菜單如圖5所示:圖5 五子棋視圖菜單關(guān)于五子棋,如圖6所示:圖6 關(guān)于五子棋各種視圖效果如圖7所示:圖7 Motif視圖圖13 Motif視圖圖13 Windows視圖5總結(jié)一個(gè)編程語(yǔ)言最強(qiáng)大的地方不是它是容易學(xué),或者難學(xué),而是它擁有一個(gè)強(qiáng)大的庫(kù)。JAVA是一個(gè)完全面向?qū)ο蟮恼Z(yǔ)言,JAVA的命名規(guī)則是很容易讓人接受的。而且容易被編程人員記住。經(jīng)過(guò)實(shí)踐訓(xùn)練,對(duì)JAVA的綜合應(yīng)用能力有了較大的提高,另外對(duì)JAVA的特點(diǎn)有了更深層次的認(rèn)識(shí)。這次實(shí)踐中使用的代碼雖然不長(zhǎng),但類與類之間也有很強(qiáng)的邏輯關(guān)系,這就是面向?qū)ο笳Z(yǔ)言的最大優(yōu)勢(shì),這樣可使我們更輕松的運(yùn)用JAVA。通

7、過(guò)此次課程設(shè)計(jì),將我本學(xué)期所學(xué)的JAVA知識(shí)得到鞏固和應(yīng)用,在設(shè)計(jì)的過(guò)程中我遇到了很到問(wèn)題,不過(guò)在老師和同學(xué)們的幫助和自己的思考下還是很好的完成了。這此課程設(shè)計(jì)還讓我懂得了寫(xiě)程序不能閉門(mén)造車,要努力拓寬知識(shí)面,開(kāi)闊視野,拓展思維。它還讓我學(xué)會(huì)了在網(wǎng)上查閱那些無(wú)限的資料。通過(guò)對(duì)此課題的開(kāi)發(fā),使我對(duì)用Eclipse開(kāi)發(fā)平臺(tái)有了一個(gè)比較清楚的認(rèn)識(shí),體會(huì)到理論和實(shí)踐的重要性。由于自己的分析設(shè)計(jì)和程序經(jīng)驗(yàn)不足,該系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中,還有許多沒(méi)有完善的地方,比如用戶界面設(shè)計(jì)不夠美觀等多方面問(wèn)題,這些都有待進(jìn)一步完善和提高。經(jīng)過(guò)編寫(xiě)這個(gè)五子棋游戲,我認(rèn)識(shí)到應(yīng)該注意細(xì)節(jié)問(wèn)題,雖然是很小的問(wèn)題,但可以提高自己

8、編程的能力,而且還可以培養(yǎng)自己編程的嚴(yán)謹(jǐn)性,同時(shí)還可以為以后的編程積累經(jīng)驗(yàn)。編寫(xiě)完這個(gè)五子棋游戲,我發(fā)現(xiàn)自己有很多的不足,我想如果讓我來(lái)單獨(dú)來(lái)編寫(xiě)這個(gè)游戲,我感覺(jué)很吃力,因?yàn)檫@個(gè)游戲涉及到好多算法。感觸最深的就是我們真的要扎扎實(shí)實(shí)的打基礎(chǔ)!并且我感覺(jué)到只要我們自己肯下功夫?qū)W習(xí),我們也可以做出很好的東西,不需要每次都抄襲別人的,只有自己的才是最珍貴的!通過(guò)該課程設(shè)計(jì),全面系統(tǒng)的理解了程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過(guò)的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過(guò)自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)理論知識(shí)的理解。現(xiàn)在通過(guò)自己動(dòng)手做實(shí)驗(yàn),從

9、實(shí)踐上認(rèn)識(shí)了操作系統(tǒng)是如何處理命令的,課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì)。 28參考文獻(xiàn)1 陳國(guó)君Java程序設(shè)計(jì)基礎(chǔ)(第4版)M清華大學(xué)出版社,20132 王國(guó)全等Java程序設(shè)計(jì)與應(yīng)用開(kāi)發(fā)M北京:清華大學(xué)出版社,20093 洪維恩Java2面向?qū)ο蟪绦蛟O(shè)計(jì)M北京:中國(guó)鐵道出版社,20054 教學(xué)視頻5 各種百度/Java編程:五子棋游戲源代碼/導(dǎo)入所需要的包import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;import java.io.PrintStream;impo

10、rt javax.swing.JComponent;import javax.swing.JPanel;/*main方法創(chuàng)建了ChessFrame類的一個(gè)實(shí)例對(duì)象(cf),*并啟動(dòng)屏幕顯示顯示該實(shí)例對(duì)象。*/public class MyChessFrame public static void main(String args) ChessFrame cf = new ChessFrame(); cf.show(); /*類ChessFrame主要功能是創(chuàng)建五子棋游戲主窗體和菜單*/class ChessFrame extends JFrame implements ActionListen

11、er private String strsize="20x15","30x20","40x30" private String strmode="人機(jī)對(duì)弈","人人對(duì)弈" public static boolean iscomputer=true,checkcomputer=true; private int width,height; private ChessModel cm; private MainPanel mp; /構(gòu)造五子棋游戲的主窗體 public ChessFrame() t

12、his.setTitle("五子棋游戲");/設(shè)置窗口標(biāo)題為"五子棋游戲" cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent(); MapSize(20,15);/默認(rèn)棋盤(pán)的大小為20*15 JMenuBar mbar = new JMenuB

13、ar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戲");/創(chuàng)建"游戲"菜單gameMenu mbar.add(makeMenu(gameMenu, new Object "開(kāi)局", "棋盤(pán)","模式", null, "退出" , this); JMenu lookMenu =new JMenu("視圖");/創(chuàng)建"視圖"菜單gameMenu mbar.add(make

14、Menu(lookMenu,new Object "Metal","Motif","Windows" ,this);/ JMenu helpMenu = new JMenu("幫助");/創(chuàng)建"幫助"菜單helpMenu mbar.add(makeMenu(helpMenu, new Object "關(guān)于" , this);/構(gòu)造五子棋游戲的主菜單public JMenu makeMenu(Object parent, Object items, Object target)

15、 JMenu m = null; if(parent instanceof JMenu) m = (JMenu)parent; else if(parent instanceof String) m = new JMenu(String)parent); else return null; for(int i = 0; i < items.length; i+) if(itemsi = null) m.addSeparator(); else if(itemsi = "棋盤(pán)") JMenu jm = new JMenu("棋盤(pán)"); ButtonG

16、roup group=new ButtonGroup(); JRadioButtonMenuItem rmenu; for (int j=0;j<strsize.length;j+) rmenu=makeRadioButtonMenuItem(strsizej,target); if (j=0) rmenu.setSelected(true); jm.add(rmenu); group.add(rmenu); m.add(jm); else if(itemsi = "模式") JMenu jm = new JMenu("模式"); ButtonGr

17、oup group=new ButtonGroup(); JRadioButtonMenuItem rmenu; for (int h=0;h<strmode.length;h+) rmenu=makeRadioButtonMenuItem(strmodeh,target); if(h=0) rmenu.setSelected(true); jm.add(rmenu); group.add(rmenu); m.add(jm); else m.add(makeMenuItem(itemsi, target); return m;/構(gòu)造五子棋游戲的菜單項(xiàng)public JMenuItem ma

18、keMenuItem(Object item, Object target) JMenuItem r = null; if(item instanceof String) r = new JMenuItem(String)item); else if(item instanceof JMenuItem) r = (JMenuItem)item; else return null; if(target instanceof ActionListener) r.addActionListener(ActionListener)target); return r;/構(gòu)造五子棋游戲的單選按鈕式菜單項(xiàng)p

19、ublic JRadioButtonMenuItem makeRadioButtonMenuItem( Object item, Object target) JRadioButtonMenuItem r = null; if(item instanceof String) r = new JRadioButtonMenuItem(String)item); else if(item instanceof JRadioButtonMenuItem) r = (JRadioButtonMenuItem)item; else return null; if(target instanceof Ac

20、tionListener) r.addActionListener(ActionListener)target); return r; public void MapSize(int w,int h) setSize(w * 20+50 , h * 20+100 ); if(this.checkcomputer) this.iscomputer=true; else this.iscomputer=false; mp.setModel(cm); mp.repaint(); public boolean getiscomputer() return this.iscomputer; public

21、 void restart() int modeChess = cm.getModeChess(); if(modeChess <= 3 && modeChess >= 1) cm = new ChessModel(modeChess); MapSize(cm.getWidth(),cm.getHeight(); else System.out.println("u81EAu5B9Au4E49"); public void actionPerformed(ActionEvent e) String arg=e.getActionCommand()

22、; try if (arg.equals("Windows") UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); else if(arg.equals("Motif") UIManager.setLookAndFeel( "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); else UIManager.setLookAndFeel( "javax

23、.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities.updateComponentTreeUI(this); catch(Exception ee) if(arg.equals("20x15") this.width=20; this.height=15; cm=new ChessModel(1); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("30x20&quo

24、t;) this.width=30; this.height=20; cm=new ChessModel(2); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("40x30") this.width=40; this.height=30; cm=new ChessModel(3); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(

25、arg.equals("人機(jī)對(duì)弈") this.checkcomputer=true; this.iscomputer=true; cm=new ChessModel(cm.getModeChess(); MapSize(cm.getWidth(),cm.getHeight(); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("人人對(duì)弈") this.checkcomputer=false; this.iscomputer=false; cm=new ChessModel(cm.get

26、ModeChess(); MapSize(cm.getWidth(),cm.getHeight(); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("開(kāi)局") restart(); if(arg.equals("關(guān)于") JOptionPane.showMessageDialog(this, "五子棋游戲測(cè)試版本", "關(guān)于", 0); if(arg.equals("退出") System.exit(0);/*類ChessMo

27、del實(shí)現(xiàn)了整個(gè)五子棋程序算法的核心*/class ChessModel /棋盤(pán)的寬度、高度、棋盤(pán)的模式(如20×15)private int width,height,modeChess;/棋盤(pán)方格的橫向、縱向坐標(biāo)private int x=0,y=0;/棋盤(pán)方格的橫向、縱向坐標(biāo)所對(duì)應(yīng)的棋子顏色,/數(shù)組arrMapShow只有3個(gè)值:1,2,3,-5,/其中1代表該棋盤(pán)方格上下的棋子為黑子,/2代表該棋盤(pán)方格上下的棋子為白子,/3代表為該棋盤(pán)方格上沒(méi)有棋子,/-5代表該棋盤(pán)方格不能夠下棋子private int arrMapShow;/交換棋手的標(biāo)識(shí),棋盤(pán)方格上是否有棋子的標(biāo)識(shí)符p

28、rivate boolean isOdd,isExist;public ChessModel() /該構(gòu)造方法根據(jù)不同的棋盤(pán)模式(modeChess)來(lái)構(gòu)建對(duì)應(yīng)大小的棋盤(pán)public ChessModel(int modeChess) this.isOdd=true; if(modeChess = 1) PanelInit(20, 15, modeChess); if(modeChess = 2) PanelInit(30, 20, modeChess); if(modeChess = 3) PanelInit(40, 30, modeChess); /按照棋盤(pán)模式構(gòu)建棋盤(pán)大小private

29、void PanelInit(int width, int height, int modeChess) this.width = width; this.height = height; this.modeChess = modeChess; arrMapShow = new intwidth+1height+1; for(int i = 0; i <= width; i+) for(int j = 0; j <= height; j+) arrMapShowij = -5; /獲取是否交換棋手的標(biāo)識(shí)符public boolean getisOdd() return this.i

30、sOdd;/設(shè)置交換棋手的標(biāo)識(shí)符public void setisOdd(boolean isodd) if(isodd) this.isOdd=true; else this.isOdd=false;/獲取某棋盤(pán)方格是否有棋子的標(biāo)識(shí)值public boolean getisExist() return this.isExist;/獲取棋盤(pán)寬度public int getWidth() return this.width;/獲取棋盤(pán)高度public int getHeight() return this.height;/獲取棋盤(pán)模式public int getModeChess() retur

31、n this.modeChess;/獲取棋盤(pán)方格上棋子的信息public int getarrMapShow() return arrMapShow;/判斷下子的橫向、縱向坐標(biāo)是否越界private boolean badxy(int x, int y) if(x >= width+20 | x < 0) return true; return y >= height+20 | y < 0;/計(jì)算棋盤(pán)上某一方格上八個(gè)方向棋子的最大值,/這八個(gè)方向分別是:左、右、上、下、左上、左下、右上、右下public boolean chessExist(int i,int j) i

32、f(this.arrMapShowij=1 | this.arrMapShowij=2) return true; return false;/判斷該坐標(biāo)位置是否可下棋子public void readyplay(int x,int y) if(badxy(x,y) return; if (chessExist(x,y) return; this.arrMapShowxy=3;/在該坐標(biāo)位置下棋子public void play(int x,int y) if(badxy(x,y) return; if(chessExist(x,y) this.isExist=true; return; el

33、se this.isExist=false; if(getisOdd() setisOdd(false); this.arrMapShowxy=1; else setisOdd(true); this.arrMapShowxy=2; /計(jì)算機(jī)走棋/*說(shuō)明:用窮舉法判斷每一個(gè)坐標(biāo)點(diǎn)的四個(gè)方向的的最大棋子數(shù),*最后得出棋子數(shù)最大值的坐標(biāo),下子*/public void computerDo(int width,int height) int max_black,max_white,max_temp,max=0; setisOdd(true); System.out.println("計(jì)算

34、機(jī)走棋 ."); for(int i = 0; i <= width; i+) for(int j = 0; j <= height; j+) if(!chessExist(i,j)/算法判斷是否下子 max_white=checkMax(i,j,2);/判斷白子的最大值 max_black=checkMax(i,j,1);/判斷黑子的最大值 max_temp=Math.max(max_white,max_black); if(max_temp>max) max=max_temp; this.x=i; this.y=j; setX(this.x); setY(thi

35、s.y); this.arrMapShowthis.xthis.y=2;/記錄電腦下子后的橫向坐標(biāo)public void setX(int x) this.x=x;/記錄電腦下子后的縱向坐標(biāo)public void setY(int y) this.y=y;/獲取電腦下子的橫向坐標(biāo)public int getX() return this.x;/獲取電腦下子的縱向坐標(biāo)public int getY() return this.y;/計(jì)算棋盤(pán)上某一方格上八個(gè)方向棋子的最大值,/這八個(gè)方向分別是:左、右、上、下、左上、左下、右上、右下public int checkMax(int x, int y,

36、int black_or_white) int num=0,max_num,max_temp=0; int x_temp=x,y_temp=y; int x_temp1=x_temp,y_temp1=y_temp; /judge right for(int i=1;i<5;i+) x_temp1+=1; if(x_temp1>this.width) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; /judge left x_temp1=x_temp; for(int i=1;i<

37、;5;i+) x_temp1-=1; if(x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num<5) max_temp=num; /judge up x_temp1=x_temp; y_temp1=y_temp; num=0; for(int i=1;i<5;i+) y_temp1-=1; if(y_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+;

38、else break; /judge down y_temp1=y_temp; for(int i=1;i<5;i+) y_temp1+=1; if(y_temp1>this.height) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num>max_temp&&num<5) max_temp=num; /judge left_up x_temp1=x_temp; y_temp1=y_temp; num=0; for(int i=1;i<5

39、;i+) x_temp1-=1; y_temp1-=1; if(y_temp1<0 | x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; /judge right_down x_temp1=x_temp; y_temp1=y_temp; for(int i=1;i<5;i+) x_temp1+=1; y_temp1+=1; if(y_temp1>this.height | x_temp1>this.width) break; if(this.ar

40、rMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num>max_temp&&num<5) max_temp=num; /judge right_up x_temp1=x_temp; y_temp1=y_temp; num=0; for(int i=1;i<5;i+) x_temp1+=1; y_temp1-=1; if(y_temp1<0 | x_temp1>this.width) break; if(this.arrMapShowx_temp1y_temp1=black_or

41、_white) num+; else break; /judge left_down x_temp1=x_temp; y_temp1=y_temp; for(int i=1;i<5;i+) x_temp1-=1; y_temp1+=1; if(y_temp1>this.height | x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num>max_temp&&num<5) max_temp=num; max_num=ma

42、x_temp; return max_num;/判斷勝負(fù)public boolean judgeSuccess(int x,int y,boolean isodd) int num=1; int arrvalue; int x_temp=x,y_temp=y; if(isodd) arrvalue=2; else arrvalue=1; int x_temp1=x_temp,y_temp1=y_temp; /判斷右邊 for(int i=1;i<6;i+) x_temp1+=1; if(x_temp1>this.width) break; if(this.arrMapShowx_t

43、emp1y_temp1=arrvalue) num+; else break; /判斷左邊 x_temp1=x_temp; for(int i=1;i<6;i+) x_temp1-=1; if(x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=arrvalue) num+; else break; if(num=5) return true; /判斷上方 x_temp1=x_temp; y_temp1=y_temp; num=1; for(int i=1;i<6;i+) y_temp1-=1; if(y_temp1<0

44、) break; if(this.arrMapShowx_temp1y_temp1=arrvalue) num+; else break; /判斷下方 y_temp1=y_temp; for(int i=1;i<6;i+) y_temp1+=1; if(y_temp1>this.height) break; if(this.arrMapShowx_temp1y_temp1=arrvalue) num+; else break; if(num=5) return true; /判斷左上 x_temp1=x_temp; y_temp1=y_temp; num=1; for(int i=

45、1;i<6;i+) x_temp1-=1; y_temp1-=1; if(y_temp1<0 | x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=arrvalue) num+; else break; /判斷右下 x_temp1=x_temp; y_temp1=y_temp; for(int i=1;i<6;i+) x_temp1+=1; y_temp1+=1; if(y_temp1>this.height | x_temp1>this.width) break; if(this.arrMapShowx_

46、temp1y_temp1=arrvalue) num+; else break; if(num=5) return true; /判斷右上 x_temp1=x_temp; y_temp1=y_temp; num=1; for(int i=1;i<6;i+) x_temp1+=1; y_temp1-=1; if(y_temp1<0 | x_temp1>this.width) break; if(this.arrMapShowx_temp1y_temp1=arrvalue) num+; else break; /判斷左下 x_temp1=x_temp; y_temp1=y_tem

47、p; for(int i=1;i<6;i+) x_temp1-=1; y_temp1+=1; if(y_temp1>this.height | x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1=arrvalue) num+; else break; if(num=5) return true; return false;/贏棋后的提示public void showSuccess(JPanel jp) JOptionPane.showMessageDialog(jp,"你贏了,好厲害!","win", JOptionPane.INFORMATION_MESSAGE);/輸棋后的提示public void showDefeat(JPanel jp) JOptionPane.showMessageDialog(jp,"你輸了,請(qǐng)重

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論