版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> Java課程設(shè)計(jì)報(bào)告</p><p> 題目:連連看</p><p> 姓名:</p><p> 學(xué)號(hào):</p><p> 起止時(shí)間:2012.3.19-2012.4.17</p><p> 自評(píng)成績(jī):優(yōu)秀</p><p> 理由:實(shí)現(xiàn)了連連看游戲的基本功能,增添了暫停,重
2、置,提示,消除等附加功能。時(shí)間條和消除效果的動(dòng)畫(huà)表示。</p><p><b> 【選題背景】: </b></p><p> 連連看游戲經(jīng)驗(yàn),玩法簡(jiǎn)單,休閑,益智,趣味,廣受歡迎。</p><p><b> 【選題目的】:</b></p><p> 學(xué)會(huì)JAVA程序開(kāi)發(fā)的環(huán)境搭建與配置,并在
3、實(shí)際運(yùn)用中學(xué)習(xí)和掌握J(rèn)AVA程序開(kāi)發(fā)的全過(guò)程。進(jìn)一步熟悉掌握J(rèn)AVA程序設(shè)計(jì)語(yǔ)音的基礎(chǔ)內(nèi)容,如用戶圖形界面設(shè)計(jì)、JAVA多線程編程、JAVA數(shù)據(jù)庫(kù)編程等。通過(guò)親自動(dòng)手寫(xiě)程序,拓展知識(shí)面,鍛煉調(diào)試能力。</p><p> 【系統(tǒng)分析與設(shè)計(jì)】:</p><p> 功能分析:實(shí)現(xiàn)連連看的基本游戲功能和重置、提示、消除功能</p><p> 設(shè)計(jì):通過(guò)對(duì)圖片的調(diào)用以及
4、設(shè)置是否可見(jiàn)來(lái)完成連連看的效果</p><p> 【課程設(shè)計(jì)中碰到的問(wèn)題及解決方案】:</p><p> 1.不知道如何進(jìn)行對(duì)數(shù)組中兩個(gè)元素是否可以消除的判斷</p><p> 2.時(shí)間條的動(dòng)態(tài)表現(xiàn)</p><p><b> 解決方案:</b></p><p> 對(duì)每個(gè)相同圖案進(jìn)行循環(huán)判
5、斷,直到找出滿足條件的情況</p><p> boolean verticalMatch(Point a, Point b) // 豎線上的判斷 </p><p> boolean horizonMatch(Point a, Point b) // 橫線上的判斷</p><p> 2.為了保證動(dòng)畫(huà)過(guò)程和游戲過(guò)程的平行運(yùn)行,因此將動(dòng)畫(huà)分離成一個(gè)獨(dú)立的控件,并且要
6、保證動(dòng)畫(huà)有自己?jiǎn)为?dú)的線程來(lái)運(yùn)行。當(dāng)每次用戶的分?jǐn)?shù)發(fā)生變化時(shí),我們可以使用 setScore(int l, int c) 方法同步分?jǐn)?shù)顯示的動(dòng)畫(huà)效果。</p><p><b> 【程序輸出結(jié)果】:</b></p><p><b> 游戲開(kāi)始</b></p><p><b> 提示功能</b><
7、;/p><p><b> 消除功能</b></p><p><b> 游戲結(jié)束</b></p><p><b> 關(guān)于</b></p><p> 【總結(jié)自己的體會(huì)和收獲】:</p><p> 通過(guò)這次課程設(shè)計(jì)我學(xué)到了不少東西,也發(fā)現(xiàn)了大量的問(wèn)題,同
8、時(shí)在設(shè)計(jì)的過(guò)程中也發(fā)現(xiàn)了自己的不足之處,對(duì)以前學(xué)過(guò)的知識(shí)理解的不夠深刻。對(duì)JAVA運(yùn)用圖片的調(diào)用和設(shè)置是否可見(jiàn)有了新的了解。但在部分功能的實(shí)現(xiàn)上還是有所不足,老師和同學(xué)都給予了很多幫助。讓我懂得了JAVA的重要性和如何應(yīng)用到實(shí)踐后上。</p><p><b> 【程序代碼另附】:</b></p><p> ImageFactory</p><p
9、> package nicholas.game.kyodai;</p><p> import javax.swing.ImageIcon;</p><p> import java.net.*;</p><p> public class ImageFactory {</p><p> private static Imag
10、eFactory imagefactory;</p><p> private static ImageIcon images[];</p><p> private ImageFactory() {</p><p> images = new ImageIcon[54];</p><p> URLClassLoader loader
11、 = (URLClassLoader)getClass().getClassLoader();</p><p> for(int i=0;i<39;i++) {</p><p> images[i] = new ImageIcon(getClass().getResource("images/"+i+".gif"));</p>
12、<p><b> }</b></p><p> images[39] = new ImageIcon(getClass().getResource("images/dots.gif"));</p><p> images[40] = new ImageIcon(getClass().getResource("images
13、/ico.gif"));</p><p> images[41] = new ImageIcon(getClass().getResource("images/topbar.gif"));</p><p> images[42] = new ImageIcon(getClass().getResource("images/splash.gif&q
14、uot;));</p><p> images[43] = new ImageIcon(getClass().getResource("images/sico.gif"));</p><p><b> }</b></p><p> public ImageIcon getImageicon(int i) {</p
15、><p> return images[i];</p><p><b> }</b></p><p> public static synchronized ImageFactory getInstance() {</p><p> if(imagefactory != null) {</p><
16、p> return imagefactory;</p><p><b> } else {</b></p><p> imagefactory = new ImageFactory();</p><p> return imagefactory;</p><p><b> }</b>
17、</p><p><b> }</b></p><p><b> }</b></p><p> KyodaiGrid</p><p> package nicholas.game.kyodai;</p><p> import java.awt.*;</p&g
18、t;<p> import javax.swing.*;</p><p> public class KyodaiGrid extends JLabel {</p><p> private int xpos;</p><p> private int ypos;</p><p> public KyodaiGrid(
19、int x, int y) {</p><p><b> xpos = x;</b></p><p><b> ypos = y;</b></p><p> this.setHorizontalAlignment(SwingConstants.CENTER);</p><p><b>
20、; }</b></p><p> public int getXpos() {</p><p> return xpos;</p><p><b> }</b></p><p> public int getYpos() {</p><p> return ypos;<
21、;/p><p><b> }</b></p><p> public boolean isPassable() {</p><p> return !isVisible();</p><p><b> }</b></p><p><b> }</b>
22、;</p><p><b> LevelInfo</b></p><p> package nicholas.game.kyodai;</p><p> import java.io.Serializable;</p><p> public class LevelInfo implements Serializ
23、able {//xBound為行號(hào),yBound為列號(hào)</p><p> private int xBound;</p><p> private int yBound;</p><p> public LevelInfo() {</p><p> xBound = 16;</p><p> yBound =
24、 9;</p><p><b> }</b></p><p> public LevelInfo(int x, int y){</p><p> xBound = x;</p><p> yBound = y;</p><p><b> }</b></p>
25、;<p> public int getXBound() {</p><p> return xBound;</p><p><b> }</b></p><p> public int getYBound() {</p><p> return yBound;</p><p&
26、gt;<b> }</b></p><p><b> }</b></p><p> MainFrame.java</p><p> package nicholas.game.kyodai;</p><p> import java.awt.*;</p><p>
27、 import java.awt.event.*;</p><p> import java.io.*;</p><p> import javax.swing.*;</p><p> import nicholas.swing.AboutDialog;</p><p> import nicholas.swing.JSplashWi
28、ndow;</p><p> public class MainFrame extends JFrame implements ActionListener {</p><p> private JMenuItem aboutItem;//菜單欄</p><p> private JMenuItem exitItem;</p><p>
29、 private JMenuItem startItem;</p><p> private JMenuItem optionItem;</p><p> private JMenuItem tipItem;</p><p> private JMenuItem refreshItem;</p><p> private JMenu
30、Item logItem;</p><p> private JMenuItem bombItem;</p><p> private JMenuItem pauseItem;</p><p> private MainPanel mainPanel;//完成主要功能</p><p> private LevelInfo levelI
31、nfo;</p><p> public MainFrame() {</p><p> super("連連看");</p><p> levelInfo = new LevelInfo();//設(shè)定游戲大小</p><p> setMenuBar();//設(shè)置菜單</p><p><b
32、> setUI();</b></p><p> setIconImage(ImageFactory.getInstance().getImageicon(43).getImage());</p><p> setSize(650,520);</p><p> Dimension screen = getToolkit().getScreen
33、Size();</p><p> setLocation((screen.width-getSize().width)/2, (screen.height-getSize().height)/2);</p><p> this.setVisible(true);</p><p> addWindowListener(</p><p>
34、 new WindowAdapter() {</p><p> public void windowClosing(WindowEvent e) {</p><p> System.exit(0);</p><p><b> }</b></p><p><b> }</b></p>
35、;<p><b> );</b></p><p><b> }</b></p><p> private void setMenuBar() {</p><p> JMenu fileMenu = new JMenu("游戲(G)");</p><p>
36、JMenu helpMenu = new JMenu("幫助(H)");</p><p> JMenu contMenu = new JMenu("輔助(C)");</p><p> fileMenu.setMnemonic('G');</p><p> helpMenu.setMnemonic('
37、;H');</p><p> contMenu.setMnemonic('C');</p><p> startItem = new JMenuItem("開(kāi)局(N)");</p><p> startItem.setMnemonic('N');</p><p> sta
38、rtItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));</p><p> pauseItem = new JMenuItem("暫停(P)");</p><p> pauseItem.setMnemonic('P');</p><p> pauseIt
39、em.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PAUSE,0));</p><p> refreshItem = new JMenuItem("刷新(R)");</p><p> refreshItem.setMnemonic('R');</p><p> refr
40、eshItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));</p><p> tipItem = new JMenuItem("提示(T)");</p><p> tipItem.setMnemonic('T');</p><p> tipItem.se
41、tAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));</p><p> optionItem = new JMenuItem("選項(xiàng)(O)...");</p><p> optionItem.setMnemonic('O');</p><p> logItem = n
42、ew JMenuItem("排行榜(B)...");</p><p> logItem.setMnemonic('B');</p><p> exitItem = new JMenuItem("退出(X)");</p><p> exitItem.setMnemonic('X');<
43、/p><p> aboutItem = new JMenuItem("關(guān)于(A)...");</p><p> aboutItem.setMnemonic('A');</p><p> aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));</
44、p><p> bombItem = new JMenuItem("炸彈(M)");</p><p> bombItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,0));</p><p> bombItem.setMnemonic('M');</p>
45、<p> startItem.addActionListener(this);</p><p> pauseItem.addActionListener(this);</p><p> refreshItem.addActionListener(this);</p><p> tipItem.addActionListener(this);&l
46、t;/p><p> optionItem.addActionListener(this);</p><p> logItem.addActionListener(this);</p><p> exitItem.addActionListener(this);</p><p> aboutItem.addActionListener(th
47、is);</p><p> bombItem.addActionListener(this);</p><p> fileMenu.add(startItem);</p><p> fileMenu.add(pauseItem);</p><p> contMenu.add(refreshItem);</p><
48、;p> contMenu.add(bombItem);</p><p> contMenu.add(tipItem);</p><p> fileMenu.addSeparator();</p><p> fileMenu.add(exitItem);</p><p> helpMenu.add(aboutItem);<
49、/p><p> helpMenu.add(contMenu);</p><p> JMenuBar bar = new JMenuBar();</p><p> bar.add(fileMenu);</p><p> bar.add(helpMenu);</p><p> setJMenuBar(bar);<
50、;/p><p><b> }</b></p><p> private void setUI() {</p><p> mainPanel = new MainPanel(levelInfo);</p><p> getContentPane().add(mainPanel,BorderLayout.CENTER);
51、</p><p><b> }</b></p><p> public static void main(String args[]) {</p><p> MainFrame application = new MainFrame();</p><p><b> }</b></p&g
52、t;<p> private void showAboutDialog() {</p><p> String s1="作者: 曲一鳴";</p><p> String s2="郵箱: 421992774@qq.com";</p><p> String s3="Have Fun!
53、!";</p><p> TextArea ta=new TextArea();</p><p> ta.setText(s1+"\n"+"\n"+"\n"+s2+"\n"+"\n"+"\n"+s3);</p><p> ta.se
54、tEditable(false);</p><p> JFrame f=new JFrame("關(guān)于");</p><p> f.setLocation(300, 300);</p><p> f.setSize(200,200);</p><p> f.add(ta);</p><p>
55、 f.setBackground(new Color(200,120,150));</p><p> f.setResizable(false);</p><p> f.setVisible(true);</p><p><b> }</b></p><p> public void actionPerforme
56、d(ActionEvent ae) {</p><p> if(ae.getSource()==startItem) {</p><p> mainPanel.restart();</p><p> } else if(ae.getSource()==pauseItem) {</p><p> mainPanel.setPaused(
57、!mainPanel.isPaused());</p><p> } else if(ae.getSource()==exitItem) {</p><p> System.exit(0);</p><p> } else if(ae.getSource()==aboutItem) {</p><p> showAboutDialog
58、();</p><p> } else if(ae.getSource()==bombItem) {</p><p> mainPanel.useBomb();</p><p> } else if(ae.getSource()==refreshItem) {</p><p> mainPanel.refresh();</p&g
59、t;<p> } else if(ae.getSource()==tipItem) {</p><p> mainPanel.showNext();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b
60、></p><p> MainPanel.java</p><p> package nicholas.game.kyodai;</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import java.util
61、.Vector;</p><p> import javax.swing.*;</p><p> import javax.swing.border.Border;</p><p> import nicholas.game.kyodai.*;</p><p> public class MainPanel extends JPane
62、l {</p><p> private int BOMB = 5;</p><p> private int BOMBP = 200;</p><p> private int REFRESH = 4;</p><p> private int REFRP = 250;</p><p> private i
63、nt TIP = 7;</p><p> private int TIPP = 120;</p><p> private int PROGRESS = 1200;</p><p> private int xBound;</p><p> private int yBound;</p><p> priva
64、te int pcount;</p><p> private int score;</p><p> private int refreshcount;</p><p> private int bombcount;</p><p> private int tipcount;</p><p> priva
65、te LevelInfo levelInfo;</p><p> private GridMouseAdapter gma;</p><p> private KyodaiGrid grid[][];</p><p> private KyodaiGrid nexts, nexte;</p><p> private Border s
66、electedBorder;</p><p> private Border opaqueBorder;</p><p> private Border tipBorder;</p><p> private Vector path[];</p><p> private Thread pthread;</p><
67、p> private JProgressBar progress;</p><p> private JLabel scoreLabel;</p><p> private JLabel refreshLabel;</p><p> private JLabel bombLabel;</p><p> private JLab
68、el tipLabel;</p><p> private JPanel gridPanel;</p><p> private boolean wingame;</p><p> public MainPanel(LevelInfo li) {</p><p> super(new BorderLayout());</p>
69、;<p> levelInfo = li;</p><p> path = new Vector[3];</p><p> path[0] = new Vector();</p><p> path[1] = new Vector();</p><p> path[2] = new Vector();</p>
70、;<p> setBackground(Color.black);</p><p> gma = new GridMouseAdapter();</p><p> opaqueBorder = BorderFactory.createLineBorder(getBackground());</p><p> //selectedBorder =
71、 BorderFactory.createLineBorder(Color.red);</p><p> selectedBorder = BorderFactory.createLineBorder(Color.red);</p><p> tipBorder = BorderFactory.createLineBorder(Color.green);</p><
72、p> setGridPanel();</p><p> setStatusPanel();</p><p><b> }</b></p><p><b> /**</b></p><p><b> *設(shè)置狀態(tài)面板</b></p><p>
73、<b> */</b></p><p> private void setStatusPanel() {</p><p> wingame = false;</p><p> JPanel panel = new JPanel();</p><p> panel.setBackground(Color.blac
74、k);</p><p> JLabel label = new JLabel("剩余時(shí)間:");</p><p> label.setForeground(Color.white);</p><p> panel.add(label);</p><p> progress = new JProgressBar(0,
75、PROGRESS);//時(shí)間條顯示</p><p> progress.setValue(PROGRESS);</p><p> progress.setPreferredSize(new Dimension(400,20));</p><p> progress.setForeground(Color.blue);</p><p>
76、 progress.setBorderPainted(false);</p><p> panel.add(progress);</p><p> score = 0;</p><p> scoreLabel = new JLabel(""+score);</p><p> scoreLabel.setForegr
77、ound(Color.yellow);</p><p> scoreLabel.setFont(new Font("Dialog",Font.BOLD,25));</p><p> scoreLabel.setHorizontalAlignment(SwingConstants.RIGHT);</p><p> scoreLabel.set
78、PreferredSize(new Dimension(100,20));</p><p> panel.add(scoreLabel);</p><p> add(panel,BorderLayout.NORTH);</p><p> panel = new JPanel();</p><p> panel.setBackgroun
79、d(Color.black);</p><p> label = new JLabel("剩余提示:");</p><p> label.setForeground(Color.yellow);</p><p> panel.add(label);</p><p> tipcount = TIP;</p>
80、;<p> tipLabel = new JLabel(""+tipcount);</p><p> tipLabel.setForeground(Color.green);</p><p> panel.add(tipLabel);</p><p> label = new JLabel("剩余炸彈:"
81、);</p><p> label.setForeground(Color.yellow);</p><p> panel.add(label);</p><p> bombcount = BOMB;</p><p> bombLabel = new JLabel(""+bombcount);</p>
82、<p> bombLabel.setForeground(Color.green);</p><p> panel.add(bombLabel);</p><p> label = new JLabel("可用刷新:");</p><p> label.setForeground(Color.yellow);</p>
83、;<p> panel.add(label);</p><p> refreshcount = REFRESH;</p><p> refreshLabel = new JLabel(""+refreshcount);</p><p> refreshLabel.setForeground(Color.green);<
84、/p><p> panel.add(refreshLabel);</p><p> add(panel,BorderLayout.SOUTH);</p><p> pthread = new ProgressThread();</p><p> pthread.start();</p><p><b>
85、 }</b></p><p> private void setGridPanel() {//完成布局</p><p> gridPanel = new JPanel();</p><p> gridPanel.setBackground(getBackground());</p><p> xBound = levelI
86、nfo.getXBound()+2;</p><p> yBound = levelInfo.getYBound()+2;</p><p> gridPanel.setLayout(new GridLayout(yBound,xBound,0,0));</p><p> grid = new KyodaiGrid[yBound][xBound];</p&
87、gt;<p> int count = 0;</p><p> int sub = levelInfo.getXBound()*levelInfo.getYBound()/4;</p><p> KyodaiGrid temp[] = new KyodaiGrid[xBound*yBound];</p><p> for(int y=0;y&l
88、t;yBound;y++) {</p><p> for(int x=0;x<xBound;x++) {</p><p> grid[y][x] = new KyodaiGrid(x, y);</p><p> if(x==0||x==(xBound-1)||y==0||y==(yBound-1)) {</p><p> gri
89、d[y][x].setIcon(ImageFactory.getInstance().getImageicon(39));</p><p> grid[y][x].setVisible(false);</p><p><b> } else {</b></p><p> grid[y][x].setIcon(ImageFactory.ge
90、tInstance().getImageicon(count%sub));</p><p> grid[y][x].setBorder(opaqueBorder);</p><p> grid[y][x].addMouseListener(gma);</p><p> temp[count] = grid[y][x];</p><p>
91、<b> count++;</b></p><p><b> }</b></p><p> gridPanel.add(grid[y][x]);</p><p><b> }</b></p><p><b> }</b></p>&
92、lt;p> JPanel t = new JPanel();</p><p> t.setBackground(Color.black);</p><p> t.add(gridPanel);</p><p> add(t,BorderLayout.CENTER);</p><p> shuffle(temp, count);
93、</p><p><b> }</b></p><p><b> /**</b></p><p><b> *開(kāi)始新游戲</b></p><p><b> */</b></p><p> public void resta
94、rt() {//重新開(kāi)始</p><p> resetStatusPanel();</p><p> resetGridPanel();</p><p><b> }</b></p><p><b> /**</b></p><p> *重置面板狀態(tài)和游戲圖標(biāo)<
95、;/p><p><b> */</b></p><p> private void resetStatusPanel() {</p><p> wingame = false;</p><p> score = 0;</p><p> scoreLabel.setText("&qu
96、ot;+score);</p><p> bombcount = BOMB;</p><p> bombLabel.setText(""+bombcount);</p><p> refreshcount = REFRESH;</p><p> refreshLabel.setText(""+r
97、efreshcount);</p><p> tipcount = TIP;</p><p> tipLabel.setText(""+tipcount);</p><p> progress.setValue(PROGRESS);</p><p> pthread.resume();</p><
98、;p><b> }</b></p><p> private void resetGridPanel() {</p><p> int count = 0;</p><p> int sub = (xBound-2)*(yBound-2)/4;</p><p> KyodaiGrid temp[] = n
99、ew KyodaiGrid[xBound*yBound];</p><p> for(int y=1;y<yBound-1;y++) {</p><p> for(int x=1;x<xBound-1;x++){</p><p> grid[y][x].setIcon(ImageFactory.getInstance().getImageicon(
100、count%sub));</p><p> grid[y][x].setBorder(opaqueBorder);</p><p> grid[y][x].setVisible(true);</p><p> temp[count] =grid[y][x];</p><p><b> count++;</b>&l
101、t;/p><p><b> }</b></p><p><b> }</b></p><p> shuffle(temp,count);</p><p><b> }</b></p><p><b> /**</b></
102、p><p><b> *暫停</b></p><p><b> */</b></p><p> public void setPaused(boolean p) {</p><p><b> if(p) {</b></p><p> pthread
103、.suspend();</p><p> gridPanel.setVisible(false);</p><p><b> } else {</b></p><p> pthread.resume();</p><p> gridPanel.setVisible(true);</p><p&
104、gt;<b> }</b></p><p><b> }</b></p><p><b> /**</b></p><p><b> *是否暫停</b></p><p><b> */</b></p><
105、p> public boolean isPaused() {</p><p> return !gridPanel.isVisible();</p><p><b> }</b></p><p><b> /**</b></p><p> *沒(méi)有布局存在時(shí)勝利</p>
106、<p><b> *計(jì)算得分</b></p><p><b> */</b></p><p> private void win() {</p><p> wingame = true;</p><p> pthread.suspend();</p><p&g
107、t; score += progress.getValue()/20+bombcount*BOMBP+refreshcount*REFRP+tipcount*TIPP;</p><p> scoreLabel.setText(""+score);</p><p><b> }</b></p><p> private
108、 void shuffle(KyodaiGrid array[], int count) {</p><p> if(wingame) return;</p><p><b> do {</b></p><p> setVisible(false);</p><p><b> int j,k;</
109、b></p><p> Icon temp;</p><p> for(int i=0;i<count;i++) {</p><p> j = (int)(Math.random()*count);</p><p> k = (int)(Math.random()*count);</p><p>
110、 temp = array[k].getIcon();</p><p> array[k].setIcon(array[j].getIcon());</p><p> array[j].setIcon(temp);</p><p><b> }</b></p><p> setVisible(true);<
111、/p><p> } while(!findPair());</p><p><b> }</b></p><p> public void refresh() {</p><p> if(wingame||progress.getValue()==0||refreshcount==0) return;</p&g
112、t;<p> KyodaiGrid temp[] = new KyodaiGrid[xBound*yBound];</p><p> int count = 0;</p><p> for(int y=1;y<yBound-1;y++) {</p><p> for(int x=1;x<xBound-1;x++) {</p&g
113、t;<p> if(grid[y][x].isVisible()) {</p><p> grid[y][x].setBorder(opaqueBorder);</p><p> temp[count] = grid[y][x];</p><p><b> count++;</b></p><p>
114、<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(count!=0) {</p><p> refreshcount--;</p><p> refreshLabel.s
115、etText(""+refreshcount);</p><p> shuffle(temp,count);</p><p> } else win();</p><p><b> }</b></p><p> private boolean xdirect(KyodaiGrid start,
116、 KyodaiGrid end,Vector path) {</p><p> if(start.getYpos()!=end.getYpos()) return false;</p><p> int direct = 1;</p><p> if(start.getXpos()>end.getXpos()) {</p><p>
117、; direct = -1;</p><p><b> }</b></p><p> path.removeAllElements();</p><p> for(int x=start.getXpos()+direct;x!=end.getXpos()&&x<xBound&&x>=0;x+=
118、direct) {</p><p> if(grid[start.getYpos()][x].isVisible()) return false;</p><p> path.add(grid[start.getYpos()][x]);</p><p><b> }</b></p><p> path.add(e
119、nd);</p><p> return true;</p><p><b> }</b></p><p> private boolean ydirect(KyodaiGrid start, KyodaiGrid end,Vector path) {</p><p> if(start.getXpos()!=e
120、nd.getXpos()) return false;</p><p> int direct = 1;</p><p> if(start.getYpos()>end.getYpos()) {</p><p> direct = -1;</p><p><b> }</b></p><
121、p> path.removeAllElements();</p><p> for(int y=start.getYpos()+direct;y!=end.getYpos()&&y<yBound&&y>=0;y+=direct) {</p><p> if(grid[y][start.getXpos()].isVisible()) r
122、eturn false;</p><p> path.add(grid[y][start.getXpos()]);</p><p><b> }</b></p><p> path.add(end);</p><p> return true;</p><p><b> }&l
123、t;/b></p><p> private int findPath(KyodaiGrid start, KyodaiGrid end) {</p><p> //0 conner</p><p> if(xdirect(start,end,path[0])) {</p><p><b> return 1;<
124、/b></p><p><b> }</b></p><p> if(ydirect(start,end,path[0])) {</p><p><b> return 1;</b></p><p><b> }</b></p><p>
125、 //1 conner</p><p> KyodaiGrid xy = grid[start.getYpos()][end.getXpos()];</p><p> if(!xy.isVisible()&&xdirect(start,xy,path[0])&&ydirect(xy,end,path[1])) {</p><p>
126、<b> return 2;</b></p><p><b> }</b></p><p> KyodaiGrid yx = grid[end.getYpos()][start.getXpos()];</p><p> if(!yx.isVisible()&&ydirect(start,yx,pat
127、h[0])&&xdirect(yx,end,path[1])) {</p><p><b> return 2;</b></p><p><b> }</b></p><p> //2 conner</p><p><b> //up</b></p
128、><p> path[0].removeAllElements();</p><p> for(int y=start.getYpos()-1;y>=0;y--) {</p><p> xy = grid[y][start.getXpos()];</p><p> yx = grid[y][end.getXpos()];</p
129、><p> if(xy.isVisible()) break;</p><p> path[0].add(xy);</p><p> if(!yx.isVisible()&&xdirect(xy,yx,path[1])&&ydirect(yx,end,path[2])) {</p><p><b>
130、 return 3;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //down</b></p><p> path[0].removeAllElements();</p>&l
131、t;p> for(int y=start.getYpos()+1;y<yBound;y++) {</p><p> xy = grid[y][start.getXpos()];</p><p> yx = grid[y][end.getXpos()];</p><p> if(xy.isVisible()) break;</p>&
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java連連看課程設(shè)計(jì)報(bào)告
- java連連看課程設(shè)計(jì)
- java連連看課程設(shè)計(jì)
- java課程設(shè)計(jì)—連連看
- 課程設(shè)計(jì)報(bào)告----java實(shí)現(xiàn)游戲連連看
- java課程設(shè)計(jì)--連連看游戲設(shè)計(jì)
- 連連看課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--連連看游戲的開(kāi)發(fā)
- labview連連看課程設(shè)計(jì)報(bào)告
- 連連看課程設(shè)計(jì)
- 連連看課程設(shè)計(jì)
- java課程設(shè)計(jì)說(shuō)明書(shū)---連連看
- 連連看c語(yǔ)言課程設(shè)計(jì)報(bào)告
- jav課程設(shè)計(jì)報(bào)告書(shū)——連連看
- 基于java連連看游戲
- java連連看含代碼
- android課程設(shè)計(jì)連連看小游戲
- 基于java的連連看游戲設(shè)計(jì)
- 連連看java小游戲畢業(yè)設(shè)計(jì)論文
- 連連看游戲開(kāi)題報(bào)告
評(píng)論
0/150
提交評(píng)論