⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pintuyx.txt

📁 我是新手 所以弄了个简单的 只是一个简单的拼图游戏 多多指教
💻 TXT
字号:
import java.awt.*;
import javax.swing.*;
import java.net.URL;
import java.util.*;

import java.awt.event.MouseMotionListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

import java.awt.MenuComponent;
import java.awt.Dialog;
import java.awt.event.*;
import java.util.Timer;

//import java.awt.PopupMenu;

import java.lang.Math;

//import java.awt.Insets;

public class Sandy {
     public final static boolean RIGHT_TO_LEFT = false;
     public final static boolean EASY_GAME=false;
     public final static boolean HARD_GAME=true;
    
     static boolean BEGIN_GAME=false;
     static boolean FINISHED_GAME=false;
     
     static boolean DIFICULTY_GAME=EASY_GAME;
     
     static int TIME_PRO=0;
     static Timer timer;
     
     static JFrame Frame;
     
     static CheckboxMenuItem a1;
     static CheckboxMenuItem a2;
    
     final static int NUM_IMAGES = 9;
     static Container  pane;
     static ImageIcon[] images;
     static int[] sort;
     
     static int x_ClickPos=-1;
     static int y_ClickPos=-1;
     static int x_ReleasePos=-1;
     static int y_ReleasePos=-1;
     
   //  static Insets insetsofpane;
     static int x_paneWidth=480;
     static int y_paneHeighth=360;
    
   
    public static void addComponentsToPane(Container pane1) {
        
        
         pane=new Container();
         pane=pane1;
        if (RIGHT_TO_LEFT) {
            pane.setComponentOrientation(
                ComponentOrientation.RIGHT_TO_LEFT);
        }
         pane.setLayout(new GridLayout(0,3));
         
         
           InitSort();  
                    
           addstaticTopanel();//pane,images, sort);      
           
         //   insetsofpane=new Insets(0,0,0,0);
         //   insetsofpane=pane.getInsets();
          //  x_paneWidth=insetsofpane.right-insetsofpane.left;
         //   y_paneHeighth=insetsofpane.bottom-insetsofpane.top; 
   
          pane.addMouseMotionListener(
                 new MouseMotionListener()
                 { 
                             public void mouseMoved(MouseEvent e)
                              {
                                //   System.out.println(e.getComponent().getClass().getName()+e.getX()+"  "+e.getY()); 
                           }
                           public void mouseDragged(MouseEvent e) 
                           {
                                //  System.out.println(e.getComponent().getClass().getName());
                           }
                 }
              );  
              
          pane.addMouseListener(
                 new MouseListener()
                 {
                       public void mousePressed(MouseEvent e) 
                       {
                           //Dialog dlg=new Dialog(Frame,"win",true);
                        // dlg.setUndecorated(true);
                       //  dlg.setSize(100,100);
                       //    dlg.setVisible(true);
                       //    dlg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
                    }

                    public void mouseReleased(MouseEvent e) 
                    {
      
                    }

                    public void mouseEntered(MouseEvent e) 
                    {
  
                    }

                     public void mouseExited(MouseEvent e) 
                     {
   
                     }

                     public void mouseClicked(MouseEvent e) 
                     {
                           if(BEGIN_GAME==false)return; //if player have not began the game;
                           
                        pane.removeAll(); 
                        
                        if(x_ClickPos==-1)
                        {
                            x_ClickPos=e.getX()*3/x_paneWidth;
                            y_ClickPos=e.getY()*3/y_paneHeighth;
                            if(sort[y_ClickPos*3+x_ClickPos]==8)
                            {
                                x_ClickPos=-1;
                              y_ClickPos=-1;                        
                            }
                            System.out.println(1);//e.getComponent().getClass().getName()+x_paneWidth);
                        } 
                        else if(DIFICULTY_GAME==EASY_GAME)
                        {
                            x_ReleasePos=e.getX()*3/x_paneWidth;
                            y_ReleasePos=e.getY()*3/y_paneHeighth;                   
                            if(sort[y_ReleasePos*3+x_ReleasePos]==8)
                            {
                                sort[y_ReleasePos*3+x_ReleasePos]=sort[y_ClickPos*3+x_ClickPos];
                                sort[y_ClickPos*3+x_ClickPos]=8;
                                x_ClickPos=-1;
                              y_ClickPos=-1;  
                              System.out.println(2);
                            }
                            else
                            {
                                x_ClickPos=e.getX()*3/x_paneWidth;
                              y_ClickPos=e.getY()*3/y_paneHeighth;                           
                              System.out.println(3);
                            }
                            System.out.println(4);
                        }  
                        else if(DIFICULTY_GAME==HARD_GAME)
                        {
                        //    Math ma=new Math();
                            x_ReleasePos=e.getX()*3/x_paneWidth;
                            y_ReleasePos=e.getY()*3/y_paneHeighth;
                            if(sort[y_ReleasePos*3+x_ReleasePos]==8&&(java.lang.Math.abs(x_ReleasePos-x_ClickPos)+java.lang.Math.abs(y_ReleasePos-y_ClickPos)==1))
                            {
                                sort[y_ReleasePos*3+x_ReleasePos]=sort[y_ClickPos*3+x_ClickPos];
                                sort[y_ClickPos*3+x_ClickPos]=8;
                                x_ClickPos=-1;
                              y_ClickPos=-1;  
                              System.out.println(5);
                            }
                            else if(sort[y_ReleasePos*3+x_ReleasePos]!=8)
                            {
                                x_ClickPos=e.getX()*3/x_paneWidth;
                              y_ClickPos=e.getY()*3/y_paneHeighth;                           
                              System.out.println(6);
                            }
                            System.out.println(7);
                                                                               
                        }   

                       
                        //judge if the game is finished!
                        int i;
                        for(i=0;i<8;i++)
                        {
                            if(sort[i]!=i)break;                            
                        }
                        if(i==8)
                        {
                            FINISHED_GAME=true;
                            BEGIN_GAME=false;
                            Frame.setTitle("Congratulations!FINISHED at "+TIME_PRO+" second!");
                            timer.cancel();
                            TIME_PRO=0;
                        }
                                                                  
                        //Reconstruct the Pane
                            addstaticTopanel();
                            pane.validate();
 
                     } 
                                         
                 }
           );
    }
       
    /*  Add the picture to the panel */
    
    public static void addstaticTopanel()//Container pane,ImageIcon[] images,int[] sort)
    {
        for (int i = 0; i < NUM_IMAGES; i++) {
                     JLabel IconLabel = new JLabel();
                     if(sort[i]!=8||FINISHED_GAME==true)
                     {
                 images[i] = createImageIcon("/images/image" + (sort[i]+1) + ".jpg");
                 IconLabel.setIcon(images[i]);//i]);//sort[i]]);
                 } 
                 
                 IconLabel.setText("");  
                 pane.add(IconLabel);//1[i]);  
 
        }//endl for
              
    }
      
   /* Initial the sort of the picture */ 
    public static void InitSort()
    {
         images = new ImageIcon[NUM_IMAGES];
        sort=new int[NUM_IMAGES];   
        
        if(BEGIN_GAME==false)
        {
                   for(int i=0;i<=8;i++)
                   {
                      sort[i]=i;                            
                   }
                   return;
        }
                
        for(int j=0;j<NUM_IMAGES;j++)
        {
             sort[j]=-1;
        }
        Calendar calend = new GregorianCalendar();
         Random rd=new Random(calend.get(Calendar.SECOND));
        for(int j=0;j<NUM_IMAGES;)
         {
          int n=rd.nextInt();           
            n=n%9;
          if(n<0)n=-n;    
             if(sort[n]==-1)sort[n]=j++;        
          }
          
        for(int j=0;j<NUM_IMAGES;j++)
        {
             String str=new String();
          str=""+sort[j];
            System.out.println(str);
        }
            
    }
    
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
         Frame = new JFrame("GridLayoutDemo");
        Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          
        Frame.setResizable(false);
        //Set up the content pane.
        addComponentsToPane(Frame.getContentPane());
                    
        MenuBar menuBar = new MenuBar();
        Menu menuFile = new Menu("MENU"); 
   
   //Add begin menu!!!!!!!!!!!!!
        MenuItem menuFileExit = new MenuItem("begin new game");       
        menuFileExit.addActionListener(
        new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                BEGIN_GAME=true;
                FINISHED_GAME=false;
                
                pane.removeAll();
              InitSort();               
            addstaticTopanel();//pane,images, sort);
            pane.validate();
             
              System.out.println("begin");
            Frame.setTitle("A Small Game!"); 
        
            if(TIME_PRO>0)
            {
                TIME_PRO=0;
                return; 
            }        
        
        /* Set Timer for the game!*/      
               int delay = 1000;   // delay for 5 sec.
             int period = 1000;  // repeat every sec.
             timer = new Timer();
    
             timer.scheduleAtFixedRate(new TimerTask() {
                      public void run() {
                                  // Task here ...
                                  TIME_PRO++;
                                  Frame.setTitle("you have used "+TIME_PRO+" second already!");                                 
                          }
                  }, delay, period);
              
          }
        }     
      ); 
        menuFile.add(menuFileExit);
  
  //Add Dif menu!!!!!!!!!!!!!!!!! 
       Menu menuDif=new Menu("Difficulty!");          
         a1=new CheckboxMenuItem("Easy");
         a2=new CheckboxMenuItem("Hard");     
        menuDif.add(a1);
        menuDif.add(a2);
        
        a1.setState(true);
        a1.addItemListener(
        new ItemListener()
        {
            public void itemStateChanged(ItemEvent e)
            {
                a1.setState(true);
                a2.setState(false);
                DIFICULTY_GAME=EASY_GAME;
                System.out.println(DIFICULTY_GAME);
            }
            
        }
        );
        a2.addItemListener(
        new ItemListener()
        {
            public void itemStateChanged(ItemEvent e)
            {
                DIFICULTY_GAME=HARD_GAME;
                a1.setState(false);
                a2.setState(true);
                System.out.println(DIFICULTY_GAME);
            }
            
        }
        );
        menuFile.add(menuDif);
        
        
        menuBar.add(menuFile);
        Frame.setMenuBar(menuBar); 
         
        Frame.setTitle("A Small Game!");
        //Display the window.
        Frame.pack();
        Frame.setVisible(true);
    }
    
    public static ImageIcon createImageIcon(String path) {
        java.net.URL imageURL = Sandy.class.getResource(path);

        if (imageURL == null) {
            System.err.println("Resource not found: "
                               + path);
            return null;
        } else {
            return new ImageIcon(imageURL);
        }
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -