課程設(shè)計人機對弈五子棋_第1頁
課程設(shè)計人機對弈五子棋_第2頁
課程設(shè)計人機對弈五子棋_第3頁
課程設(shè)計人機對弈五子棋_第4頁
課程設(shè)計人機對弈五子棋_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java程序設(shè)計課程設(shè)計報告學(xué) 院:理學(xué)院班 級:姓 名:學(xué) 號:指導(dǎo)教師:課設(shè)時間:2015-06-23 至2015-06-25 二O一五 年 六月 二十五 日課程設(shè)計(論文)任務(wù)書 理 學(xué)院信息與計算科學(xué) 專業(yè)2012-2班一、課程設(shè)計(論文)題目:人機對弈五子棋游戲二、課程設(shè)計(論文)工作:自 2015 年6月23 日起至2015 年6月25日止三、課程設(shè)計(論文) 地點: 5-205 四、課程設(shè)計(論文)內(nèi)容要求:1本課程設(shè)計的目的(1)使學(xué)生掌握軟件開發(fā)的基本工作流程; (2)鞏固JAVA程序設(shè)計課程所學(xué)的內(nèi)容; (3)培養(yǎng)學(xué)生的計算機思維能力以及合作的精神;(4)培養(yǎng)學(xué)生分析、解決

2、問題的能力;(5)提高學(xué)生的科技論文寫作能力。 2課程設(shè)計的任務(wù)及要求1)基本要求:(1)研究課程設(shè)計任務(wù),并進行系統(tǒng)需求分析;(2)對系統(tǒng)進行總體設(shè)計,分解系統(tǒng)功能模塊,進行任務(wù)分配,以實現(xiàn)分工合作;(3)實現(xiàn)各功能模塊代碼; (4)系統(tǒng)組裝,測試、完善系統(tǒng)。2)創(chuàng)新要求: 在基本要求達到后,可進行創(chuàng)新設(shè)計,如改進界面、增加功能或進行代碼優(yōu)化。3)課程設(shè)計論文編寫要求(1)要按照書稿的規(guī)格打印謄寫課程設(shè)計論文(2)論文包括封面、設(shè)計任務(wù)書(含評語)、摘要、目錄、設(shè)計內(nèi)容、設(shè)計小結(jié)(3)論文裝訂按學(xué)校的統(tǒng)一要求完成4)參考文獻:(1)丁振凡,JAVA語言程序設(shè)計,清華大學(xué)出版社(2)丁振凡,J

3、AVA語言程序設(shè)計實驗指導(dǎo)與習(xí)題解答,清華大學(xué)出版社(3)5)課程設(shè)計進度安排內(nèi)容 天數(shù) 地點系統(tǒng)總體設(shè)計 1 實驗室軟件設(shè)計及調(diào)試 1實驗室答辯及撰寫報告 1實驗室、圖書館學(xué)生簽名:2015年6月25日課程設(shè)計(論文)評審意見(1) 課程設(shè)計過程(20分):優(yōu)()、良()、中()、一般()、差( );(2) 是否完成調(diào)試,系統(tǒng)運行效果(30分):優(yōu)()、良()、中()、 一般( )、差( );(3)回答問題(20分):優(yōu)()、良()、中()、一般()、差();(4)課程設(shè)計報告(30分):優(yōu)()、良()、中()、一般()、差( );(5)格式規(guī)范性及考勤是否降等級:是()、否()評閱人:職稱

4、:教授 2015年 6月25日人機對弈五子棋游戲設(shè)計摘要:近些年來五子棋游戲成為了人們的最愛,游戲的下載量很高可以說一直排在前幾位,也是人們?nèi)粘I钪蟹潘蓨蕵返淖類?,特別是最近IT行業(yè)的發(fā)展,人工智能的實現(xiàn),移動客戶端的發(fā)展和普及為我們五子棋游戲的發(fā)展帶來了新的生機,新的高潮,人工智能與五子棋的完美結(jié)合是五子棋的又一項重要發(fā)展,而我們現(xiàn)在開發(fā)的人機對弈更是掀起了五子棋發(fā)展的新篇章,為五子棋的發(fā)展與傳播提供了新的機會,但是機會與挑戰(zhàn)并存,我們相信通過我們對五子棋程序的不斷優(yōu)化和完善,五子棋一定會越來越受到大家的歡迎。本次課程設(shè)計要求利用Java語言設(shè)計出一個人機對弈五子棋游戲,能實現(xiàn)人機對弈五子

5、棋。了解五子棋對弈規(guī)則后,利用本學(xué)期所學(xué)的Java高級圖形界面編程方法的知識,并通過窮舉法,考慮八個方向連成五子的幾率高低,讓計算機具有人工智能,成功設(shè)計出人機對弈五子棋的游戲。除了人機對弈的功能,我們還增加了人人對戰(zhàn)的功能。這項功能使得人與人之間能夠互下五子棋,不僅僅是人與計算機對弈。除此之外,還增加了再來一局、認輸、悔棋、退出游戲的功能,為了讓游戲功能更加豐富,還增加了棋盤、模式、外觀三個菜單欄供用戶選擇相應(yīng)功能的菜單項。目錄1、課程設(shè)計的目的及目標11.1課程設(shè)計的目的11.2課程設(shè)計的目標12、概要設(shè)計12.1開發(fā)工具及環(huán)境12.2 任務(wù)及需求分析12.3 工作原理13、具體實現(xiàn)23.

6、1 類設(shè)計24、運行調(diào)試與分析討論35、設(shè)計體會與小結(jié)106、參考文獻10附錄:(源程序)101、課程設(shè)計的目的及目標1.1課程設(shè)計的目的:本次課程設(shè)計的目的是為了讓學(xué)生使用java語言編程的知識,通過編寫一個簡單的五子棋游戲,檢驗一個學(xué)期以來學(xué)習(xí)java語言的收獲成果,以及檢查自己在學(xué)習(xí)java語言的過程中的漏洞來彌補不足,以便以后更好、更熟練地使用java語言來編寫方便、娛樂生活的程序。1.2課程設(shè)計的目標:本次課程設(shè)計所要求的五子棋游戲應(yīng)達到以下幾方面的要求:1.運行程序后即刻出現(xiàn)棋盤并可以開始下棋;2.先手為黑棋,后手為白棋;人為先手,計算機為后手;3.程序能響應(yīng)鼠標點擊并在相應(yīng)位置畫

7、出棋子;4.計算機具有一定的智能,能夠與人進行五子棋對弈;5.程序可以正確判斷出局面的勝負情況并及時報出結(jié)果,終止棋局;6.盡可能實現(xiàn)人人對戰(zhàn)功能。2、概要設(shè)計2.1開發(fā)工具及環(huán)境文本編輯器:記事本;運行環(huán)境:命令提示符(DOS環(huán)境)。2.2 任務(wù)及需求分析設(shè)計人機對弈五子棋程序,實現(xiàn)人與計算機進行五子棋對弈,具體任務(wù)如下:(1)棋盤布局設(shè)計;(2)計算機下子的算法分析;(3)編程實現(xiàn)棋子的繪制以及具體的再來一局、認輸、悔棋、退出游戲等功能;(4)運行測試程序,調(diào)試糾正運行錯誤。2.3 工作原理(1)工作過程運行程序后,首先出現(xiàn)五子棋游戲窗體,用戶點擊游戲菜單項,出現(xiàn)相關(guān)子菜單,選擇模式子菜單

8、中的人機對弈便可進入人機對弈模式。然后移動鼠標,在窗體的棋盤上點擊鼠標下子,即可在棋盤中相應(yīng)位置顯示下的對應(yīng)棋子。接下來計算機會根據(jù)用戶下的棋,采取窮舉法選擇八個方向上贏面最大的位置下子,用戶與計算機誰先達到五子連成一線,誰便是獲勝方。若選擇模式子菜單中的人人對戰(zhàn)便可進入人人對戰(zhàn)模式。兩個用戶可同時玩游戲,同樣誰先達到五子連成一線,誰便是獲勝方。若下棋過程中,雙方中有一方要認輸,便可選擇游戲菜單項中的認輸按鈕,認輸?shù)囊环斤@然失敗,另外一方獲勝。若雙方中有一方要悔棋,便可選擇游戲菜單項中的悔棋按鈕,經(jīng)過對方的同意后,才能夠重新翻盤,再來一局。若雙方勢均力敵,可選擇游戲菜單項中的棋盤子菜單,點擊大

9、號棋盤或超大號棋盤,以便避免棋盤空間不足造成無法分出勝負的情況。若覺得窗體外觀不太美觀,可選擇外觀菜單中的三個選項進行選擇。為了顯示程序的相關(guān)制作信息,程序提供了版本菜單進行顯示。具體功能實現(xiàn)見第四章節(jié)圖。(2)工作原理利用圖形界面編程實現(xiàn),利用到的知識點包括:q 窗體的創(chuàng)建和應(yīng)用界面布局;q 事件處理,包括按鈕的動作事件處理,鼠標事件,窗體事件;q 接口知識:事件處理中通過接口約束事件監(jiān)聽者必須實現(xiàn)相應(yīng)接口中定義的方法;q 流程控制語句:通過條件判斷區(qū)分不同事件源,作不同操作處理。3、 具體實現(xiàn)3.1 類設(shè)計(1) 類名:ChessFrame作用:創(chuàng)建五子棋游戲主窗體和菜單。該類繼承JFra

10、me類,實現(xiàn)ActionListener接口。類中含有的方法介紹:q ChessFrame()構(gòu)造方法:構(gòu)造五子棋游戲的主窗體;q makeMenu()方法:構(gòu)造五子棋游戲的主菜單;q makeMenuItem()方法:構(gòu)造五子棋游戲的菜單項;q makeRadioButtonMenuItem()方法:構(gòu)造五子棋游戲的單選按鈕式菜單項。(2) 類名:ChessModel作用:規(guī)定棋盤的寬度、高度、棋盤的模式;規(guī)定棋盤方格的橫向、縱向坐標、棋盤方格的橫向、縱向坐標所對應(yīng)的棋子顏色;并且規(guī)定了記錄棋盤棋子信息數(shù)組arrMapShow只有4個值:1,2,3,-1,其中1代表該棋盤方格上下的棋子為黑子

11、,2代表該棋盤方格上下的棋子為白子,3代表為該棋盤方格上沒有棋子,-1代表該棋盤方格不能夠下棋子;定義了交換棋手的標識符isOdd,棋盤方格上是否有棋子的標識符isExist。類中含有的主要方法介紹:q ChessModel()構(gòu)造方法:根據(jù)不同的棋盤模式(modeChess)來構(gòu)建對應(yīng)大小的棋盤;q badxy()方法:判斷下子的橫向、縱向坐標是否越界;q readyplay()方法:判斷該坐標位置是否可下棋子;q play()方法:在該坐標位置下棋子;q computerDo()方法:用窮舉法判斷每一個坐標點的八個方向的的最大棋子數(shù),最后得出棋子數(shù)最大值的坐標,計算機再下子(這八個方向分別

12、是:左、右、上、下、左上、左下、右上、右下);q checkMax()方法:計算棋盤上某一方格上八個方向棋子的最大值;q showSuccess()方法:贏棋后的提示;q showDefeat()方法:輸棋后的提示。(3) 類名:MainPanel作用:1、構(gòu)建一個面板,在該面板上畫上棋盤;2、處理在該棋盤上的鼠標事件(如鼠標左鍵點擊、鼠標右鍵點擊、鼠標拖動等);該類繼承JPanel類,實現(xiàn)MouseListener、MouseMotionListener接口。類中含有的主要方法介紹:q paintComponent()方法:根據(jù)坐標計算出棋盤方格棋子的信息(如白子還是黑子),然后調(diào)用draw

13、方法在棋盤上畫出相應(yīng)的棋子;q mousePressed ()方法:響應(yīng)鼠標的點擊事件,根據(jù)鼠標的點擊來下棋,根據(jù)下棋判斷勝負等;q mouseMoved()方法:響應(yīng)鼠標的拖動事件。(4) 類名:FiveChessAppletDemo作用:顯示五子棋游戲窗體。類中含有的方法介紹:q main()方法:程序運行的入口,創(chuàng)建了ChessFrame類的一個實例對象(cf),并啟動屏幕顯示顯示該實例對象。(5) 類名: ChessWindowEvent作用:響應(yīng)退出窗口。類中含有的方法介紹:q windowClosing()方法:處理窗口關(guān)閉;q ChessWindowEvent ()構(gòu)造方法:提供

14、無參構(gòu)造方法。4、運行調(diào)試與分析討論圖4-1 人機對弈模式選擇界面圖4-2 人機對弈界面 圖4-3 結(jié)果信息顯示界面圖4-4人人對戰(zhàn)模式選擇界面圖4-5 悔棋界面圖4-6 悔棋提示界面 圖4-7 悔棋后棋盤清空提示界面圖4-8 悔棋后棋盤清空界面圖4-9 認輸界面圖4-10 認輸提示界面圖4-11 認輸后結(jié)果信息界面圖4-12 棋盤選擇界面 圖4-13 外觀類型選擇界面圖4-14 版本選擇界面圖4-15 版本信息介紹界面5、設(shè)計體會與小結(jié)通過獨立完成五子棋對弈系統(tǒng)的后,發(fā)現(xiàn)自己在進行軟件開發(fā)方面提高不少,同時積極利用所學(xué)到的新技術(shù)用于自己的設(shè)計開發(fā)過程。另外,在整個開發(fā)的過程中,時間也比較倉促

15、。因此,該系統(tǒng)必然會存在一些缺陷和不足。如:沒有討論五子棋禁手的問題。另一個就是電腦按即定的算法去與玩家下子。這種算法有“固定”。不太會變,玩家若是仔細觀察,可以掌握其規(guī)律。還有就是界面不是很華麗有待改進。盡管本系統(tǒng)存在著很多不足,但其實現(xiàn)了最重要的功能就是有人工智能。這也讓我對計算機中的人工智能領(lǐng)域有一定的了解。另一個就在做系統(tǒng)的過程中,我學(xué)到了Java的一些基本結(jié)構(gòu),還有就是對于Java有更深一步的認識。6、參考文獻1 丁振凡,JAVA語言程序設(shè)計,清華大學(xué)出版社.2 丁振凡,JAVA語言程序設(shè)計實驗指導(dǎo)與習(xí)題解答,清華大學(xué)出版社.3 Charles Petzold.&

16、#160;Windows程序設(shè)計. 北京大學(xué)出版社,2002. 4 陳明,Java語言程序設(shè)計,清華大學(xué)出版社.附錄:(源程序)import java.awt.*;import java.awt.event.*;import javax.swing.*;class ChessFrame extends JFrame implements ActionListenerprivate String strsize="標準棋盤","大號棋盤","超大號棋盤"private String strmode="人機對

17、弈","人人對戰(zhàn)"public static boolean iscomputer=true,checkcomputer=true;private int width,height;private ChessModel cm;private MainPanel mp;public ChessFrame() this.setTitle("五子棋游戲"); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"

18、;Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent(); MapSize(14,14); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戲"); mbar.add(makeMenu(gameMenu, new Object "再來一局", null, "棋盤",null,"模式&quo

19、t;, null,"認輸", null, "悔棋", null, "退出", this); JMenu lookMenu =new JMenu("外觀"); mbar.add(makeMenu(lookMenu,new Object "類型一","類型二","類型三",this); JMenu helpMenu = new JMenu("版本"); mbar.add(makeMenu(helpMenu, new Object "

20、;關(guān)于", this);public JMenu makeMenu(Object parent, Object items, Object target) 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

21、(); else if(itemsi = "棋盤") JMenu jm = new JMenu("棋盤"); ButtonGroup 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

22、); else if(itemsi = "模式") JMenu jm = new JMenu("模式"); ButtonGroup 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);

23、 else m.add(makeMenuItem(itemsi, target); return m;public JMenuItem makeMenuItem(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

24、.addActionListener(ActionListener)target); return r;public JRadioButtonMenuItem makeRadioButtonMenuItem( Object item, Object target) JRadioButtonMenuItem r = null; if(item instanceof String) r = new JRadioButtonMenuItem(String)item); else if(item instanceof JRadioButtonMenuItem) r = (JRadioButtonMen

25、uItem)item; else return null; if(target instanceof ActionListener) r.addActionListener(ActionListener)target); return r; public void MapSize(int w,int h) setSize(w * 24, h * 27); if(this.checkcomputer) this.iscomputer=true; else this.iscomputer=false; mp.setModel(cm); mp.repaint(); public boolean ge

26、tiscomputer() return this.iscomputer; public void restart() int modeChess = cm.getModeChess(); if(modeChess <= 3 && modeChess >= 0) cm = new ChessModel(modeChess); MapSize(cm.getWidth(),cm.getHeight(); public void actionPerformed(ActionEvent e) String arg=e.getActionCommand(); try if (

27、arg.equals("類型三") UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); else if(arg.equals("類型二") UIManager.setLookAndFeel( "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); else UIManager.setLookAndFeel( "javax.swing.plaf.meta

28、l.MetalLookAndFeel" ); SwingUtilities.updateComponentTreeUI(this); catch(Exception ee) if(arg.equals("標準棋盤") this.width=14; this.height=14; cm=new ChessModel(1); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("大號棋盤") this.width=18;

29、 this.height=18; cm=new ChessModel(2); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("超大號棋盤") this.width=22; this.height=22; cm=new ChessModel(3); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("人

30、機對弈") this.checkcomputer=true; this.iscomputer=true; cm=new ChessModel(cm.getModeChess(); MapSize(cm.getWidth(),cm.getHeight(); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("人人對戰(zhàn)") this.checkcomputer=false; this.iscomputer=false; cm=new ChessModel(cm.getModeChess(); MapSi

31、ze(cm.getWidth(),cm.getHeight(); SwingUtilities.updateComponentTreeUI(this); if(arg.equals("再來一局") restart(); if(arg.equals("悔棋") if(!checkcomputer) int result = JOptionPane.showConfirmDialog(this, (FiveChessAppletDemo.isBlack=false?"白方悔棋,黑方是否同意?":"黑方悔棋,白方是否同意?&quo

32、t;); if (result = 0) JOptionPane.showMessageDialog(this, "雙方同意悔棋決定,棋盤清空!請繼續(xù)."); restart(); if(arg.equals("認輸") int result = JOptionPane.showConfirmDialog(this, "是否認輸?"); if (result = 0) JOptionPane.showMessageDialog(this,"游戲結(jié)束,"+(FiveChessAppletDemo.isBlack=tr

33、ue?"黑方認輸,白方獲勝!":"白方認輸,黑方獲勝!"); if(arg.equals("關(guān)于") JOptionPane.showMessageDialog(null, " 制作者:黃甜,熊婷婷,譚飄寶,湯素娟,鄧婷n 制作時間:2015年6月25日", "課程設(shè)計制作介紹",JOptionPane.PLAIN_MESSAGE ); if(arg.equals("退出") System.exit(0);class ChessModel private int width,

34、height,modeChess;private int x=0,y=0;private int arrMapShow;private boolean isOdd,isExist;public ChessModel() public ChessModel(int modeChess) this.isOdd=true; if(modeChess = 1)PanelInit(14, 14, modeChess); if(modeChess = 2)PanelInit(18, 18, modeChess); if(modeChess = 3)PanelInit(22, 22, modeChess);

35、private 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 = -1;public boolean getisOdd() return this.isOdd;pu

36、blic void setisOdd(boolean isodd) if(isodd) this.isOdd=true; else this.isOdd=false;public boolean getisExist() return this.isExist;public int getWidth()return this.width;public int getHeight()return this.height;public int getModeChess()return this.modeChess;public int getarrMapShow() return arrMapSh

37、ow;private boolean badxy(int x, int y) if(x >= width+20 | x < 0) return true; return y >= height+20 | y < 0;public boolean chessExist(int i,int j) if(this.arrMapShowij=1 | this.arrMapShowij=2) return true; return false;public void readyplay(int x,int y) if(badxy(x,y) return; if (chessExi

38、st(x,y) return; this.arrMapShowxy=3;public void play(int x,int y) if(badxy(x,y) return; if(chessExist(x,y) this.isExist=true; return; else this.isExist=false; if(getisOdd() setisOdd(false); this.arrMapShowxy=1; else setisOdd(true); this.arrMapShowxy=2; public void computerDo(int width,int height) in

39、t max_black,max_white,max_temp,max=0; setisOdd(true); System.out.println("計算機走棋 ."); 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) ma

40、x=max_temp; this.x=i; this.y=j; setX(this.x); setY(this.y); this.arrMapShowthis.xthis.y=2;public void setX(int x) this.x=x;public void setY(int y)this.y=y;public int getX()return this.x;public int getY()return this.y;public int checkMax(int x, int y,int black_or_white) int num=0,max_num,max_temp=0;

41、int x_temp=x,y_temp=y; int x_temp1=x_temp,y_temp1=y_temp; 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; x_temp1=x_temp; for(int i=1;i<5;i+) x_temp1-=1; if(x_temp1<0) break; if(this.arrMapShowx_temp1y_temp1

42、=black_or_white) num+; else break; if(num<5) max_temp=num; 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+; else break; y_temp1=y_temp; for(int i=1;i<5;i+) y_temp1+=1; if(y_temp1>this.hei

43、ght) break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num>max_temp&&num<5) max_temp=num; 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<0) break; if(this.arrMapShowx_temp1y_temp1=black_or_wh

44、ite) num+; else break; 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.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num>max_temp&&num<5) max_temp=num; x_temp1=x_temp; y_tem

45、p1=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_white) num+; else break; 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)

46、 break; if(this.arrMapShowx_temp1y_temp1=black_or_white) num+; else break; if(num>max_temp&&num<5) max_temp=num; max_num=max_temp; return max_num;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

47、; 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_temp1y_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

48、; 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) 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_temp

49、1=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<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_temp

50、1+=1; y_temp1+=1; if(y_temp1>this.height | x_temp1>this.width) 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+) x_temp1+=1; y_temp1-=1; if(y_temp1<0 | x_temp1>this.width) break; if(thi

51、s.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<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,"你贏了","結(jié)果", JOptionPane.INFORMATION_MESSAGE);p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論