版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p> 軟件開發(fā)平臺……………………………</p><p> 游戲設計思路…………………………</p><p> 小游戲五子棋的開發(fā)過程………………</p><p> JAVA基礎知識………………………</p><p> 啟動程序的分
2、析……………………</p><p> 游戲設計過程………………………</p><p> 第三章 總結…………………………………………</p><p> 第四章 參考文獻……………………………………</p><p> 第五章 附錄…………………………………………</p><p><b> 第一章
3、</b></p><p><b> 游戲設計思路 :</b></p><p><b> 第二章 </b></p><p> java程序基礎知識</p><p> 本系統(tǒng)有4個程序每個程序都導入了不同的包和類運用了不同的所學知識。不同的類和包提供的方法、類型等都不同,本程序還使
4、用了繼承。以至使其能夠完成不同的功能。本節(jié)主要講述本系統(tǒng)所使用的基礎知識。</p><p><b> 類的基礎</b></p><p><b> <1、類的定義</b></p><p> JAVA中的類實質上是一種對象類型,它是對具有相同屬性和相同行為對象的一種抽象。類是java程序中最小的組成單位。</
5、p><p> <2、 Java中類定義的格式為:</p><p> [類修飾符] class 類名 [extends 基類] [implements 接口]</p><p> {// 成員變量聲明 (Member variable declaration)</p><p> // 成員方法聲明 (Member method d
6、eclaration)}</p><p> 其中,class、extends和implements都是Java的關鍵字。類修飾符、extends和implements是關于修飾符、繼承和接口的內容。</p><p><b> 2、繼承</b></p><p> 繼承性是面向對象程序設計語言的一個重要特征,通過繼承可以實現(xiàn)代碼的復用。Jav
7、a語言中,所有的類都是直接或間接的繼承 java.lang.object類而得到的。被繼承的類稱為基類或父類,繼承而的來的類成為子類。子類繼承基類的方法和屬性,同時也可以修改基類的方法和屬性 ,并增加自己新的屬性和方法。Java不支持多重繼承。即一個子類不能擁有兩個或以上的父類。</p><p><b> 3、包</b></p><p><b> <
8、;1、包的定義 </b></p><p> 在Java中,把相關的代碼組織到一起,稱為“包”。包市一種將相關類、接口或其他包組織起來的集合體,目的是為了將包含類代碼的文件組織起來,易于查找和使用。</p><p> <2、包的語法及導入:</p><p> Package PackageName; //包的定義</p>&
9、lt;p> Import java.awt.Color //導入包關鍵字Import</p><p><b> 4、接口</b></p><p><b> <1、接口的定義</b></p><p> Java中的接口可以看成是一種抽象類,它是一些抽象方法和常量的集合,其主要作用是使得處于不同層次
10、上以至于互不相干的類能夠執(zhí)行相同的操作,引用相同的值,而且在一個類中可以同時實現(xiàn)來自不同接口中的多種方法。</p><p> <2、接口的定義和實現(xiàn)</p><p> Interface 接口名{//抽象方法} //定義接口</p><p> Class 類名 implements 接口名稱{// 類體} 實現(xiàn)接口</p><p&
11、gt;<b> 5、線程</b></p><p><b> <1、線程的定義</b></p><p> 即同時執(zhí)行多個程序段,每個程序段都是一個線程。</p><p><b> <2、線程的周期</b></p><p> 線程的周期包括新建(new)、就緒
12、(start())、執(zhí)行(run())、阻塞(sleep()、wait()、suspend()、輸入/輸出流中發(fā)生線程阻塞)、死亡(stop()、destroy())。</p><p><b> 創(chuàng)建線程的方法:</b></p><p> 一種是創(chuàng)建Thread類的子類。另一種是實現(xiàn)Runnable接口.而本系統(tǒng)采用的是接口的方式。</p><
13、p> 6.Applet小應用程序</p><p> <1、 小應用程序與應用程序的區(qū)別:</p><p> 小應用程序沒有主方法不能單獨運行。而應用程序是擁有主方法的是可以單獨運行的。</p><p> <2、Applet 的執(zhí)行方式</p><p> 它有兩種:一種是瀏覽器中執(zhí)行,另一種是使用Appletvie
14、wer()命令執(zhí)行。本系統(tǒng)的兩個小應用程序都是采用編制html以瀏覽器形式執(zhí)行。</p><p> <3、Applet主類的一般框架結構圖</p><p> Import java.awt.*;</p><p> Import java.applet.*;</p><p> Public class 類名 extends App
15、let{</p><p> Public void init(){//初始化變量、設置字體、裝載圖片}</p><p> Public void start(){//啟動程序執(zhí)行或恢復程序執(zhí)行}</p><p> Public void stop(){//掛起正在執(zhí)行的程序,暫停程序}</p><p> Public viod des
16、troy(){終止程序的執(zhí)行釋放資源}</p><p> Public viod paint(Graphics g){// 完成繪制圖形等操作}}</p><p><b> 7、異常處理</b></p><p><b> <1、異常處理概念</b></p><p> 異常是Java程序
17、運行出現(xiàn)的錯誤。</p><p><b> <2、異常處理機制</b></p><p> 異常處理機制:當try子句中拋出的異常屬于某個catch子句的異常類時,該catch子句捕獲到異常,并且系統(tǒng)自動將異常類的實例傳遞給catch子句的異常類對象。在catch子句中,可以從異常類對象中獲取異常細節(jié),并可通過該對象使用異常類中的方法,對異常進行相應的處理。&
18、lt;/p><p><b> 啟動程序的分析</b></p><p> 本程序主要是為了啟動主程序所使用。讓使用者有個等待時間。本程序運用了多線程機制使其能同時進行多個任務。</p><p> 導入的各包詳細見后附錄。</p><p> public class Exec { //測試類</p>&
19、lt;p> public static void main(String[] args) {// 顯示帶有啟動進度條的歡迎窗體</p><p> new DemoWindow(); //實例化一個對象}</p><p><b> }</b></p><p> class DemoWindow extends JWindow i
20、mplements Runnable { // 帶有啟動進度條的歡迎窗體類</p><p> private JProgressBar progress = new JProgressBar(1, 100); // 進度條</p><p> ImagePanel ip = new ImagePanel(); // 圖片面板</p><p> pub
21、lic DemoWindow() { // 構造函數(shù)</p><p> add(ip, BorderLayout.CENTER); // 窗體布局</p><p> add(progress, BorderLayout.SOUTH); //將進度條放在邊界布局管理器南邊</p><p> progress.setStringPainted(tru
22、e); // 設置進度條</p><p> progress.setBorderPainted(false);</p><p> progress.setString("正在啟動應用程序...");</p><p> progress.setForeground(Color.blue);</p><p> prog
23、ress.setBackground(Color.white);</p><p> setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // 設置窗體光標</p><p> // 設置窗體正好顯示整個圖片</p><p><b> pack();</b></p>
24、<p> // 設置窗體居中顯示</p><p> Toolkit theKit = getToolkit();</p><p> Dimension wndSize = theKit.getScreenSize();</p><p> setLocation((wndSize.width - ip.getWidth()) / 2, (wndS
25、ize.height - ip</p><p> .getHeight()) / 2);</p><p> setVisible(true); // 設置窗體為可見</p><p> this.toFront();// 將當前窗體置于屏幕所有窗體的前面</p><p> Thread splashThread = new Thread
26、(this); //新建線程</p><p> splashThread.start(); // 啟動改變進度條的線程}</p><p> public void run() { // 改變進度條的線程方法</p><p> try { //異常處理機制</p><p> for (int i = 0; i
27、< 100; i++) { // 循環(huán)100次</p><p> Thread.sleep(100); // 暫停0.1秒</p><p> progress.setValue(progress.getValue() + 1); // 累加進度條的進度</p><p><b> }</b></p><p&
28、gt; if (progress.getValue()==100) 判斷進度條的值是否是100</p><p> { jsb dd=new jsb("我的記事本"); 若是則實例化jsb對象即啟動主程序</p><p><b> }}</b></p><p> catch (Exception e) { 若出
29、現(xiàn)異常則打印出相應的消息</p><p> System.out.println(e.getMessage());}</p><p> this.dispose(); // 釋放窗體資源</p><p><b> }}</b></p><p> class ImagePanel extends JPanel {
30、 // 圖片面板</p><p> Image image = null; // 圖片內容</p><p> public ImagePanel() { // 構造函數(shù)</p><p> MediaTracker tracker = new MediaTracker(this); // 創(chuàng)建MediaTracker類變量,以加載圖片,它可以
31、保證圖片加載完畢后才會進行下一步操作</p><p> try { //異常處理</p><p> image = Toolkit.getDefaultToolkit().getImage("images/tl.jpg"); // 加載圖片</p><p> tracker.addImage(image, 0); // 等待圖片加載
32、完畢</p><p> tracker.waitForID(0);}</p><p> catch (Exception e) { //若出現(xiàn)異常則打印出消息</p><p> System.out.println(e.getMessage());}</p><p> setPreferredSize(new Dimension(
33、image.getWidth(this), image</p><p> .getHeight(this))); // 設置圖片面板的大小正好容納整個圖片}</p><p> public void paintComponent(Graphics g) { // 重載的繪圖函數(shù),繪制指定圖片</p><p> super.paintComponent(g);
34、 //調用基類的方法</p><p> g.drawImage(image, 0, 0, this);}} </p><p> 第三節(jié) 游戲設計過程</p><p> 本程序是根據(jù)小游戲五子棋開發(fā)出來的,從游戲開始到結束,此下為小部分代碼分析:</p><p> 新建一個java文件:</p><p>&
35、lt;b> 2. 編寫代碼</b></p><p><b> 運行</b></p><p><b> 總分析:</b></p><p> 設計了游戲按照棋子的二維數(shù)組進行繪制棋子,玩家下棋后,程序修改數(shù)組相應位置,設置isPlayer1值,然后重新繪制(repaint),就更新了棋盤界面。由于游戲
36、的功能簡單,也為了使游戲的操作盡可能的簡便,我不在游戲進入時設計菜單,而是直接開始對戰(zhàn),在對戰(zhàn)界面,設置了重新開始和退出的按鈕。即運行即玩,可以悔檔,存檔,取檔,重開</p><p><b> 總結</b></p><p> 1.Java發(fā)展到現(xiàn)在,按應用來分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open NetEnvironmen
37、t)體系。</p><p> 2.Java語法:I/O包,Util包,Lang包.</p><p> 3.Servlet:就是服務器端小程序,他負責生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時,也是先轉換成Servlet再運行的。雖說JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來控制流程跳轉還是挺方便的,也令程序更清晰。</p>
38、;<p> 4.Javabean:可以把你的JSP中的Java代碼封裝起來,便于調用也便于重用</p><p><b> 參考文獻</b></p><p> 1、Java語言程序設計 主編: 賈振華 副主編:黃榮盛 賈振旺</p><p> 2、www.baidu.com 查詢相關資料</p><
39、p> 3、王克宏.Java技術及其應用 北京:高等教育出版社,1994</p><p> 4、林邦杰,徹底研究Java2。北京:電子工業(yè)出版社,2002</p><p> 5、溫平進、張威等。Instant Java2 實例解析。北京:北京希望電子出版社,2002</p><p> 6、林建銘.精通Java2.北京:科學出版社,2001</p&
40、gt;<p> 7、王勝捷.Java程序設計。北京:中國鐵道出版社,2002</p><p> 8、東方華人.Java2入門與提高.北京:清華大學出版社,2000</p><p> 9、洪威恩.Java2面向對象程序設計.北京:中國鐵道出版社 2002</p><p> 10、杜江、沈應逵。Java2實例教程.北京:清華大學出版社,2003&l
41、t;/p><p> 11、金勇化、曲俊生等.Java網(wǎng)絡高級教程.北京:北京希望電子出版社,2002</p><p> 12、張利國.Java實用案例教程。北京:清華大學出版社, 2003</p><p> 13、孫一林.Java語言程序設計.北京:清華大學出版社,2001</p><p> 14、殷兆麟.Java語言程序設計.北京:高
42、等教育出版社,2002</p><p> 15、殷兆麟..Java網(wǎng)絡編程基礎.北京大學出版社,2004</p><p> 16、教育部考試中心.全國計算機等級考試大綱(2004年)版.北京:高等教育出版社,2004</p><p> 17、孫燕.Java程序設計培訓教程.北京:清華大學出版社,2002</p><p><b>
43、; 附錄(代碼)</b></p><p> import java.util.*;</p><p> import java.io.*;</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import j
44、ava.applet.*;</p><p> import javax.swing.*;</p><p> class Gobang extends JFrame implements Runnable, ActionListener{</p><p> final static int Player=1;</p><p> fina
45、l static int AI =-1;</p><p> ClassLoader cl = this.getClass().getClassLoader();</p><p> Toolkit tk = Toolkit.getDefaultToolkit();</p><p> int length=14, game_state, winner, check
46、, step;</p><p> int grid[][] = new int[length][length];</p><p> int locX, locY /* 囪竚 */, count /* 硈囪計 */, x, y /* 既竚 */, displace_x=0, displace_y=0 /* 簿秖 */, direction;</p><p&g
47、t; ArrayList steps = new ArrayList(); /* 癘魁囪˙ */</p><p> JPopupMenu control_menu = new JPopupMenu(); /* 齡匡蟲 */</p><p> JMenuItem[] command = new JMenuItem[4];</p><p> String[
48、] command_str={"囪", "郎", "弄郎", "秨"};</p><p> int[][] dir = { {-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1} };</p><p> boolean[
49、] dir2 = new boolean[8]; </p><p> boolean turn;</p><p> String message;</p><p> final JDialog dialog = new JDialog(this, "叫匡", true);</p><p> Font font=n
50、ew Font("new_font", Font.BOLD, 20);</p><p> Grid grids[][] = new Grid[length][length];</p><p><b> Image </b></p><p> white= tk.getImage(cl.getResource("
51、;res/white.png"));</p><p><b> Image </b></p><p> black= tk.getImage(cl.getResource("res/black.png"));</p><p> Image title= tk.getImage(cl.getResource(&
52、quot;res/title.png"));</p><p> Image temp;</p><p> JPanel boardPanel, bigpanel;</p><p> JRadioButton[] choice = new JRadioButton[2];</p><p> final static int S
53、tart =0;</p><p> final static int Select =1;</p><p> final static int Playing =2;</p><p> final static int End =3;</p><p> final static int nil=-1; /* 礚よ */</p&
54、gt;<p> final static int oblique_1 =0; /* オ */</p><p> final static int oblique_2 =1; /* オ */</p><p> final static int horizontal =2; /* 絹 */</p><p> final stati
55、c int vertical=3; /* */</p><p> Gobang ( ){</p><p> super("き囪"); </p><p> boardPanel = new JPanel();</p><p> boardPanel.setLayout(new GridLayout(lengt
56、h, length, 0, 0));</p><p> boardPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);</p><p> for(int i=0; i<length; i++)</p><p> for(int j=0; j<length; j++)
57、 {</p><p> grids[i][j] = new Grid(i, j); </p><p> boardPanel.add(grids[i][j]);</p><p><b> }</b></p><p> bigpanel = new JPanel();</p><p>
58、bigpanel.add(boardPanel, BorderLayout.CENTER);</p><p> getContentPane().add(bigpanel, BorderLayout.SOUTH); </p><p> game_state=Start;</p><p> ThreadStart(); </p><
59、;p> dialog.setSize(160, 100);</p><p> dialog.setResizable(false);</p><p> dialog.setLocationRelativeTo(null);</p><p> ButtonGroup choice_group = new ButtonGroup();</p>
60、<p> JPanel choice_menu = new JPanel(); </p><p> choice[0] = new JRadioButton("堵", new ImageIcon(black), true);</p><p> choice[1] = new JRadioButton("フ", new Image
61、Icon(white));</p><p> for(int i=0; i<choice.length; i++) {</p><p> choice_menu.add(choice[i]);</p><p> choice_group.add(choice[i]); }</p><p> for(int i=0; i<c
62、ommand.length; i++){</p><p> command[i] =new JMenuItem(command_str[i]);</p><p> command[i].addActionListener(this);</p><p> control_menu.add(command[i]);}</p><p> J
63、Button select = new JButton("絋﹚");</p><p> JPanel select_menu = new JPanel(); </p><p> select_menu.add(select);</p><p> select.addActionListener(this);</p><p
64、> dialog.getContentPane().add(choice_menu, BorderLayout.NORTH);</p><p> dialog.getContentPane().add(select_menu, BorderLayout.CENTER);</p><p> setIconImage(title);</p><p> se
65、tResizable(false);</p><p> setSize(300, 335);</p><p> setVisible(true);</p><p> setLocationRelativeTo(null); }</p><p> public static void main(String[] arg) {</p
66、><p> Gobang application = new Gobang(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }</p><p> public void actionPerformed(ActionEvent event) {</p><p> if( event.ge
67、tSource().equals(command[0]) ) {</p><p> if(steps.size()!=0)</p><p><b> undo();</b></p><p><b> }</b></p><p> else if(event.getSource().equa
68、ls(command[1]) )</p><p><b> Save();</b></p><p> else if(event.getSource().equals(command[2]) )</p><p><b> Load();</b></p><p> else if(event.
69、getSource().equals(command[3]) )</p><p> ReStart();</p><p><b> else</b></p><p><b> {</b></p><p> if(choice[1].isSelected())</p><p
70、><b> {</b></p><p> temp=white; white=black; black=temp; }</p><p> dialog.dispose(); } }</p><p> public void WinCheck() {</p><p> check = turn? Play
71、er: AI;</p><p> direction=oblique_1;</p><p> WinCheck2(); }</p><p> public void WinCheck2() {</p><p><b> count=1;</b></p><p> switch(direc
72、tion) {</p><p> case oblique_1: displace_x=1;</p><p> displace_y=-1;</p><p> direction=oblique_2;</p><p><b> break;</b></p><p> case obli
73、que_2: displace_x=displace_y=1;</p><p> direction=horizontal; </p><p><b> break;</b></p><p> case horizontal: displace_x=1;</p><p> displace_
74、y=0;</p><p> direction=vertical; </p><p> break; </p><p> case vertical: displace_x=0;</p><p> displace_y=1;</p><p
75、> direction=nil;</p><p><b> break; }</b></p><p> x=locX+displace_x;</p><p> y=locY+displace_y;</p><p> while(x>=0 && x<length &&a
76、mp; y>=0 && y<length && grid[x][y]==check) {</p><p> count=count+1;</p><p> x=x+displace_x;</p><p> y=y+displace_y; }</p><p> x=locX-displac
77、e_x;</p><p> y=locY-displace_y;</p><p> while(x>=0 && x<length && y>=0 && y<length && grid[x][y]==check) {</p><p> count=count+1;<
78、/p><p> x=x-displace_x;</p><p> y=y-displace_y; } </p><p> if(count>=5) {</p><p> game_state=End;</p><p> winner=check;</p><p> Th
79、readStart();</p><p><b> }</b></p><p> else if(direction!=nil)</p><p> WinCheck2(); }</p><p> public void ReStart() {</p><p> for(int i=0;
80、i<length; i++)</p><p> for(int j=0; j<length; j++)</p><p> grids[i][j].Initial();</p><p><b> winner=0;</b></p><p> steps.clear();</p><p
81、> game_state=Playing; }</p><p> public void gobangRandom() {</p><p> displace_y=0;</p><p><b> do</b></p><p> { displace_x=(int)(Math.random()*8);&l
82、t;/p><p> x =locX+dir[displace_x][0];</p><p> y =locY+dir[displace_x][1]; </p><p> if(!dir2[displace_x])</p><p><b> {</b></p><p> displace_y
83、=displace_y+1;</p><p> dir2[displace_x]=true;</p><p><b> }</b></p><p> }while((x<0 || x>=length || y<0 || y>=length || grid[x][y]!=0) && displace_
84、y<8);</p><p> for(int i=0; i<8; i++)</p><p> dir2[i]=false;</p><p> if(x>=0 && x<length && y>=0 && y<length && grid[x][y]==0)<
85、;/p><p> setMark(x, y);</p><p><b> else</b></p><p> gobangRandom2(); }</p><p> private void gobangRandom2() {</p><p><b> do {</b>
86、;</p><p> x=(int)(Math.random()*length);</p><p> y=(int)(Math.random()*length);</p><p> }while(grid[x][y]!=0);</p><p> setMark(x, y);</p><p><b>
87、 }</b></p><p> private void gobangAI()</p><p><b> {</b></p><p> boolean play=true;</p><p> for(int i=2; i>0; i--) {</p><p> play
88、=!play;</p><p> gobangAI4(play);</p><p><b> if(turn)</b></p><p><b> return;</b></p><p><b> }</b></p><p> for(int i
89、=7; i>=4; i--)</p><p><b> {</b></p><p> play=!play;</p><p><b> step=i/2;</b></p><p> gobangAI2(play);</p><p><b> if(t
90、urn)</b></p><p><b> return;</b></p><p><b> }</b></p><p> gobangAI5();</p><p><b> if(!turn)</b></p><p> goban
91、gRandom();</p><p><b> }</b></p><p> private void gobangAI2(boolean player)</p><p><b> {</b></p><p> check = player? Player: AI;</p>&
92、lt;p> for(int i=0; i<length; i++)</p><p> for(int j=0; j<length; j++) {</p><p><b> if(turn)</b></p><p><b> break;</b></p><p> if(g
93、rid[i][j] == check)</p><p><b> {</b></p><p><b> count=1;</b></p><p> direction=oblique_1;</p><p> gobangAI3(i, j);</p><p><b
94、> } } }</b></p><p> private void gobangAI3(int x, int y)</p><p> { if(count==1) {</p><p><b> locX=x;</b></p><p><b> locY=y;</b>
95、</p><p><b> }</b></p><p> switch(direction)</p><p><b> {</b></p><p> case oblique_1: displace_x=1;</p><p> displace_y=-1;</
96、p><p><b> break;</b></p><p> case oblique_2: displace_x=displace_y=1;</p><p><b> break;</b></p><p> case horizontal: displace_x=1;</p>&
97、lt;p> displace_y=0;</p><p> break; </p><p> case vertical: displace_x=0;</p><p> displace_y=1;</p><p><b> break;</b></p>
98、<p><b> }</b></p><p> x=x+displace_x;</p><p> y=y+displace_y;</p><p> if(x>=0 && x<length && y>=0 && y<length && gri
99、d[x][y]==check)</p><p><b> {</b></p><p> count=count+1;</p><p> if(count==step)</p><p><b> {</b></p><p> if(x+displace_x>=0
100、 && x+displace_x<length && y+displace_y>=0 && y+displace_y<length && grid[x+displace_x][y+displace_y]==0)</p><p><b> {</b></p><p> if(x-ste
101、p*displace_x<0 || x-step*displace_x>=length || y-step*displace_y<0 || y-step*displace_y>=length || !gobang_SpaceAI(x+displace_x, y+displace_y) || (grid[x-step*displace_x][y-step*displace_y]!=0 && step
102、<3) ) /* 癸翴猵 */</p><p> gobangAI3_2(); </p><p><b> else </b></p><p> setMark2(x+displace_x, y+displace_y); }</p><p><b> else</b>&
103、lt;/p><p> gobangAI3_2(); }</p><p><b> else</b></p><p> gobangAI3(x, y); }</p><p><b> else</b></p><p> gobangAI3_2(); }</p&
104、gt;<p> private void gobangAI3_2() {</p><p> if(direction!=vertical) {</p><p><b> count=1;</b></p><p> direction=direction+1;</p><p> gobangAI3
105、(locX, locY); } }</p><p> private void gobangAI4(boolean player) {</p><p> check = player? Player: AI;</p><p> for(int i=0; i<length; i++)</p><p> for(int j=0;
106、j<length; j++) {</p><p><b> if(turn)</b></p><p><b> break;</b></p><p> if(grid[i][j]==0) {</p><p> direction=oblique_1;</p><p
107、><b> locX=i;</b></p><p><b> locY=j;</b></p><p> gobangAI4();</p><p><b> }</b></p><p><b> }</b></p><p&
108、gt;<b> }</b></p><p> private void gobangAI4() {</p><p><b> count=0;</b></p><p> switch(direction) {</p><p> case oblique_1: displace_x=1;&l
109、t;/p><p> displace_y=-1;</p><p> direction=oblique_2;</p><p><b> break;</b></p><p> case oblique_2: displace_x=displace_y=1;</p><p> directio
110、n=horizontal; </p><p><b> break;</b></p><p> case horizontal: displace_x=1;</p><p> displace_y=0;</p><p> direction=vertical;
111、 </p><p> break; </p><p> case vertical: displace_x=0;</p><p> displace_y=1;</p><p> direction=nil;</p><p><b> break
112、; }</b></p><p> x=locX+displace_x;</p><p> y=locY+displace_y;</p><p> while(x>=0 && x<length && y>=0 && y<length && grid[x][y]=
113、=check) {</p><p> count=count+1;</p><p> x=x+displace_x;</p><p> y=y+displace_y;</p><p><b> }</b></p><p> x=locX-displace_x;</p>&
114、lt;p> y=locY-displace_y; </p><p> while(x>=0 && x<length && y>=0 && y<length && grid[x][y]==check) {</p><p> count=count+1;</p><p>
115、; x=x-displace_x;</p><p> y=y-displace_y; }</p><p> if(count>=4)</p><p> setMark(locX, locY);</p><p> else if(direction!=nil)</p><p> gobangAI4()
116、; }</p><p> private void gobangAI5() {</p><p> for(int i=0; i<length; i++)</p><p> for(int j=0; j<length; j++) {</p><p><b> if(turn)</b></p&g
117、t;<p><b> break;</b></p><p> if(grid[i][j]==-1) {</p><p> direction=oblique_1;</p><p><b> locX=i;</b></p><p> locY=j; gobangAI5_2(
118、); } }}</p><p> private void gobangAI5_2() { </p><p><b> count=0;</b></p><p> switch(direction){</p><p> case oblique_1: displace_x=1;</p>&l
119、t;p> displace_y=-1;</p><p> direction=oblique_2;</p><p><b> break;</b></p><p> case oblique_2: displace_x=displace_y=1;</p><p> direction=horizontal
120、; </p><p><b> break;</b></p><p> case horizontal: displace_x=1;</p><p> displace_y=0;</p><p> direction=vertical; </p><
121、;p> break; </p><p> case vertical: displace_x=0;</p><p> displace_y=1;</p><p> direction=nil;</p><p><b> break; }</b></p>
122、;<p> x=locX+displace_x;</p><p> y=locY+displace_y;</p><p> while(x>=0 && x<length && y>=0 && y<length && grid[x][y]==0 && count<
123、4) {</p><p> count=count+1;</p><p> x=x+displace_x;</p><p> y=y+displace_y;</p><p><b> }</b></p><p> x=locX-displace_x;</p><p&g
124、t; y=locY-displace_y;</p><p> if(count==4 && x>=0 && x<length && y>=0 && y<length && grid[x][y]==0)</p><p> setMark(locX+displace_x, locY+d
125、isplace_y);</p><p> else if(count>1) {</p><p> count = count==4? 3: count;</p><p> while(x>=0 && x<length && y>=0 && y<length && g
126、rid[x][y]==0 && count<4) {</p><p> count=count+1;</p><p> x=x-displace_x;</p><p> y=y-displace_y; } </p><p> if(count==4)</p><p> s
127、etMark(locX+displace_x, locY+displace_y);</p><p> else if(direction!=nil)</p><p> gobangAI5_2(); }</p><p> else if(direction!=nil)</p><p> gobangAI5_2(); }</p&g
128、t;<p> private boolean gobang_SpaceAI(int x, int y) /* 璸衡逞緇フ竚 */</p><p> { int space=0;</p><p><b> do</b></p><p> { space=space+1;</p><p> x
129、=x+displace_x;</p><p> y=y+displace_y;</p><p> }while(x>=0 && x<length && y>=0 && y<length && grid[x][y]==0 && space<4);</p><p
130、> if(space+count>=5) /* 逞緇フ場だΤ硈絬ぇ */</p><p> return true;</p><p><b> else</b></p><p><b> {</b></p><p><b> space=0;</b>
131、</p><p> x=locX-displace_x;</p><p> y=locY-displace_y; </p><p> while(x>=0 && x<length && y>=0 && y<length && grid[x][y]==0 &&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java五子棋課程設計
- java課程設計--五子棋
- 五子棋java課程設計
- 五子棋java課程設計
- 五子棋java語言課程設計報告
- java課程設計--五子棋游戲
- java課程設計--對戰(zhàn)五子棋
- java課程設計報告---java 五子棋游戲設計
- java課程設計-五子棋游戲
- 五子棋-課程設計報告
- java課程設計--人機對弈五子棋
- java課程設計報告---單機版五子棋
- 五子棋課程設計
- java五子棋實習報告
- java課程設計五子棋(附源代碼)
- java_五子棋小游戲課程設計
- 五子棋游戲課程設計報告
- 五子棋畢業(yè)課程設計報告
- c++五子棋課程設計報告
- 面向對象程序設計---五子棋-java課程設計
評論
0/150
提交評論