2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)論文</b></p><p><b>  目錄</b></p><p><b>  內(nèi)容摘要1</b></p><p><b>  關(guān) 鍵 字1</b></p><p>  Abstract.1</p>

2、<p>  Key words1</p><p><b>  前言1</b></p><p><b>  第一章 概述2</b></p><p><b>  1.1編程語言2</b></p><p>  1.2 java開發(fā)平臺3</p>&

3、lt;p>  第二章 需求分析5</p><p>  2.1五子棋發(fā)展史5</p><p>  2.2五子棋功能說明6</p><p>  第三章 設計分析8</p><p>  3.1重點模塊分析:8</p><p>  3.2 設計流程:8</p><p>  4.1 主

4、類Test:9</p><p>  4.2程序窗體類FiveChessFrame類:9</p><p>  第五章 游戲的調(diào)試20</p><p><b>  第六章 結(jié)論24</b></p><p><b>  參考文獻24</b></p><p><b&g

5、t;  致謝:25</b></p><p>  內(nèi)容摘要: 隨著互聯(lián)網(wǎng)迅速的發(fā)展,網(wǎng)絡游戲已經(jīng)成為人們普遍生活中不可或缺的一部分,它不僅能使人娛樂,也能夠開發(fā)人的智力,就像本文所主要講的五子棋游戲一樣能挖掘人們聰明的才干與腦袋的機靈程度。</p><p>  本文主要講的是用Eclipse開發(fā)工具與java開發(fā)語言開發(fā)出一個自定義界面的五子棋小游戲,本游戲程序能實現(xiàn)兩個人對

6、陣下棋,并且程序中能自定義游戲的時間并且也能智能的判定游戲的獲勝方和游戲的結(jié)束與否,實現(xiàn)兩方進行博弈。</p><p>  關(guān)鍵詞:Eclipse java語言 智能 自定義 五子棋</p><p>  Abstract: As the rapid development of Internet, Online games have become an integral part

7、 of the universal life, Not only does it make people entertainment, but also to develop people's intelligence, as in this paper as the main spoken welcome to play smart to tap people's talents and head of the cle

8、ver level.</p><p>  This article is talking about Eclipse development tools and java development language to develop a custom interface Gobang game, the game program can achieve against two people playing ch

9、ess, and the program can be custom game time and also be able to determine intelligence the game winning side and the end of the game or not, to achieve two side game.</p><p>  Key words:Eclipse,java languag

10、e,intelligence,user—defined ,chess</p><p><b>  前言</b></p><p>  電腦已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔助設計、圖形圖像處理、教育培訓以及游戲娛樂等。Windows系統(tǒng)的推出使電腦從高雅的學術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無須經(jīng)過特別的訓練就能夠使用電腦完成許許多多復

11、雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了花樣繁多的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己特殊需求的軟件。 </p><p>  作為一名學生,在系統(tǒng)的學習了Java語言之后,用它編了一些小程序。這次課程設計,我就想將學過的Java語言中的各種技術(shù)綜合起來,編寫一個小游戲,既對自己學過的技能進行一次檢驗,也能系統(tǒng)地將學過的知識復習鞏固。</p><p>

12、<b>  第一章 概述</b></p><p>  本文使用功能強大的Eclipse開發(fā)工具和java開發(fā)語言開發(fā)出一款擁有自己特色的五子棋小程序,其中Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具(Java Develop

13、ment Tools,JDT)。</p><p><b>  1.1編程語言 </b></p><p>  1.1.1 java語言介紹</p><p>  現(xiàn)代技術(shù)的發(fā)展,尤其是網(wǎng)絡技術(shù),給現(xiàn)代企業(yè)帶來了許多新的機遇和挑戰(zhàn),如改善客戶服務、全球化和信息檢索等,這些在技術(shù)上反映為信息的獲取、系統(tǒng)管理、系統(tǒng)集成、新技術(shù)的開發(fā)、Internet

14、、Intranet等等與商業(yè)的結(jié)合。而這些要求一個隨處可用的開放的結(jié)構(gòu)和在不同的平臺之間低成本的信息傳遞方式,Java正好滿足這些要求。 Java是由Sun Microsystems公司于1995年5月推出的Java程序設計語言(以下簡稱Java語言)和Java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺、動感的Web、Internet計算。從此,Java被廣泛接受

15、并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Java applet。另一方面,Java技術(shù)也不斷更新。Java平臺由Java虛擬機(Java Virtual Machine)和Java 應用編程接口(Application Programming Interface、簡稱API)構(gòu)成。Java 應用編程接口為Java應用提供了一個獨立于操作系統(tǒng)的標準接口,可分為基本部分</p><p>  1.1.2 ja

16、va語言的優(yōu)點 </p><p><b>  (1)面向?qū)ο?lt;/b></p><p>  Java提供了簡單的類機制和動態(tài)的構(gòu)架模型。對象中封裝了它的狀態(tài)變量和方法,很好地實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現(xiàn)了代碼的復用,又提供了一種動態(tài)的解決方案。(2) 多線程

17、 多線程使應用程序可以同時進行不同的操作,處理不同的事件。在多線程機制中,不同的線程處理不同的任務,他們之間互不干涉,不會由于一處等待影響其他部分,這樣容易實現(xiàn)網(wǎng)絡上的實時交互操作。</p><p> ?。?)動態(tài)性   Java的設計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且 Java通過接口來支持多重繼承 ,使之比嚴格的類繼承具

18、有更靈活的方式和擴展性。</p><p>  (4) 安全性 用于網(wǎng)絡、分布環(huán)境下的Java必須要防止病毒的入侵,Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止了程序員使用欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。</p><p>  (5).可移植性   與平臺無關(guān)的特性使 Java程序可以方便地

19、被移植到網(wǎng)絡上的不同機器。同時 ,Java的類庫中也實現(xiàn)了與不同平臺的接口 ,使這些類庫可以移植。另外,Java編譯器是由 Java語言實現(xiàn)的 ,Java運行時系統(tǒng)由標準 C實現(xiàn) ,這使得Java系統(tǒng)本身也具有可移植性。</p><p>  1.2 java開發(fā)平臺 </p><p>  1.2.1 java的開發(fā)環(huán)境 </p><p>  Java是由Sun

20、微系統(tǒng)公司所發(fā)展出來的程序語言,它本身是一種對象導向(Object-Oriented)的程序語言。JAVA目前在手機上應用最多的就是JAVA游戲。 </p><p>  Java也號稱是能跨平臺使用的語言,這主要是因為Java本身被編譯之后,并不是直接產(chǎn)生可執(zhí)行的碼,而是產(chǎn)生一種中間碼叫作 ByteCode,這種碼必需在透過 Java 的直譯器來解讀它,才能夠真正的被執(zhí)行,所以只要平臺上裝有這種Java的直譯器,

21、就能解讀ByteCode也就能執(zhí)行Java編譯過的程序,故與Java程序是在哪種平臺上被編譯的,就完全沒有關(guān)系了。Java寫出來的程序可分為兩類,分別是Java Applet與一般的Application,而Application 這一類就與一般的程序如C++的作用是比較類似的,是一個獨立可執(zhí)行的應用程序,像HotJava是一個瀏覽器,且就是使用Java程序所開發(fā)出來的。最常見的Java程序包括應用程序和applets。應用程序是單獨的

22、程序,諸如HotJava瀏覽器軟件就是用Java語言編寫的。 Applets類似于應用程序,但是它們不能單獨運行, Applets可以在支持Java的瀏覽器中運行。Applet主要是內(nèi)置于HTML網(wǎng)頁中,在瀏覽時發(fā)揮作用。 </p><p>  1.2.2 java的編輯環(huán)境 </p><p>  (一)用功能強大的開源工具Eclipse來開發(fā),相對較為方便,eclipse比較通用,而

23、且支持很多插件。</p><p>  (二) Java主要是利用文本編輯器來完成程序設計的編輯工作,可以使用各種文本編輯器來編寫,例如:記事本、Editplus和UltraEdit軟件等都可以用來實現(xiàn)。</p><p>  (1)用記事本編寫過程很簡單,只需要帶開記事本在里面編寫代碼幾可以了。</p><p>  (2)用Editplus軟件配置JAVA編輯環(huán)境:&

24、lt;/p><p>  1:打開Editplus,選擇"工具->參數(shù)選擇"在彈出的窗口中選擇"用戶工具";</p><p>  2:點組名稱,將"組1"改成別的名稱(當然不改也可以);點"添加工具->應用程序";菜單文件選項可寫"Java編譯",在命令中選擇JDK的javac.exe

25、,是在JDK的目錄下的bin目錄下;參數(shù)在下拉菜單中選擇"文件名",初始目錄在下拉菜單中選擇"文件目錄";在"捕獲輸出"前打勾,這就完成了"Java編譯"的配置.</p><p>  3:再點"添加工具->應用程序";菜單文件選項可寫"Java運行",在命令中選擇JDK的java.exe.

26、參數(shù)在下拉菜單中選擇"文件名(不含擴展名)",初始目錄在下拉菜單中選擇"文件目錄";在"捕獲輸出"前打勾,完成了"Java編譯"的配置.配置完成了,寫一個"Hello World"來測試一下.只要按快捷鍵"Ctrl+1",是對當前打開的文件進行編譯;只要按快捷鍵"Ctrl+2",是運行當前文件. &

27、lt;/p><p>  (三)Jbulder也是java的一款開發(fā)工具,功能更全面,而且操作好多都是即見即所得的,就想VB一樣方便快捷,不過它是一款收費軟件,所以不是一些大公司一般不會使用它來作為java的開發(fā)工具。</p><p>  1.2.3 java的運行環(huán)境 </p><p>  通常一個程序運行的平臺是一個硬件或者軟件運行的環(huán)境。目前比較流行的是Wind

28、ows 2000, Linux, Solaris, 和MacOS。Java的平臺不太一樣,它由兩個部分組成:一個是Java Virtual Machine即Java虛擬機,另一部分是Java Application Programming Interface (Java API) 即Java應用程序設計接口,這兩部份軟件就構(gòu)成了Java運行的基本的環(huán)境。Java API 是一個大的已經(jīng)做好的軟件集合,這個集合里有許多開發(fā)時所需要的控件,

29、用來輔助開發(fā)。Java API和JVM整合在一起處于機器硬件之上。也就是說,Java平臺把一個Java應用程序從硬件系統(tǒng)分離開從而很好的保證了程序的獨立性。為了更好的適應開發(fā)的需要,Java的設計者們?yōu)槲覀兲峁┝巳NJava平臺:Java 2 Micro Edition (J2ME ), Java 2 Standard Edition (J2SE)和 Java 2 Enterprise Edition (J2EE). 每一個版本都提供了

30、豐富的開發(fā)工具箱以適應不同的開發(fā)需要。</p><p><b>  第二章 需求分析</b></p><p><b>  2.1五子棋發(fā)展史</b></p><p>  五子棋是起源于中國古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱之為“連珠”,英譯為“Renju”,英文稱之為“Gobang”或“FIR”(Five in a

31、Row的縮寫),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。 </p><p>  五子棋不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快”,又有古典哲學的高深學問“陰陽易理”;它既有簡單易學的特性,為人民群眾所喜聞樂見,又有深奧的技巧和高水平的國際性比賽;它的棋文化源淵流長,具有東方的神秘和西方的直觀;既有“場”的概念,亦有

32、“點”的連接。它是中西文化的交流點,是古今哲理的結(jié)晶。 </p><p>  對于五子棋與圍棋的關(guān)系有兩種說法,一說早于圍棋,早在“堯造圍棋”之前,民間就已有五子棋游戲;一說源于圍棋,是圍棋發(fā)展的一個分支。在中國的文化里,倍受人們的青睞。古代的五子棋的棋具與圍棋相同,縱橫各十七道。五子棋大約隨圍棋一起在我國南北朝時先后傳入朝鮮、日本等地。</p><p>  2.2五子棋功能說明</

33、p><p>  2.2.1五子棋特點及規(guī)則</p><p>  五子棋的娛樂性強、規(guī)則簡單、易學、流行性廣,普通人不需長時間專門訓練即可自如行棋,因此極受大眾喜歡·</p><p><b>  五子棋規(guī)則為:</b></p><p>  1.棋盤:采用像圍棋盤一樣的棋盤,本系統(tǒng)采用18路的棋盤·</

34、p><p>  2.下法:兩人分別執(zhí)黑白兩色棋子,輪流在棋盤上選擇一個無子的交叉點落子,無子的交叉點又被稱為空點·</p><p>  3.輸贏判斷:黑、白雙方有一方的五個棋子在橫、豎或斜方向上連接成一線即為該方贏·</p><p>  2.2.2操作界面需求</p><p>  操作界面如下圖(1)所示,游戲畫面簡單易懂:&

35、lt;/p><p><b>  圖(1)</b></p><p>  2.2.3程序流程</p><p>  2.2.3主要模塊分析</p><p>  我們看到本程序由4個基本功能模塊構(gòu)成,各模塊的詳細分析如下:</p><p>  1.初始化FiveChessFrame類</p>

36、<p>  過imagePath = System.getProperty("user.dir")+"/bin/image/background.jpg" ;</p><p>  bgImage = ImageIO.read(new File(imagePath.replaceAll("\\\\", "/")));加載背景

37、圖片,然后再背景圖上通過:paint方法中的for (int i = 0; i < 18; i++) {g2.drawLine(258, 102 + 30 * i, 767, 102 + 30 * i);</p><p>  g2.drawLine(258 + 30 * i, 102, 258 + 30 * i, 612);</p><p>  }語句繪制一個18*18的網(wǎng)格棋盤,

38、每次下棋后通過調(diào)用repaint方法來初始化程序。</p><p>  2.通過public void mousePressed(MouseEvent e)這個主方法中的isBlack變量值來判斷當前應該哪一方開始下棋。</p><p>  3.若是白子,則通過allChess[][]這個二維數(shù)組的值為1來定義該子,若是黑子,則通過allChess[][]數(shù)組的值為2來定義該子,若為0,則

39、為空。</p><p>  4.通過checkWin()方法來判定當前方是否已練成5個同顏色的棋子。若同時有了5個同顏色的連子(不論是豎直,水平還是斜方向的)則判定該方獲勝。</p><p><b>  第三章 設計分析</b></p><p>  3.1重點模塊分析:</p><p>  本程序最重要的就是能夠自動判定

40、黑白兩方各個方向上的棋子是否連成了五個相同顏色的棋子,怎么做到這點呢?這個要通過private int checkCount(int xChange, int yChange, int color)方法來判定,然后通過private boolean checkWin()方法判定獲勝方(具體方法后邊會寫出,供讀者了解分析)。其次本程序關(guān)鍵的一點就是可以模擬游戲中的按鈕來自定義游戲的時間,從而增加本游戲的可控性,智能性,同時增強游戲玩家的趣

41、味性和刺激性。</p><p><b>  3.2 設計流程:</b></p><p>  因為本程序用Eclipse開發(fā),如圖(2):</p><p><b>  圖(2)</b></p><p>  在Eclipse中建立了兩個類,一個是有主方法的test主類,另一個是程序的主窗體FiveChe

42、ssFrame類,同時為了方便管理和應用兩個類都分別打包了,具體見后面。</p><p><b>  第四章 代碼設計</b></p><p>  4.1 主類Test:</p><p>  package org.guoguo.game.test;</p><p>  import org.guoguo.game.f

43、rame.FiveChessFrame;</p><p>  public class Test {</p><p>  public static void main(String[] args) {</p><p>  FiveChessFrame ff = new FiveChessFrame();</p><p><b> 

44、 }</b></p><p><b>  }</b></p><p>  4.2程序窗體類FiveChessFrame類:</p><p>  4.2.1主類FiveChessFrame</p><p>  public class FiveChessFrame extends JFrame implemen

45、ts MouseListener, Runnable {</p><p>  int width = Toolkit.getDefaultToolkit().getScreenSize().width;</p><p>  int height = Toolkit.getDefaultToolkit().getScreenSize().height;</p><p>

46、;  BufferedImage bgImage = null;</p><p>  int x = 0;int y = 0;</p><p>  int[][] allChess = new int[18][18];</p><p>  boolean isBlack = false;boolean canPlay = true;</p><p

47、>  String message = "白方先行";int maxTime = 0;</p><p>  Thread t = new Thread(this);</p><p>  int blackTime = 0;int whiteTime = 0;</p><p>  String blackMessage = "無限制

48、";String whiteMessage = "無限制";</p><p>  String blackMessage0 = "無限制";String whiteMessage0 = "無限制";</p><p>  public FiveChessFrame() {this.setTitle("五子棋&qu

49、ot;);</p><p>  this.setSize(1000, 750);this.setLocation((width - 1000) / 2, (height - 750) /2);this.setResizable(false);</p><p>  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p>

50、<p>  this.addMouseListener(this);this.setVisible(true);t.start();</p><p>  t.suspend();this.repaint();String imagePath = "" ;</p><p>  try {imagePath=System.getProperty("

51、user.dir")+"/bin/image/background.jpg" ;</p><p>  bgImage = ImageIO.read(new File(imagePath.replaceAll("\\\\", "/")));</p><p>  } catch (IOException e) {</p

52、><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.2畫棋盤的paint方法:</p><p>  public void paint(Graphics g) {<

53、;/p><p>  BufferedImage bi = new BufferedImage(1000, 750,</p><p>  BufferedImage.TYPE_INT_RGB);</p><p>  Graphics g2 = bi.createGraphics();</p><p>  g2.setColor(Color.WHIT

54、E);g2.drawImage(bgImage, 1, 20, this);</p><p>  g2.setFont(new Font("隸書", Font.BOLD, 20));</p><p>  g2.drawString("游戲信息:" + message, 428, 83);</p><p>  g2.setCol

55、or(Color.BLACK);</p><p>  g2.setFont(new Font("宋體", Font.BOLD, 14));</p><p>  g2.drawString(whiteMessage, 128, 360);</p><p>  g2.drawString(blackMessage0, 128, 315);g2.set

56、Color(Color.WHITE);</p><p>  g2.drawString(blackMessage, 830, 365);</p><p>  g2.drawString(whiteMessage0,830, 315);g2.setColor(Color.BLACK);</p><p>  g2.setFont(new Font("隸書&q

57、uot;, Font.BOLD, 40));</p><p>  for (int i = 0; i < 18; i++) {</p><p>  g2.drawLine(258, 102 + 30 * i, 767, 102 + 30 * i);</p><p>  g2.drawLine(258 + 30 * i, 102, 258 + 30 * i, 6

58、12);</p><p><b>  }</b></p><p>  g2.fillOval(375, 219, 8, 8);g2.fillOval(645,219, 8, 8);</p><p>  g2.fillOval(645, 489, 8, 8);g2.fillOval(375, 489, 8, 8);</p><

59、p>  for (int i = 0; i < 18; i++) {</p><p>  for (int j = 0; j < 18; j++) {</p><p>  if (allChess[i][j] == 1) {</p><p>  int tempX = i * 30 + 258;int tempY = j * 30 + 102;&l

60、t;/p><p>  g2.fillOval(tempX - 12, tempY - 12, 28, 28);</p><p><b>  }</b></p><p>  if (allChess[i][j] == 2) {</p><p>  int tempX = i * 30 + 258;int tempY = j *

61、 30 + 102;</p><p>  g2.setColor(Color.WHITE);</p><p>  g2.fillOval(tempX - 12, tempY - 12, 28, 28);</p><p>  g2.setColor(Color.BLACK);</p><p>  g2.drawOval(tempX - 12,

62、tempY - 12, 28, 28);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  g.drawImage(bi, 0, 0, this);</p><p>

63、;<b>  }</b></p><p>  4.2.3鼠標點擊的mousePressed()方法,其中包括點擊各個按鈕的相應事件</p><p>  public void mousePressed(MouseEvent e) {</p><p>  System.out.println("X:"+e.getX());

64、 System.out.println("Y:"+e.getY());</p><p>  if (canPlay == true) {</p><p>  x = e.getX();</p><p>  y = e.getY();</p><p>  if (x >=260 && x <=

65、767 && y >= 101 && y <= 610) {</p><p>  x = (x - 260) / 30;y = (y - 101) / 30;</p><p>  if (allChess[x][y] == 0)</p><p>  {if (isBlack == true) {</p>&l

66、t;p>  allChess[x][y] = 1;isBlack = false;</p><p>  message = "輪到白方";</p><p><b>  } else {</b></p><p>  allChess[x][y] = 2;isBlack = true;</p><p&g

67、t;  message = "輪到黑方";</p><p><b>  }</b></p><p>  boolean winFlag = this.checkWin();</p><p>  if (winFlag == true) {</p><p>  if(allChess[x][y]=

68、= 1){</p><p>  message="黑方勝利";t.suspend();</p><p><b>  }</b></p><p><b>  else</b></p><p>  {message="白方勝利";</p><

69、p>  t.suspend();</p><p><b>  }</b></p><p>  JOptionPane.showMessageDialog(this, "游戲結(jié)束,"</p><p>  + (allChess[x][y] == 1 ? "黑方" : "白方") +

70、 "獲勝!");</p><p>  this.canPlay = false;</p><p><b>  }</b></p><p><b>  } else {</b></p><p>  JOptionPane.showMessageDialog(this, "

71、當前位置已經(jīng)有棋子,請重新落子!");</p><p><b>  }</b></p><p>  this.repaint();</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (e.

72、getX() >= 482 && e.getX() <= 523 && e.getY() >= 667&& e.getY() <= 685) {int result = JOptionPane.showConfirmDialog(this, "是否重新開始游戲?");if (result == 0) {</p><p> 

73、 for (int i = 0; i < 18; i++) {</p><p>  for (int j = 0; j < 18; j++) {</p><p>  allChess[i][j] = 0;</p><p><b>  }</b></p><p><b>  }</b>&l

74、t;/p><p>  message = "白方先行";isBlack = false;</p><p>  blackTime = maxTime;whiteTime = maxTime;</p><p>  if (maxTime > 0) {</p><p>  blackMessage = maxTime / 3

75、600 + ":"+ (maxTime / 60 - maxTime / 3600 * 60) + ":"+ (maxTime - maxTime / 60 * 60);</p><p>  whiteMessage = maxTime / 3600 + ":"+ (maxTime / 60 - maxTime / 3600 * 60) + "

76、:"+ (maxTime - maxTime / 60 * 60);</p><p>  t.resume();</p><p><b>  } else {</b></p><p>  blackMessage = "無限制";whiteMessage = "無限制";</p>

77、<p><b>  }</b></p><p>  this.canPlay = true;this.repaint();</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (e.getX() >= 264

78、 && e.getX() <= 307 && e.getY() >= 645</p><p>  && e.getY() <= 665) {</p><p>  String input = JOptionPane.showInputDialog("請輸入游戲的最大時間(單位:分鐘),如果輸入0,表示沒有時間限制:

79、");</p><p><b>  try {</b></p><p>  maxTime = Integer.parseInt(input) * 60;</p><p>  if (maxTime < 0) {</p><p>  JOptionPane.showMessageDialog(this,

80、"請輸入正確信息,不允許輸入負數(shù)!");</p><p><b>  }</b></p><p>  if (maxTime == 0) {</p><p>  int result = JOptionPane.showConfirmDialog(this,</p><p>  "設置完成,

81、是否重新開始游戲?");</p><p>  if (result == 0) {</p><p>  for (int i = 0; i < 18; i++) {</p><p>  for (int j = 0; j < 18; j++) {</p><p>  allChess[i][j] = 0;</p&g

82、t;<p><b>  }</b></p><p><b>  }</b></p><p>  message = "白方先行";isBlack = false;</p><p>  blackTime = maxTime;whiteTime = maxTime;</p>&

83、lt;p>  blackMessage = "無限制";whiteMessage = "無限制";</p><p>  blackMessage0= "無限制";whiteMessage0 = "無限制";</p><p>  t.suspend();this.canPlay = true;this.re

84、paint();</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (maxTime > 0) {</p><p>  int result = JOptionPane.showConfirmDialog(this,</p>

85、<p>  "設置完成,是否重新開始游戲?");</p><p>  if (result == 0) {</p><p>  for (int i = 0; i < 18; i++) {</p><p>  for (int j = 0; j < 18; j++) {</p><p>  allC

86、hess[i][j] = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  message = "白方先行";isBlack = false;</p><p>  blackTime = maxTime;whiteTime

87、= maxTime;</p><p>  blackMessage = maxTime / 3600 + ":"+ (maxTime / 60 - maxTime / 3600 * 60) + ":"+ (maxTime - maxTime / 60 * 60);</p><p>  whiteMessage = maxTime / 3600 + &

88、quot;:"+ (maxTime / 60 - maxTime / 3600 * 60) + ":"+ (maxTime - maxTime / 60 * 60);</p><p>  blackMessage0 = maxTime / 3600 + ":"+ (maxTime / 60 - maxTime / 3600 * 60) + ":"

89、;+ (maxTime - maxTime / 60 * 60);</p><p>  whiteMessage0 = maxTime / 3600 + ":"+ (maxTime / 60 - maxTime / 3600 * 60) + ":"+ (maxTime - maxTime / 60 * 60);</p><p>  t.resume(

90、);this.canPlay = true;this.repaint();</p><p><b>  }</b></p><p><b>  }</b></p><p>  } catch (NumberFormatException e1) {</p><p>  JOptionPane.sho

91、wMessageDialog(this, "請正確輸入信息!");</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (e.getX() >= 656 && e.getX() <= 697 && e.ge

92、tY() >= 644</p><p>  && e.getY() <= 661) {</p><p>  JOptionPane.showMessageDialog(this,</p><p>  "這個一個五子棋游戲程序,黑白雙方輪流下棋,當某一方連到五子時,則該方獲勝,同時游戲結(jié)束。");</p>

93、<p><b>  }</b></p><p>  if (e.getX() >= 321 && e.getX() <= 364 && e.getY() >= 643</p><p>  && e.getY() <= 663) {</p><p>  JOptio

94、nPane.showMessageDialog(this,"游戲開始時,根據(jù)上方提示信息,用鼠標點擊棋盤黑白雙方輪流下子");</p><p><b>  }</b></p><p>  if (e.getX() >= 546 && e.getX() <= 592 && e.getY() >= 66

95、2&& e.getY() <= 678) {int result = JOptionPane.showConfirmDialog(this, "是否確認認輸?");</p><p>  if (result == 0) {if (isBlack) {message ="黑方認輸,白方獲勝?。?!";this.repaint();JOptionPane.s

96、howMessageDialog(this, "黑方已經(jīng)認輸,游戲結(jié)束!");</p><p><b>  } else {</b></p><p>  message="白方認輸,黑方獲勝?。?!";</p><p>  this.repaint();</p><p>  JOpt

97、ionPane.showMessageDialog(this, "白方已經(jīng)認輸,游戲結(jié)束!");</p><p><b>  }</b></p><p>  canPlay = false;</p><p><b>  }</b></p><p><b>  }<

98、/b></p><p>  if (e.getX() >= 420 && e.getX() <= 457 && e.getY() >= 663</p><p>  && e.getY() <= 683) {</p><p>  JOptionPane.showMessageDialog(t

99、his,</p><p>  "本程序來源蟈蟈基地,創(chuàng)作人:郭貴揚(郭幗),有相關(guān)問題可以寫信留言97682373@qq.com");</p><p><b>  }</b></p><p>  if (e.getX() >= 716 && e.getX() <= 762 && e

100、.getY() >= 648&& e.getY() <= 665) {JOptionPane.showMessageDialog(this, "游戲結(jié)束");System.exit(0);</p><p><b>  }</b></p><p><b>  }</b></p><

101、p>  public void mouseReleased(MouseEvent e) {</p><p><b>  }</b></p><p>  private boolean checkWin() {</p><p>  boolean flag = false;</p><p>  int count =

102、 1;int color = allChess[x][y];</p><p>  count = this.checkCount(1, 0, color);</p><p>  if (count >= 5) {</p><p>  flag = true;</p><p><b>  } else {</b>&l

103、t;/p><p>  count = this.checkCount(0, 1, color);</p><p>  if (count >= 5) {flag = true;</p><p><b>  } else {</b></p><p>  count = this.checkCount(1, -1, col

104、or);</p><p>  if (count >= 5) {</p><p>  flag = true;</p><p><b>  } else {</b></p><p>  count = this.checkCount(1, 1, color);</p><p>  if (c

105、ount >= 5) {</p><p>  flag = true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&g

106、t;</p><p>  return flag;</p><p><b>  }</b></p><p>  private int checkCount(int xChange, int yChange, int color) {</p><p>  int count = 1;</p><p&g

107、t;  int tempX = xChange;</p><p>  int tempY = yChange;</p><p>  while (x + xChange >= 0 && x + xChange <= 17 && y + yChange >= 0</p><p>  && y + yCh

108、ange <= 17</p><p>  && color == allChess[x + xChange][y + yChange]) {</p><p><b>  count++;</b></p><p>  if (xChange != 0)</p><p>  xChange++;<

109、/p><p>  if (yChange != 0) {</p><p>  if (yChange > 0)</p><p>  yChange++;</p><p><b>  else {</b></p><p>  yChange--;</p><p><b

110、>  }}}</b></p><p>  xChange = tempX;yChange = tempY;</p><p>  while (x - xChange >= 0 && x - xChange <= 17 && y - yChange >= 0&& y - yChange <= 17&am

111、p;& color == allChess[x - xChange][y - yChange]) {count++;</p><p>  if (xChange != 0)</p><p>  xChange++;</p><p>  if (yChange != 0) {</p><p>  if (yChange > 0)&

112、lt;/p><p>  yChange++;</p><p><b>  else {</b></p><p>  yChange--;</p><p><b>  }</b></p><p><b>  }</b></p><p>

113、<b>  }</b></p><p>  return count;</p><p><b>  }</b></p><p>  public void run() {</p><p>  if (maxTime > 0) {</p><p>  while (tru

114、e) {</p><p>  if (isBlack) {</p><p>  blackTime--;</p><p>  if (blackTime == 0) {</p><p>  message ="白方勝利";</p><p>  JOptionPane.showMessageDial

115、og(this, "黑方超時,游戲結(jié)束!");</p><p>  blackMessage ="0:0:0";this.canPlay=false;this.repaint();t.suspend();</p><p><b>  }</b></p><p><b>  } else {<

116、;/b></p><p>  whiteTime--;</p><p>  if (whiteTime == 0) {</p><p>  message ="黑方勝利";</p><p>  JOptionPane.showMessageDialog(this, "白方超時,游戲結(jié)束!");&l

117、t;/p><p>  whiteMessage ="0:0:0";this.canPlay =false;</p><p>  this.repaint();t.suspend();</p><p><b>  }</b></p><p><b>  }</b></p>

118、<p>  blackMessage = blackTime / 3600 + ":"+ (blackTime / 60 - blackTime / 3600 * 60) + ":"+ (blackTime - blackTime / 60 * 60);</p><p>  whiteMessage = whiteTime / 3600 + ":&qu

119、ot;+ (whiteTime / 60 - whiteTime / 3600 * 60) + ":"+ (whiteTime - whiteTime / 60 * 60);</p><p>  this.repaint();</p><p><b>  try {</b></p><p>  Thread.sleep(10

120、00);</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

121、  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  第五章 游戲的調(diào)試</b></p><p>  1 由于本程序是在Eclipse中開發(fā)的,所以程序在運行的過程中是看不到中間的編譯過程的,直接

122、從測試類Test運行來進行游戲的調(diào)試,如圖(3):</p><p><b>  圖(3)</b></p><p>  2 游戲運行后的界面如下圖(4)所示:</p><p><b>  圖(4)</b></p><p>  3 測試一下游戲下方各虛擬按鈕的效果,看是否能正常響應鼠標的操作,首先點擊“

123、設置”按鈕并在對話框中輸入數(shù)字5時如下圖(5)所示:</p><p><b>  圖(5)</b></p><p>  回車后如圖(6)所示:</p><p><b>  圖(6)</b></p><p>  點擊“是”按鈕后如圖(7)所示:</p><p><b>

124、;  圖(7)</b></p><p>  點擊主界面如圖(8):</p><p><b>  圖(8)</b></p><p>  由于篇幅有限不在一一測試,最后看下獲勝后的結(jié)果如圖(9)所示:</p><p><b>  圖(9)</b></p><p>&l

125、t;b>  第六章 結(jié)論</b></p><p>  通過對五子棋游戲的編寫,使自己對java語言有了更深的了解。也更加熟悉和了解了java開發(fā)工具Eclipse的使用</p><p>  同時,程序在編寫完畢之后還有很多地方需要完善。例如:可以把另一方選擇為電腦方,讓電腦自動下,也可以給游戲添加背景音樂;甚至可以修改成網(wǎng)絡游戲,用戶可以在網(wǎng)上對戰(zhàn)??傊?,有很多地方可以擴

126、充和完善。在此次畢業(yè)設計過程中我也學到了許多了關(guān)于計算機方面的知識,編程能力有了很大的提高。 </p><p><b>  參考文獻</b></p><p>  [1] 葉核亞,陳道蓄.Java 2程序設計實用教程.電子工業(yè)出版社,2008,11(8)</p><p>  [2] 嚴小衛(wèi),莫建文.智能五子棋的設計與實現(xiàn).廣西師范大學學報1999

127、年12月</p><p>  [3] (美)埃克爾 著,陳昊鵬 譯,《Java編程思想》 機械工業(yè)出版社2007年06</p><p>  [4]《Java課程設計案例精編》 張廣彬 孟紅蕊 張永寶 編著 清華大學出版社</p><p>  [5]www.mldn.cn</p><p><b>  致謝:</b>

溫馨提示

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

評論

0/150

提交評論