黑白棋游戲畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  第1章 課程設(shè)計的目的與要求1</p><p>  1.1 課程設(shè)計目的1</p><p>  1.2 課程設(shè)計的實驗環(huán)境1</p><p>  1.3 課程設(shè)計的預(yù)備知識1</p><p>  1.4 課程設(shè)計要求1

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

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

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

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

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

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

8、樣長盛不衰,一是因為其眾多的技術(shù)特點與現(xiàn)今的應(yīng)用十分合拍,可以覆蓋大部分的需求;二是因為SUN公司不斷推出新的版本,完善Java自身的功能。有了這兩點,Java語言成為程序員首選的程序設(shè)計開發(fā)工具就在情理之中了。</p><p>  黑白棋,又叫翻轉(zhuǎn)棋(Reversi)、蘋果棋或奧賽羅棋(Othello)。一般棋子雙面為黑白兩色,故稱“黑白棋”。因為行棋之時將對方棋子翻轉(zhuǎn),變?yōu)榧悍狡遄?,故又稱“翻轉(zhuǎn)棋”。棋子雙面

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

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

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

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

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

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

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

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

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

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

19、b></p><p>  程序詳細設(shè)計代碼如下:</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;//主動連接Soc

23、ket</p><p>  PrintWriter writer;//用來發(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"); //定義并初始化黑棋計數(shù)板</p><p>  JTextArea WhiteNumber = new JTextArea("02");

30、 //定義并初始化白棋計數(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();//啟動監(jiān)聽線程</p>

33、<p>  this.PORT = 1976;</p><p>  this.isInitiative = false;//是否主動連接</p><p>  this.stopFlag = false;//是否繼續(xù)監(jiān)聽的標志</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("單機");</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)機");</p><p>  label1.setText("對方地址");</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("開始");</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("重新開始");</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)機時用的控件 </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;  //開始</b></p><p>  void button2_actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  if(e.getActionCommand().equals("開始"))</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, "您確定要重新開始嗎?", "提示", 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("開始");&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>  //顯示錯誤信息</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測試分析</b></p><p><b>  程序運行情況</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è)計總結(jié)</p><p>  通過這兩周實訓(xùn)的時間,我學(xué)到了很多,自然在這期間遇到的困難數(shù)不勝數(shù),開始最讓我沒轍的是題目不知道該訂什么好,

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

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

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

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

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

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

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

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論