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

📄 puzzlepad.java

📁 《Java课程设计》第二版
💻 JAVA
字号:
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.awt.*;
public class PuzzlePad extends JPanel{
     Point [][] point;
     Block [][] block;
     int distance=56,grade,m=3,n=3;
     HandleMove handleMove;
     HandleImage handleImage; 
     VerifySuccess verifySuccess; 
     Image image;
     boolean isDigitPlay;  
     public PuzzlePad(){
         setBackground(Color.gray);
         setLayout(null);
         handleMove=new HandleMove();
         handleMove.initSpendTime();
         handleImage=new HandleImage();
         verifySuccess=new VerifySuccess();
         handleMove.setVerifySuccess(verifySuccess);
     }
     public HandleMove getHandleMove(){
        return handleMove;
     }
     public void setImage(Image image){
        this.image=image;
     }
     public void setGrade(int grade){
         this.grade=grade;
         if(grade==1){
            m=3;
            n=3;
         } 
         else if(grade==2){
            m=4;
            n=4;
         }
     }
     public int getGrade(){
         return grade;
     }
     private void needInit(){
         handleMove.initSpendTime();
         removeAll();
         point=new Point[m][n];
         block=new Block[m][n];
         int Hspace=distance,Vspace=distance;
         for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
               point[i][j]=new Point(Hspace,Vspace);
               Hspace=Hspace+distance;
            }
            Hspace=distance;
            Vspace=Vspace+distance;
         } 
         handleMove.setPoint(point);
         verifySuccess.setPoint(point);
         handleMove.setVerifySuccess(verifySuccess); 
         int k=0;
         for(int i=0;i<m;i++){
             if(i<m-1)
                for(int j=0;j<n;j++){
                   block[i][j]=new Block();
                   block[i][j].addMouseListener(handleMove);
                   k++; 
                }
             else
               for(int j=0;j<n-1;j++){
                   block[i][j]=new Block();
                   block[i][j].addMouseListener(handleMove);
                   k++;     
                }
         } 
         for(int i=0;i<m;i++){
             if(i<m-1)
               for(int j=0;j<n;j++){
                  add(block[i][j]);
                  block[i][j].setSize(distance,distance);
                  block[i][j].setLocation(point[i][j].getX(),point[i][j].getY());
                  block[i][j].setAtPoint(point[i][j]);
                  point[i][j].setBlock(block[i][j]);
                  point[i][j].setHaveBlock(true);
               }
             else
               for(int j=0;j<n-1;j++){
                  add(block[i][j]);
                  block[i][j].setSize(distance,distance);
                  block[i][j].setLocation(point[i][j].getX(),point[i][j].getY());
                  block[i][j].setAtPoint(point[i][j]);
                  point[i][j].setBlock(block[i][j]);
                  point[i][j].setHaveBlock(true);
               }
         }
     }
     public void setIsDigitPlay(){
         needInit();
         isDigitPlay=true;
         ArrayList<Integer> numberList=new ArrayList<Integer>();
         for(int k=0;k<m*n-1;k++){
            numberList.add(k+1);
         }
         Object []object=numberList.toArray();
         verifySuccess.setObject(object);
         Collections.shuffle(numberList); //随机排列数字 
         int k=0;
         for(int i=0;i<m;i++){
             if(i<m-1)
                for(int j=0;j<n;j++){
                    block[i][j].setObject(numberList.get(k));
                    k++; 
                }
             else
               for(int j=0;j<n-1;j++){
                   block[i][j].setObject(numberList.get(k));
                   k++;     
                }
         } 
         repaint(); 
    }
    public void setIsImagePlay(){
         needInit(); 
         isDigitPlay=false;
         ArrayList<Image> imageList=new ArrayList<Image>();
         Image [] blockImage=handleImage.getImages(image,m,n);
         for(int k=0;k<blockImage.length-1;k++){
            imageList.add(blockImage[k]);
         }
         Object []object=imageList.toArray();
         verifySuccess.setObject(object);
         Collections.shuffle(imageList); //随机排列图像
         int k=0;
         for(int i=0;i<m;i++){
             if(i<m-1)
                for(int j=0;j<n;j++){
                    block[i][j].setObject(imageList.get(k));
                    block[i][j].repaint();
                    block[i][j].setBorder(null); 
                    k++; 
                }
             else
               for(int j=0;j<n-1;j++){
                   block[i][j].setObject(imageList.get(k));
                   block[i][j].repaint();
                   block[i][j].setBorder(null); 
                   k++;     
                }
         } 
         repaint();  
    }
   public void paintComponent(Graphics g){
      super.paintComponent(g);
      if(isDigitPlay==false)  
        try{ 
             g.drawImage(image,20+distance*(m+1),point[0][0].getY(),
                       distance*m,distance*n,this);
        }
        catch(Exception exp){}
   }
} 

⌨️ 快捷键说明

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