黑白棋游戲畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩19頁(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、<p><b>  目 錄</b></p><p>  第1章 課程設(shè)計(jì)的目的與要求1</p><p>  1.1 課程設(shè)計(jì)目的1</p><p>  1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境1</p><p>  1.3 課程設(shè)計(jì)的預(yù)備知識(shí)1</p><p>  1.4 課程設(shè)計(jì)要求1

2、</p><p>  第2章 課程設(shè)計(jì)內(nèi)容2</p><p>  2.1課程設(shè)計(jì)主要內(nèi)容2</p><p><b>  2.2概要設(shè)計(jì)2</b></p><p><b>  2.3詳細(xì)設(shè)計(jì)5</b></p><p>  2.4測(cè)試分析17</p>&

3、lt;p>  第3章 課程設(shè)計(jì)總結(jié)18</p><p><b>  參考資料19</b></p><p>  第1章 課程設(shè)計(jì)的目的與要求</p><p>  1.1 課程設(shè)計(jì)目的</p><p>  《JAVA程序設(shè)計(jì)》是計(jì)算機(jī)相關(guān)專業(yè)的必修專業(yè)基礎(chǔ)課程,其實(shí)踐性、應(yīng)用性很強(qiáng)。實(shí)踐教學(xué)環(huán)節(jié)是必不可少的一個(gè)

4、重要環(huán)節(jié)。本課程的程序設(shè)計(jì)專題實(shí)際是計(jì)算機(jī)相關(guān)專業(yè)學(xué)生學(xué)習(xí)完《JAVA程序設(shè)計(jì)》課程后,進(jìn)行的一次全面的綜合訓(xùn)練,JAVA程序設(shè)計(jì)的設(shè)計(jì)目的是加深對(duì)理論教學(xué)內(nèi)容的理解和掌握,使學(xué)生較系統(tǒng)地掌握程序設(shè)計(jì)及其在網(wǎng)絡(luò)開(kāi)發(fā)中的廣泛應(yīng)用,基本方法及技巧,為學(xué)生綜合運(yùn)用所學(xué)知識(shí),利用軟件工程為基礎(chǔ)進(jìn)行軟件開(kāi)發(fā)、并在實(shí)踐應(yīng)用方面打下一定基礎(chǔ)。</p><p>  1.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境</p><p&g

5、t;  硬件要求能運(yùn)行Windows 9.X操作系統(tǒng)的微機(jī)系統(tǒng)。JAVA程序設(shè)計(jì)語(yǔ)言及相應(yīng)的集成開(kāi)發(fā)環(huán)境,J2SDK和ECLIPSE開(kāi)發(fā)工具。</p><p>  1.3 課程設(shè)計(jì)的預(yù)備知識(shí)</p><p>  熟悉JAVA語(yǔ)言及ECLIPSE開(kāi)發(fā)工具。</p><p>  1.4 課程設(shè)計(jì)要求</p><p>  按課程設(shè)計(jì)指導(dǎo)書(shū)提供的課題

6、,要求學(xué)生在自行完成各個(gè)操作環(huán)節(jié),并能實(shí)現(xiàn)且達(dá)到舉一反三的目的,完成一個(gè)項(xiàng)目解決一類問(wèn)題。要求學(xué)生能夠全面、深入理解和熟練掌握所學(xué)內(nèi)容,并能夠用其分析、設(shè)計(jì)和解答類似問(wèn)題;對(duì)此能夠較好地理解和掌握,能夠進(jìn)行簡(jiǎn)單分析和判斷;能編寫(xiě)出具有良好風(fēng)格的程序;掌握J(rèn)AVA程序設(shè)計(jì)的基本,計(jì)算機(jī)范文網(wǎng) www.jsjfw.net,技能和面向?qū)ο蟮母拍詈头椒ǎ涣私舛嗑€程、安全和網(wǎng)絡(luò)等編程技術(shù)。同時(shí)培養(yǎng)學(xué)生進(jìn)行分析問(wèn)題、解決問(wèn)題的能力;培養(yǎng)學(xué)生進(jìn)行設(shè)計(jì)

7、分析、設(shè)計(jì)方法、設(shè)計(jì)操作與測(cè)試、設(shè)計(jì)過(guò)程的觀察、理解和歸納能力的提高。</p><p>  第2章 課程設(shè)計(jì)內(nèi)容</p><p>  2.1課程設(shè)計(jì)主要內(nèi)容</p><p>  Java語(yǔ)言的學(xué)習(xí)熱潮并沒(méi)有因?yàn)闀r(shí)間的推移而消退,相反,由于計(jì)算機(jī)技術(shù)的發(fā)展所帶來(lái)新應(yīng)用的出現(xiàn),Java越來(lái)越流行,這種情況是以往程序設(shè)計(jì)語(yǔ)言在其生存周期內(nèi)所不多見(jiàn)的。Java語(yǔ)言之所以這

8、樣長(zhǎng)盛不衰,一是因?yàn)槠浔姸嗟募夹g(shù)特點(diǎn)與現(xiàn)今的應(yīng)用十分合拍,可以覆蓋大部分的需求;二是因?yàn)镾UN公司不斷推出新的版本,完善Java自身的功能。有了這兩點(diǎn),Java語(yǔ)言成為程序員首選的程序設(shè)計(jì)開(kāi)發(fā)工具就在情理之中了。</p><p>  黑白棋,又叫翻轉(zhuǎn)棋(Reversi)、蘋(píng)果棋或奧賽羅棋(Othello)。一般棋子雙面為黑白兩色,故稱“黑白棋”。因?yàn)樾衅逯畷r(shí)將對(duì)方棋子翻轉(zhuǎn),變?yōu)榧悍狡遄樱视址Q“翻轉(zhuǎn)棋”。棋子雙面

9、為紅、綠色的稱為“蘋(píng)果棋”。 黑白棋的前身是英國(guó)人發(fā)明的翻轉(zhuǎn)棋(Reversi),后來(lái)由日本的長(zhǎng)谷川五郎加以改進(jìn),并改稱為奧賽羅棋(Othello),國(guó)內(nèi)習(xí)慣上稱之為黑白棋。這個(gè)棋類游戲在西方較為流行,但在中國(guó)起步較晚,還不很普及。</p><p>  黑白棋作為一個(gè)棋類競(jìng)技運(yùn)動(dòng),在民間十分流行,為了熟悉黑白棋規(guī)則及技巧,以及研究簡(jiǎn)單的人工智能,決定用Java開(kāi)發(fā)黑白棋游戲。主要完成了人機(jī)對(duì)戰(zhàn)功能,有很好的可擴(kuò)展

10、性。在人機(jī)對(duì)弈中通過(guò)深度搜索和估值模塊,來(lái)提高電腦棋手的智能。分析估值模塊中的影響精準(zhǔn)性的幾個(gè)要素,以及提出若干提高精準(zhǔn)性的辦法,以及對(duì)它們搜索的節(jié)點(diǎn)數(shù)進(jìn)行比較,在這些算法的基礎(chǔ)上分析一些提高提高電腦AI方案,如遞歸算法、電腦學(xué)習(xí)等。算法的研究有助于理解程序結(jié)構(gòu),增強(qiáng)邏輯思維能力,在其他人工智能方面也有很大的參考作用。盡管黑白棋的規(guī)則比較簡(jiǎn)單,但它所包括的豐富戰(zhàn)略,不亞于那些相當(dāng)“經(jīng)典”的策略游戲。其中人工智能部分,由于采用了大量的搜索

11、算法,其中很多被利用到各方面。</p><p><b>  2.2概要設(shè)計(jì)</b></p><p>  近來(lái)隨著計(jì)算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂(lè)項(xiàng)目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢(shì)。其中戰(zhàn)勝過(guò)國(guó)際象棋世界冠軍-卡斯帕羅夫的“深藍(lán)”便是最具說(shuō)服力的代表,其它像圍棋的“手淡”、

12、象棋的“將族”等也以其優(yōu)秀的人工智能深受棋迷喜愛(ài)。 </p><p>  越來(lái)越多的具有智能的機(jī)器進(jìn)入了人類的生活,人工智能的重要性如今顯而易見(jiàn)。自己對(duì)人工智能比較感興趣,而黑白棋游戲程序的開(kāi)發(fā)實(shí)現(xiàn)這個(gè)課題,正好提供給我這樣一個(gè)研究的機(jī)會(huì),通過(guò)對(duì)人工智能中博弈方面的研究(人機(jī)對(duì)弈),讓我在簡(jiǎn)單的人機(jī)對(duì)弈全局設(shè)計(jì),以及具體到相關(guān)算法上有了深入的了解。人工智能屬于計(jì)算機(jī)科學(xué)的領(lǐng)域,它以計(jì)算機(jī)技術(shù)為基礎(chǔ),近幾十年

13、來(lái),它的理論和技術(shù)已經(jīng)日益成熟,應(yīng)用領(lǐng)域也正在不斷擴(kuò)大,顯示出強(qiáng)大的生命力。人工智能大致可以分成幾個(gè)學(xué)科,它們每一個(gè)都是獨(dú)特的,但是它們常常又互相結(jié)合起來(lái)完成設(shè)計(jì)任務(wù),這時(shí),這些學(xué)科之間的差別就變的很模糊。人工智能在專家系統(tǒng),自然語(yǔ)言理解,自動(dòng)定理證明,自動(dòng)程序設(shè)計(jì),人工智能在機(jī)器人學(xué)、模式識(shí)別、物景分析、數(shù)據(jù)庫(kù)的智能檢索、機(jī)器下棋(實(shí)質(zhì)上是博弈論問(wèn)題)和家用電器智能化等領(lǐng)域都有廣泛的應(yīng)用。而這個(gè)課題就是和人工智能中的博弈論領(lǐng)域緊密相關(guān)

14、的。</p><p>  這個(gè)題目核心是人工智能和Socekt編程,并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技術(shù),正在各行各業(yè)廣泛滲透。智能已經(jīng)成為當(dāng)今各種新產(chǎn)品、新裝備的發(fā)展方向。所以,趁著這個(gè)機(jī)會(huì),對(duì)人工智能中比較容易實(shí)現(xiàn)的人機(jī)博弈進(jìn)行了解研究學(xué)習(xí),也是很實(shí)用且很有必要的。電腦究竟能否最終戰(zhàn)勝人腦?這是大家一直在探索的問(wèn)題。自從1997年黑白棋程序Logis

15、tello戰(zhàn)勝冠軍棋手村上健以來(lái),電腦程序已經(jīng)把人類棋手遠(yuǎn)遠(yuǎn)拋在后面。目前,程序可以記住大量的開(kāi)局定式、可以正確地判斷局面的優(yōu)劣、可以思考到二十幾步之后的局面,這都是人類棋手遠(yuǎn)不能及的。然而,電腦的這一切又都是人類所賦予的,因此究竟電腦和人腦孰優(yōu)孰劣,還難以定論。</p><p>  2.2.1 自定義說(shuō)明</p><p>  吃子規(guī)則:采用夾吃的原則,左圖用紅色標(biāo)記的是黑方可落子的位置。

16、當(dāng)黑方落子之后,則夾在兩黑子中間的白子都將變?yōu)楹谧印S覉D是落子后的棋盤(pán)布局,藍(lán)色標(biāo)記的是白方可落子的位置。</p><p>  夾子的方向包含:水平、豎直、斜對(duì)角</p><p>  2.2.2 程序流程圖</p><p> ?。?)落棋位置判斷:</p><p><b> ?。?)輸出成績(jī):</b></p>

17、<p>  (3)輸出最后的勝利者結(jié)果:</p><p>  2.2.3 各模塊功能及程序說(shuō)明</p><p>  落棋位置的判斷模塊:判斷落子后棋盤(pán)的變化,判斷棋手的落棋位置和次數(shù),兩方交換走棋。</p><p>  成績(jī)輸出模塊:判斷輸出哪個(gè)棋手的分,在不同的位置輸出,清空成績(jī),判斷哪方勝利。</p><p>  輸出勝利者

18、信息模塊:開(kāi)始判斷最后的結(jié)果,將兩人分?jǐn)?shù)分別輸出。 2.2.4 程序結(jié)果</p><p>  一方執(zhí)黑棋,一方執(zhí)白棋,輪流走棋,每方都試圖在游戲結(jié)束前讓自己棋子的數(shù)目多于對(duì)方。按鍵盤(pán)上的方向鍵可以上下左右移動(dòng)棋子,按回車鍵可以擺放棋子,同時(shí)也可以用鼠標(biāo)左鍵操作。在同上操作下到最后誰(shuí)的棋子多,誰(shuí)贏。</p><p><b>  2.3詳細(xì)設(shè)計(jì)</

19、b></p><p>  程序詳細(xì)設(shè)計(jì)代碼如下:</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.io.*;</p><p>  import java.net.*;</p>

20、<p>  import javax.swing.*;</p><p>  import java.util.*;</p><p>  import java.awt.Font;</p><p>  public class Main{</p><p>  public static void main(String args[])

21、{</p><p>  BlackAndWhiteDesign b = new BlackAndWhiteDesign();</p><p><b>  }</b></p><p><b>  }</b></p><p>  class BlackAndWhiteDesign extends Fra

22、me implements Runnable{</p><p>  Go Background = new Go();</p><p>  boolean stepColor = true;</p><p><b>  int PORT;</b></p><p>  Socket sendSocket;//主動(dòng)連接Soc

23、ket</p><p>  PrintWriter writer;//用來(lái)發(fā)送message</p><p>  boolean stopFlag;</p><p>  boolean isInitiative;</p><p>  Point messagePoint;</p><p>  Panel panel1

24、= new Panel();</p><p>  Panel panel2 = new Panel();</p><p>  Panel panel3 = new Panel();</p><p>  CheckboxGroup checkboxGroup1 = new CheckboxGroup();</p><p>  Checkbox

25、checkbox1 = new Checkbox();</p><p>  Checkbox checkbox2 = new Checkbox();</p><p>  Label label1 = new Label();</p><p>  TextField textField1 = new TextField(10);</p><p>

26、;  Panel PtextField1 = new Panel();</p><p>  Button button1 = new Button();</p><p>  Label label2 = new Label();</p><p>  Choice choice1 = new Choice();</p><p>  Button

27、 button2 = new Button();</p><p>  Button button3 = new Button();</p><p>  BorderLayout borderLayout3 = new BorderLayout();</p><p>  Panel panel4 = new Panel();</p><p> 

28、 Panel panel4_1 = new Panel();</p><p>  Panel panel4_2 = new Panel();</p><p>  Panel panel4_3 = new Panel();</p><p>  Label label3 = new Label("黑棋");</p><p> 

29、 Label label4 = new Label("白棋");</p><p>  JTextArea BlackNumber = new JTextArea("02"); //定義并初始化黑棋計(jì)數(shù)板</p><p>  JTextArea WhiteNumber = new JTextArea("02");

30、 //定義并初始化白棋計(jì)數(shù)板</p><p>  BlackAndWhiteDesign(){</p><p><b>  try</b></p><p><b>  {</b></p><p><b>  bwInit();</b></p><p>

31、;<b>  }</b></p><p>  catch(Exception e)</p><p><b>  {</b></p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b&

32、gt;  }</b></p><p>  private void bwInit() throws Exception{</p><p>  this.setTitle("網(wǎng)絡(luò)黑白棋 作者:劉茂龍");</p><p>  new Thread(this).start();//啟動(dòng)監(jiān)聽(tīng)線程</p>

33、<p>  this.PORT = 1976;</p><p>  this.isInitiative = false;//是否主動(dòng)連接</p><p>  this.stopFlag = false;//是否繼續(xù)監(jiān)聽(tīng)的標(biāo)志</p><p>  this.messagePoint = new Point(); </p>&l

34、t;p>  choice1.setBackground(new Color(236, 190, 98));</p><p>  this.choice1.addItem("黑");</p><p>  this.choice1.addItem("白");</p><p>  this.setBackground(new

35、Color(236, 190, 98));</p><p>  this.setSize(580,565);</p><p>  this.setResizable(false);</p><p>  this.setVisible(true);</p><p>  checkbox1.addMouseListener(new MouseAd

36、apter()</p><p><b>  {</b></p><p>  public void mouseClicked(MouseEvent e)</p><p><b>  {</b></p><p>  checkbox1_mouseClicked(e);</p><p

37、><b>  }</b></p><p><b>  });</b></p><p>  panel1.setLayout(new BorderLayout());</p><p>  checkbox1.setCheckboxGroup(checkboxGroup1);</p><p>  

38、checkbox1.setLabel("單機(jī)");</p><p>  checkbox2.addMouseListener(new MouseAdapter()</p><p><b>  {</b></p><p>  public void mouseClicked(MouseEvent e)</p>&

39、lt;p><b>  {</b></p><p>  checkbox2_mouseClicked(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  checkbox2.setCheckboxGroup(che

40、ckboxGroup1);</p><p>  checkbox2.setLabel("聯(lián)機(jī)");</p><p>  label1.setText("對(duì)方地址");</p><p>  button1.setBackground(new Color(236, 190, 98));</p><p>  

41、button1.setLabel("連接");</p><p>  button1.addActionListener(new ActionListener()</p><p><b>  {</b></p><p>  public void actionPerformed(ActionEvent e)</p>

42、<p><b>  {</b></p><p>  button1_actionPerformed(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  label2.setText(" &qu

43、ot;);</p><p>  button2.setBackground(new Color(236, 190, 98));</p><p>  button2.setLabel("開(kāi)始");</p><p>  button2.addActionListener(new ActionListener()</p><p>

44、;<b>  {</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  button2_actionPerformed(e);</p><p><b>  }</b

45、></p><p><b>  });</b></p><p>  button3.setBackground(new Color(236, 190, 98));</p><p>  button3.setLabel("重新開(kāi)始");</p><p>  this.button3.setEnab

46、led(false);</p><p>  button3.addActionListener(new ActionListener()</p><p><b>  {</b></p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  

47、{</b></p><p>  button3_actionPerformed(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  Background.addMouseListener(new MouseAdapter()&l

48、t;/p><p><b>  {</b></p><p>  public void mouseClicked(MouseEvent e)</p><p><b>  {</b></p><p>  Background_mouseClicked(e);</p><p><

49、b>  }</b></p><p><b>  });</b></p><p>  this.addWindowListener(new WindowAdapter()</p><p><b>  {</b></p><p>  public void windowClosing(

50、WindowEvent e)</p><p><b>  {</b></p><p>  this_windowClosing(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  panel3.

51、setLayout(new GridLayout(9, 1));</p><p>  panel3.setBackground(new Color(236, 190, 98));</p><p>  panel3.add(checkbox1);</p><p>  panel3.add(checkbox2);</p><p>  panel3

52、.add(label1);</p><p>  PtextField1.add(textField1);</p><p>  panel3.add(PtextField1);</p><p>  panel3.add(choice1);</p><p>  panel3.add(button1);</p><p>  

53、panel3.add(button2);</p><p>  panel3.add(button3);</p><p>  panel3.add(label2);</p><p>  panel4.setLayout(new GridLayout(1, 3));</p><p>  label3.setFont(new Font("

54、h",15,30));</p><p>  panel4_1.add(label3);</p><p>  BlackNumber.setFont(new Font("h",15,30));</p><p>  BlackNumber.setEditable(false);</p><p>  panel4_1.

55、add(BlackNumber);</p><p>  label4.setFont(new Font("h",15,30));</p><p>  panel4_2.add(label4);</p><p>  WhiteNumber.setFont(new Font("h",15,30));</p><

56、p>  WhiteNumber.setEditable(false);</p><p>  panel4_2.add(WhiteNumber);</p><p>  panel4.add(panel4_1);</p><p>  panel4.add(panel4_2);</p><p>  panel4.add(panel4_3);&

57、lt;/p><p>  this.panel1.add(this.Background,BorderLayout.CENTER);</p><p>  this.panel1.add(panel3, BorderLayout.EAST);</p><p>  this.panel1.add(panel4, BorderLayout.SOUTH);</p>

58、<p>  this.add(panel1, BorderLayout.CENTER);</p><p>  this.disableLink();//廢掉控件</p><p>  this.checkboxGroup1.setSelectedCheckbox(this.checkbox1);</p><p>  this.centerWindow();&

59、lt;/p><p>  this.Background.setEnabled(false);</p><p>  this.setVisible(true);</p><p><b>  }</b></p><p>  void checkbox1_mouseClicked(MouseEvent e)</p>

60、<p><b>  {</b></p><p>  this.button2.setEnabled(true);</p><p>  this.disableLink();</p><p><b>  }</b></p><p>  //disable聯(lián)機(jī)時(shí)用的控件 </p&g

61、t;<p>  void disableLink()</p><p><b>  {</b></p><p>  this.textField1.setBackground(new Color(236, 190, 98));</p><p>  this.textField1.setEnabled(false);</p>

62、;<p>  this.choice1.setEnabled(false);</p><p>  this.button1.setEnabled(false);</p><p><b>  }</b></p><p>  void checkbox2_mouseClicked(MouseEvent e)</p>&l

63、t;p><b>  {</b></p><p>  this.enableLink();</p><p><b>  }</b></p><p>  void enableLink()</p><p><b>  {</b></p><p>  t

64、his.textField1.setBackground(Color.white);</p><p>  this.textField1.setEnabled(true);</p><p>  this.choice1.setEnabled(true);</p><p>  this.button1.setEnabled(true);</p><

65、p>  this.button2.setEnabled(false);</p><p><b>  }</b></p><p>  void button1_actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  this.st

66、opFlag = false;</p><p>  this.goToLink(this.textField1.getText().trim(),this.PORT);</p><p>  this.button2.setEnabled(true);</p><p><b>  }</b></p><p><b&g

67、t;  //開(kāi)始</b></p><p>  void button2_actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if(e.getActionCommand().equals("開(kāi)始"))</p><p>&l

68、t;b>  {</b></p><p>  this.stopFlag = false;</p><p>  this.disableLink();</p><p>  this.button3.setEnabled(true);</p><p>  this.checkbox1.setEnabled(false);<

69、/p><p>  this.checkbox2.setEnabled(false);</p><p>  this.button2.setLabel("退出");</p><p>  if(this.isSingle())</p><p>  this.Background.setEnabled(true);</p>

70、;<p><b>  //判斷類型</b></p><p>  boolean isSingle()</p><p><b>  {</b></p><p>  return this.checkbox1.getState();</p><p><b>  }</b&g

71、t;</p><p>  void button3_actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if (isSingle()){</p><p>  int Choose;</p><p>  Choose=JOptio

72、nPane.showConfirmDialog(null, "您確定要重新開(kāi)始嗎?", "提示", JOptionPane.YES_NO_OPTION);</p><p>  if (Choose == JOptionPane.YES_OPTION){ </p><p>  this.Background.Restart();</p>

73、<p>  String s1, s2;</p><p>  if (this.Background.BlackNumberc<=9) s1="0"+Integer.toString(this.Background.BlackNumberc);</p><p>  else s1 = Integer.toString(this.Background.Bl

74、ackNumberc);</p><p>  if (this.Background.WhiteNumberc<=9) s2="0"+Integer.toString(this.Background.WhiteNumberc);</p><p>  else s2 = Integer.toString(this.Background.WhiteNumberc);&

75、lt;/p><p>  this.BlackNumber.setText(s1);</p><p>  this.WhiteNumber.setText(s2);</p><p>  this.button1.setEnabled(false);</p><p>  this.button2.setLabel("開(kāi)始");&l

76、t;/p><p>  this.button3.setEnabled(false);</p><p>  this.checkbox1.setEnabled(true);</p><p>  this.checkbox2.setEnabled(true);</p><p>  this.clearMyColor();</p><

77、;p>  this.Background.setEnabled(false);</p><p>  this.stepColor = true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else this.writer.println

78、("clear");</p><p><b>  }</b></p><p><b>  //顯示錯(cuò)誤信息</b></p><p>  void showError(String errorMessage)</p><p><b>  {</b></p

79、><p>  Graphics g=this.getGraphics();</p><p>  g.setColor(new Color(236,190,98));</p><p>  g.fillRect(10,10,300,15);</p><p>  g.setColor(Color.red);</p><p>  

80、g.drawString(errorMessage,22,20);</p><p>  g.fillOval(10,10,10,10);</p><p><b>  }</b></p><p>  private void bwInit() throws Exception</p><p><b>  {<

81、;/b></p><p>  this.setBackground(new Color(236, 190, 98));</p><p><b>  }</b></p><p><b>  }</b></p><p>  class Listen extends Thread</p>

82、<p><b>  {</b></p><p>  Socket socket;</p><p>  BlackAndWhiteDesign BlackAndWhiteDesign;</p><p>  public Listen(Socket socket,BlackAndWhiteDesign BlackAndWhiteDes

83、ign)</p><p><b>  {</b></p><p>  this.socket=socket;</p><p>  this.BlackAndWhiteDesign=BlackAndWhiteDesign;</p><p><b>  }</b></p><p>

84、;  public void run()</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  this.activeListen(this.socket);</p><

85、;p>  }catch(IOException ioe){this.BlackAndWhiteDesign.Background.showError("意外中斷");}</p><p><b>  }</b></p><p>  void activeListen(Socket socket) throws IOException</p

86、><p><b>  {</b></p><p>  BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));</p><p>  String message;</p><p>  while(true

87、)</p><p><b>  {</b></p><p>  message=reader.readLine();</p><p>  this.BlackAndWhiteDesign.doMessage(message);</p><p><b>  }</b></p><p

88、><b>  }</b></p><p><b>  }</b></p><p><b>  2.4測(cè)試分析</b></p><p><b>  程序運(yùn)行情況</b></p><p>  游戲初始界面如圖2-1所示。</p><p

89、><b>  圖2.1</b></p><p>  結(jié)束界面 如圖2-2所示</p><p><b>  圖2.2</b></p><p>  第3章 課程設(shè)計(jì)總結(jié)</p><p>  通過(guò)這兩周實(shí)訓(xùn)的時(shí)間,我學(xué)到了很多,自然在這期間遇到的困難數(shù)不勝數(shù),開(kāi)始最讓我沒(méi)轍的是題目不知道該訂什么好,

90、想過(guò)很多個(gè)題目但往往跟其他同學(xué)重復(fù)了,為了避免做出來(lái)的東西雷同了,只能繼續(xù)想其他方面的,想過(guò)去做些復(fù)雜的,但實(shí)在是能力有限,呵呵,最后終于決定做這個(gè)黑白棋游戲.</p><p>  這個(gè)黑白棋游戲就是在原有的程序基礎(chǔ)上增加了改變背景顏色功能、改變棋子顏色功能、計(jì)時(shí)器功能、聯(lián)網(wǎng)雙人對(duì)戰(zhàn)功能以及保存信息到文件功能,由于是在原有的基礎(chǔ)上修改的,雖然理論上那個(gè)來(lái)講這應(yīng)該很簡(jiǎn)單,不會(huì)太難,但當(dāng)我真正著手做起來(lái)得時(shí)候才發(fā)現(xiàn),

91、原來(lái)自己還是太嫩,剛開(kāi)始什么都不懂,于是我就去圖書(shū)館參閱了大量的資料,也不停的向同學(xué)們請(qǐng)教,終于漸漸的讓我從剛開(kāi)始連如何運(yùn)行程序,甚至類的作用等一些罪基本的東西都不清楚到最后通過(guò)努力終于把這個(gè)程序成功搞定.自然這期間除了辛苦也讓我明白了很多,有些小問(wèn)題也是不容忽視的,就如公共類只能有一個(gè),而且必須要有.及類名必須要同公共類名相同.否則程序就無(wú)法運(yùn)行.</p><p>  經(jīng)過(guò)編寫(xiě)這個(gè)黑白棋游戲,我認(rèn)識(shí)到應(yīng)該注意細(xì)

92、節(jié)問(wèn)題,雖然是很小的問(wèn)題,但可以提高自己編程的能力,而且還可以培養(yǎng)自己編程的嚴(yán)謹(jǐn)性,同時(shí)還可以為以后的編程積累經(jīng)驗(yàn)。除此之外讓我對(duì)java變成語(yǔ)言又有了更深一步的了解,曾經(jīng)對(duì)于一些類名的似是而非,現(xiàn)在通過(guò)編寫(xiě)這個(gè)程序讓我逐漸變得明朗一些了,至少可以分清父類子類,以及一些類和方法的用途,總之通過(guò)這次課程設(shè)計(jì)真的讓我學(xué)到了很多. </p><p><b>  參考資料</b></p>

93、<p>  [1] 王克宏編著 JAVA語(yǔ)言入門(mén) 清華大學(xué)出版社 1996</p><p>  [2] 旭日工作室編著 Java 1.1使用大全 電子工業(yè)出版社 1998</p><p>  [3][美]Cay S.Horstmann 程峰等譯 JAVA2核心技術(shù) 機(jī)械工業(yè)出版社 2003.6</p><p>  [4] Horstmann C

94、S,Cornell G著 Java2核心技術(shù) 機(jī)械工業(yè)出版社 2008.10</p><p>  [5] 馬凡 李璠編著 JavaScript實(shí)例應(yīng)用 中國(guó)鐵道出版社 2001.01</p><p>  [6]朱喜福 JAVA程序設(shè)計(jì)(第二版) 上海:人民郵電出版社 2007.3</p><p>  [7] 林勝利 王坤茹 JAVA優(yōu)化編程(第二版) 北京

95、:電子工業(yè)出版社 2008.10</p><p>  [8] 馬軍 JAVA完全自學(xué)手冊(cè) 北京:機(jī)械工業(yè)出版社 2006.5</p><p>  [9] 袁海燕 王文濤編著 JAVA實(shí)用程序設(shè)計(jì) 上海:人民郵電出版社 2009.11</p><p>  [10] 劉寶林 程序設(shè)計(jì)與案例 上海:高等教育出版社 2004.6</p>&

96、lt;p>  [11] 馬凡 李璠編著 JAVA核心技術(shù) 北京:機(jī)械工業(yè)出版社 2000.8</p><p>  [12] 王克宏編著 JAVA語(yǔ)言Applet編程技術(shù) 北京:清華大學(xué)出版社 2005.3</p><p>  [13] 施霞萍 Java程序設(shè)計(jì)教程 第2版 機(jī)械工業(yè)出版社 2006-6</p><p>  [14] 宛延闿

溫馨提示

  • 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ù)僅提供信息存儲(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)論