Kira-2006
          -僅僅是一陣風也罷了,偏偏是這樣永恒, 僅僅是一場夢也罷了,偏偏是如此的真實,
          posts - 4,comments - 7,trackbacks - 0

             偶學習java也已經有半年的時間了,但是總覺得沒學到什么東西,有沒有遇到某位高人指點一下(沒那個命).感覺都有一點學不下去了.最近開始試著寫一些小的游戲,想增加一下自己的學習java的興趣....偶的第一個小游戲--掃雷...寫的還不是那么好,有一些功能還沒有用上.希望那位大蝦看到后能指點一下小弟........順便教偶一下java的學習之道..........

           
          //ExtendButton.java
          import java.awt.*;

          public class ExtendButton extends Button
          {
           private int Button_Position;
           private boolean Button_Status;
           private boolean Button_Visit;
           
           public void setPosition(int newPos)
           {
            Button_Position = newPos;
           }
           public int getPosition()
           {
            return Button_Position;
           }
           public void setStatus(boolean newStatus)
           {
            Button_Status = newStatus;
           }
           public boolean getStatus()
           {
            return Button_Status;
           }
           public void setVisit(boolean newVisit)
           {
            Button_Visit = newVisit;
           }
           public boolean getVisit()
           {
            return Button_Visit;
           }
          }



          //Game.java

          /**
           * AWT Sample application
           *
           * @author
           * @version 1.00 06/02/27
           */
          import java.awt.*;
          import java.awt.event.*;
          //import java.util.Random;
          import javax.swing.JOptionPane;

          public class Game implements ActionListener
          {
           private Frame frame;
           private MenuBar mb;
           private int initRow;
           private int initColumn;
           ExtendButton[] myButton;
           public Game()
           {
            frame = new Frame("掃雷 @ G.L");
            mb = new MenuBar();
            frame.setLayout(new GridLayout(10,10));
            
            setMenu(frame,mb);
            
            frame.pack();
            frame.setSize(200,200);
            frame.setVisible(true);
           }
           public void setMenu(Frame frame,MenuBar menuBar)
           {
            Menu m_Edit = new Menu("游戲");
            
            MenuItem mi_chuji = new MenuItem("初級");
            MenuItem mi_zhongji = new MenuItem("中級");
            MenuItem mi_gaoji = new MenuItem("高級");
            MenuItem mi_Exit = new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X));
            
            m_Edit.add(mi_chuji);
            m_Edit.add(mi_zhongji);
            m_Edit.add(mi_gaoji);
            m_Edit.addSeparator();
            m_Edit.add(mi_Exit);
            
            for(int i = 0;i < m_Edit.getItemCount();i++)
            {
             m_Edit.getItem(i).addActionListener(this);
            }
            mb.add(m_Edit);
            frame.setMenuBar(mb);
           }
           public void initGame(int bombCount,int row,int column,int width,int height)
           {
            initRow = row;
            initColumn = column;
            frame.setLayout(new GridLayout(row,column));
            frame.setSize(width,height);
            frame.setVisible(true);
            
            myButton = new ExtendButton[row*column];
            for(int i = 0;i < row*column;i++)
            {
             myButton[i] = new ExtendButton();
             myButton[i].setPosition(i);
             myButton[i].setStatus(false);
             myButton[i].setVisit(false);
             myButton[i].addActionListener(this);
             frame.add(myButton[i]);
            }
            
            System.gc();
            setBomb(bombCount);
           }
           public void setBomb(int bombCount)
           {
            int count = 0;
            while(count != bombCount)
            {
             int temp = (int)(Math.random()*initRow*initColumn);
             //Random cnd = new Random();
             //int temp = cnd.nextInt(initRow*initColumn);
             if(!myButton[temp].getStatus())
             {
              myButton[temp].setStatus(true);
              count++;
             }
            }
           }
           public void showBomb()
           {
            for(int i = 0;i < initRow*initColumn;i++)
            {
                if(myButton[i].getStatus())
                   myButton[i].setBackground(Color.BLACK);
            }
           }
           public void checkButton(ExtendButton tempButton)
           {
            int temp = 0;
               int[] circleNum = new int[8];
            
            if(!tempButton.getStatus())
            {
             circleNum[0] = tempButton.getPosition()-initColumn;
             circleNum[0] = (circleNum[0]<0) ? -1:circleNum[0];
             circleNum[1] = tempButton.getPosition()-initColumn+1;
             circleNum[1] = (circleNum[1]<0||circleNum[1]%initColumn==0) ? -1:circleNum[1];
             circleNum[2] = tempButton.getPosition()+1;
             circleNum[2] = (circleNum[2]>(initRow*initColumn-1)||circleNum[2]%initColumn==0) ? -1:circleNum[2];
             circleNum[3] = tempButton.getPosition()+initColumn+1;
             circleNum[3] = (circleNum[3]>(initRow*initColumn-1)||circleNum[3]%initColumn==0) ? -1:circleNum[3];
             circleNum[4] = tempButton.getPosition()+initColumn;
             circleNum[4] = (circleNum[4]>(initRow*initColumn-1)) ? -1:circleNum[4];
             circleNum[5] = tempButton.getPosition()+initColumn-1;
             circleNum[5] = (circleNum[5]>(initRow*initColumn-1)||tempButton.getPosition()%initColumn==0) ? -1:circleNum[5];
             circleNum[6] = tempButton.getPosition()-1;
             circleNum[6] = (circleNum[6]<0||tempButton.getPosition()%initColumn==0) ? -1:circleNum[6];
             circleNum[7] = tempButton.getPosition()-initColumn-1;
             circleNum[7] = (circleNum[7]<0||tempButton.getPosition()%initColumn==0) ? -1:circleNum[7];
            }
            else if(tempButton.getStatus())
            {
               JOptionPane.showMessageDialog( null, "You Failed!", "Dialog",JOptionPane.INFORMATION_MESSAGE );
                     this.showBomb();
                     return;
            }
            if(!tempButton.getStatus() && !tempButton.getVisit())
            {
             for(int i = 0;i<8;i++)
             {
                if((circleNum[i]!=-1) && myButton[circleNum[i]].getStatus())
                      temp++;
             }
             if(temp>0)
             {
              tempButton.setVisit(true);
              tempButton.setLabel(String.valueOf(temp));
             }
             else if(temp==0)
             {
              tempButton.setVisit(true);
              tempButton.setBackground(Color.GREEN);
              for(int j = 0;j<8;j++)
              {
               if(circleNum[j]!=-1 && !myButton[circleNum[j]].getStatus())
                  checkButton(myButton[circleNum[j]]);
              }
             }
            }
           }
           public void checkStop()
           {
            boolean bn=true;
            for(int i = 0;i < initRow*initColumn;i++)
            {
             if(!myButton[i].getVisit())
             {
              if(!myButton[i].getStatus())
                bn=false;
             }
            }
            if(bn)
            {
             JOptionPane.showMessageDialog( null, "You Winning!", "Dialog",JOptionPane.INFORMATION_MESSAGE );
             return;
            }
           }
           public void actionPerformed(ActionEvent ae)
           {
            ExtendButton extendButton;
            if(ae.getSource() instanceof ExtendButton)
            {
             extendButton = (ExtendButton)ae.getSource();
             checkButton(extendButton);
             checkStop();
            }
                else if(ae.getSource() instanceof MenuItem)
            {
             if(ae.getActionCommand()=="初級")
             {
              initGame(10,9,9,250,270);
             }
             if(ae.getActionCommand()=="中級")
             {
               initGame(40,16,16,480,500);
             }  
             else if(ae.getActionCommand()=="高級")
             {
              initGame(99,16,30,700,500);
             }
             else if(ae.getActionCommand()=="退出")
             {
              frame.dispose();
             }
            }
           }
           public static void main(String[] args)
           {
            Game game = new Game();
            new WindowAdapter()
            {
             public void windowClosing(WindowEvent e)
             {
              System.exit(0);
             }
            };
           }
          }

          posted on 2006-03-01 10:21 Kira-2006 閱讀(153) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 兰溪市| 广元市| 陕西省| 蓬溪县| 高平市| 汨罗市| 青川县| 临颍县| 台山市| 宝应县| 集安市| 南木林县| 荔浦县| 金乡县| 邯郸县| 彭州市| 额尔古纳市| 西华县| 积石山| 德兴市| 太白县| 康乐县| 福州市| 社会| 思南县| 河东区| 东山县| 天峨县| 安仁县| 柘城县| 鹤山市| 庆云县| 大庆市| 昔阳县| 青河县| 青川县| 庆元县| 阳城县| 岚皋县| 六安市| 锡林浩特市|