五子棋小游戲課程設計_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  五子棋小游戲</b></p><p>  1.課程設計的目的 </p><p>  通過此次課程設計,鞏固所學Java語言基本知識,增進Java語言編輯基本功,掌握JDK、Editplus、Eclipse、JCreator等開發(fā)工具的運用,拓寬常用類庫的應用。使我們通過該教學環(huán)節(jié)與手段,把所學課程及相關知識加以融會貫通,全面掌握Java語

2、言的編程思想及面向對象程序設計的方法,為今后從事實際工作打下堅實的基礎。</p><p><b>  2.設計方案論證</b></p><p><b>  2.1設計思路</b></p><p><b>  (1)界面棋盤設計</b></p><p>  在對棋盤界面設計方面要

3、考慮簡潔友好,符合游戲者需求。棋子的設計方面系統中設置了兩種棋子顏色,white或者black, 游戲者可自行選擇。棋子怎樣畫出來,怎樣使棋子按我們所想的方式來繪制出來是設計的主要難題。運行時要求當每次點擊鼠標的時候就在點擊鼠標的地方畫一個棋子,所以得定義一個棋子的類使點擊鼠標時系統把棋子繪制出來。這樣主界面里的棋子就確定了,而且也確定了幾個所需要的類??梢韵榷x好這些類了。</p><p>  有了以上的準備就

4、可以把棋盤繪制出來了,下棋時每次在適當位置點擊鼠標的時候就在所點擊的位置上畫出你這個角色的顏色,然后計算機會自動的下棋,計算機自動下棋要有一個控制變量來控制能不能下棋。人可以隨意的下子,可是計算機就要計算在哪個位置下子了。這里由計算機下子的算法來確定,人人對戰(zhàn)的話就不象單機游戲一樣,要計算機來判斷人下子之后計算機下那一個地方了,人人對戰(zhàn)只要在雙方下子的時候判斷贏棋情況,當然還要同步的控制兩個人下棋的順序,這樣的話就要用到線程了,各自都繼

5、承或實現線程類或接口,以便各自能隨時單獨控制接發(fā)消息。</p><p><b>  (2)算法設計</b></p><p>  對于五子棋游戲,無論人機對戰(zhàn),還是雙人對戰(zhàn),都需要判斷棋盤上是否存在五子連珠情況,這既是游戲名字的由來,也是游戲結束的標志。判斷五子連珠的原理是從橫,豎,左斜線,右斜線4條線上判斷是否存在5個相連的同類棋子。</p><p

6、>  對戰(zhàn)一方落子后,在該處向8個方向檢測連續(xù)的同類棋子,如果檢測到直線方向上存在5個連續(xù)的同類棋子(包含本位置棋子),則判斷為“連五”并結束檢測循環(huán)。基于檢測結果,可以判斷游戲是否結束,并根據獲勝方的落子代碼判斷獲勝方是誰。</p><p>  由于不考慮禁手問題,在實現“連五”過程中,我們可以考慮完成“雙四”,“四三”,“雙三”,“沖四”,“活三”,“活四”來實現目的。</p><p

7、>  活四:有兩個點能形成“連五”的四就是活四;</p><p>  沖四:只有一個點能形成“連五”的四叫做“沖四”,或者叫做“單四”;</p><p>  活三:己方在落一子就能形成“活四”的三叫做“活三”。“活三”分為“連活三”和“跳活三”。連活三:在棋盤某一條陽線或陰線上有同色三子相連,且在此三子兩端延長線上有一端至少有一個,另一端至少有兩個無子的交叉點與此三子緊密相連。跳活三

8、:中間僅間隔一個無子交叉點的連三,但兩端延長線均至少有一個無子的交叉點與此三子相連。</p><p>  雙三:由于黑方走一著在無子交叉點上同時形成二個或二個以上黑方 " 活 " 的局面。</p><p>  雙四:由于黑方走一著在無子交叉點上同時形成二個或二個以上黑方 " 四 " 的局面。 </p><p>  四三:指某一

9、方同時具備兩個先手,其中一個是 " 四 " ,一個是 " 活三 " 。</p><p>  在實現上面這些高級算法的時候,我們需要一個基礎,就是對制定位置周圍情況進行檢測。在棋盤上面,棋子存在8個移動方向,檢測時需要對每個方向進行檢測。為了簡單直觀,這里將每步棋子的移動生成一個新的棋子。</p><p><b>  2.2需求分析</

10、b></p><p>  一款小游戲的確立是建立在各種各樣的需求上面的,這種需求往往來自于玩家的實際需求,其中玩家的實際需求最為重要.面對游戲擁有不同知識和理解層面的玩家,游戲制作人對玩家需求的理解程度,在很大程度上決定了此類游戲開發(fā)的成敗.因此如何更好地的了解,分析,明確玩家需求,并且能夠準確,清晰以文檔的形式表達給游戲制作人,保證開發(fā)過程按照滿足玩家需求為目的正確開發(fā)方向進行,是每游戲游戲制作人需要面對

11、的問題。</p><p>  作為五子棋的設計需要考慮到的最基本的需求莫過于人機對戰(zhàn)與人人對戰(zhàn)功能的實現,當然還有下棋過程中的下棋悔棋功能以及判斷游戲的勝負等方面的要求。當然最好是要考慮到界面的友好性,作為一個娛樂軟件,還應該考慮到玩家在游戲時的舒適性。</p><p><b>  2.3功能模塊圖</b></p><p><b> 

12、 2.4設計方法</b></p><p>  2.4.1 ChessFrame主要功能</p><p>  類ChessFrame主要功能是創(chuàng)建五子棋游戲主窗體和菜單,主要代碼如下:</p><p>  class ChessFrame extends JFrame implements ActionListener {</p><p

13、>  private String[] strsize={"20x15","30x20","40x30"};</p><p>  private String[] strmode={"人機對弈","人人對弈"};</p><p>  public static boolean isco

14、mputer=true,checkcomputer=true;</p><p>  private int width,height;</p><p>  private ChessModel cm;</p><p>  private MainPanel mp;</p><p>  2.4.2 游戲主窗體</p><p&

15、gt;  構造五子棋游戲的主窗體,主要代碼如下:</p><p>  public ChessFrame() {</p><p>  this.setTitle("五子棋游戲");</p><p>  cm=new ChessModel(1);</p><p>  mp=new MainPanel(cm);</p&g

16、t;<p>  Container con=this.getContentPane();</p><p>  con.add(mp,"Center");</p><p>  this.setResizable(false);</p><p>  this.addWindowListener(new ChessWindowEvent(

17、));</p><p>  MapSize(20,15);</p><p>  JMenuBar mbar = new JMenuBar();</p><p>  this.setJMenuBar(mbar);</p><p>  JMenu gameMenu = new JMenu("游戲");</p>&

18、lt;p>  mbar.add(makeMenu(gameMenu, new Object[] {</p><p>  "開局", "棋盤","模式", null, "退出"</p><p>  }, this));</p><p>  JMenu lookMenu =new JM

19、enu("視圖");</p><p>  mbar.add(makeMenu(lookMenu,new Object[] {</p><p>  "Metal","Motif","Windows"</p><p><b>  },this));</b></p&

20、gt;<p>  JMenu helpMenu = new JMenu("幫助");</p><p>  mbar.add(makeMenu(helpMenu, new Object[] {</p><p><b>  "關于"</b></p><p>  }, this));</p&

21、gt;<p><b>  }</b></p><p><b>  2.4.3 主菜單</b></p><p>  構造五子棋游戲的主菜單,代碼如下:</p><p>  public JMenu makeMenu(Object parent, Object items[], Object target){&l

22、t;/p><p>  JMenu m = null;</p><p>  if(parent instanceof JMenu)</p><p>  m = (JMenu)parent;</p><p>  else if(parent instanceof String)</p><p>  m = new JMenu(

23、(String)parent);</p><p><b>  else</b></p><p>  return null;</p><p>  for(int i = 0; i < items.length; i++)</p><p>  if(items[i] == null)</p><p

24、>  m.addSeparator();</p><p>  else if(items[i] == "棋盤"){</p><p>  JMenu jm = new JMenu("棋盤");</p><p>  ButtonGroup group=new ButtonGroup();</p><p&g

25、t;  JRadioButtonMenuItem rmenu;</p><p>  for (int j=0;j<strsize.length;j++){</p><p>  rmenu=makeRadioButtonMenuItem(strsize[j],target);</p><p><b>  if (j==0)</b></

26、p><p>  rmenu.setSelected(true);</p><p>  jm.add(rmenu);</p><p>  group.add(rmenu);</p><p><b>  }</b></p><p>  m.add(jm);</p><p>  }e

27、lse if(items[i] == "模式"){</p><p>  JMenu jm = new JMenu("模式");</p><p>  ButtonGroup group=new ButtonGroup();</p><p>  JRadioButtonMenuItem rmenu;</p><

28、p>  for (int h=0;h<strmode.length;h++){</p><p>  rmenu=makeRadioButtonMenuItem(strmode[h],target);</p><p><b>  if(h==0)</b></p><p>  rmenu.setSelected(true);</p

29、><p>  jm.add(rmenu);</p><p>  group.add(rmenu);</p><p><b>  }</b></p><p>  m.add(jm);</p><p><b>  }else</b></p><p>  m.a

30、dd(makeMenuItem(items[i], target));</p><p><b>  return m;</b></p><p><b>  }</b></p><p><b>  3.設計結果與分析</b></p><p>  (1)五子棋游戲的主界面,如圖2所

31、示。</p><p><b>  圖2 程序主界面</b></p><p>  (2)五子棋游戲的結束界面,如圖3所示。</p><p><b>  圖3 游戲結束界面</b></p><p>  (3)游戲游戲欄中的各個選項,如圖4所示。</p><p>  圖4 Game

32、欄中的選項</p><p>  (4)視圖設置欄中的各個選項,如圖5所示。</p><p>  圖5 Configure欄中的各個選項</p><p>  (5)Help幫助欄中的選項,如圖6所示。</p><p>  圖6 Help欄中的選項</p><p>  (6)點擊Help欄中的About選項彈出的界面,如圖

33、7所示。</p><p>  圖7 About選項彈出時的界面</p><p><b>  4.設計體會</b></p><p>  通過這次課程設計,我進一步加深對基礎理論的理解,擴大專業(yè)知識面,對收集資料、查閱文獻、方案制定等實踐方面得到了很好的鍛練,促進對所學知識應用能力的提高。同時我漸漸的復習了Java使用方法和編程語法,之后的編程過程

34、也相對得心應手,基本完成了預期計劃的要求。在此感謝我的指導老師—馮云老師,她在課題的研究上不遺余力的給予指導。她嚴謹的治學態(tài)度深深的影響了我,使我受益匪淺!</p><p><b>  5.參考文獻</b></p><p>  [1]耿祥義.JAVA大學實用教程.北京:電子工業(yè)出版社.2005.3:85-113</p><p>  [2]朱戰(zhàn)立

35、,沈偉.Java程序設計實用指南.北京:電子工業(yè)出版社,2005.1:48-135</p><p>  [3] 唐大仕.Java程序設計[M]. 北京:北方交通大學出版社:2007.05:56-92 </p><p>  [4]葉核亞. JAVA2程序設計實用教程[M].北京:電子工業(yè)出版社;2008.4:64-98</p><p>  [5]邢素萍. JAVA辦

溫馨提示

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

評論

0/150

提交評論