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

📄 pintu.java

📁 设计的一个拼图游戏,本人大2时做的JAVA课程设计
💻 JAVA
字号:
//拼图游戏
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

public class pintu extends JApplet implements ActionListener,MouseMotionListener,MouseListener
{
	private Timer timer;
	private Image image1;
	private JButton command;
	//时间显示标签
	private JLabel time1=new JLabel("time:0");
	//信息标签
	private JLabel feedback=new JLabel("Successful!",JLabel.CENTER);
	private String[] picname={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16"};
	//图片文件名数组
	private String piclist[][]=new String[3][16];
	//存放图片
	private ImageIcon img[]=new ImageIcon[16];
	
	private JLabel piclabel[]=new JLabel[16];
	
	private int picno;
	
	private ImageIcon but_icon[]=new ImageIcon[3];
	
	private String but_picname[]={"image.jpg","start.jpg","stop.jpg"};
	
	private int px,py;
	
	private int statuslist[]=new int[16];
	
	private int p_time;
	
	private int game_status;
	
	public void init()
	{
		
		for(int i=0;i<16;i++){
			piclist[0][i]="pic/1-"+picname[i]+".jpg";
			piclist[1][i]="pic/2-"+picname[i]+".jpg";
			piclist[2][i]="pic/3-"+picname[i]+".jpg";
		}
		
		Container c=getContentPane();
		c.setLayout(null);
		c.setSize(500,400);
		
		try{image1=getImage(new URL(getCodeBase(),"pic/background.jpg"));}
		catch(MalformedURLException e) {System.out.println("下栽图片错误 URL:"+e+"\n");return;}
		
		ImgJPanel pan1=new ImgJPanel(image1);
		pan1.setLayout(null);
		
		pan1.setSize(500,400);
		try{
			
			for(int i=0;i<3;i++){
				but_icon[i]=new ImageIcon(new URL(getCodeBase(),but_picname[i]));
			}
		}
		catch(MalformedURLException e) {System.out.println("下栽图片错误 URL:"+e+"\n");return;}
		
		command=new JButton(but_icon[0]);
		command.setSize(97,33);
		command.setLocation(380,20);
		command.addActionListener(this);
		pan1.add(command);
		
		feedback.setBounds(150,202,200,60);
		feedback.setForeground(Color.blue);
		feedback.setVisible(false);
		feedback.setFont(new Font("Arial",Font.PLAIN,36));
		
		pan1.add(feedback);
		int col,row;
		
		for(int i=0;i<16;i++){
			piclabel[i]=new JLabel();
			piclabel[i].setSize(110,70);
			col=i%4;
			row=(int)i/4;
			piclabel[i].setLocation(30+110*col,90+70*row);
			piclabel[i].addMouseMotionListener(this);
			piclabel[i].addMouseListener(this);
			pan1.add(piclabel[i]);			
		}
		picno=0;
		
		time1.setSize(80,24);
		time1.setForeground(Color.red);
		time1.setLocation(280,45);
		
		pan1.add(time1);
		
		c.add(pan1);
		
		timer=new Timer(1000,this);
		}
	
	//开始运行applet
	public void start()
	{
		game_status=0;
	}
	
	//加载图片
	public void loadpicture(){
		try{
			for(int i=0;i<16;i++){
				img[i]=new ImageIcon(new URL(getCodeBase(),piclist[picno][i]));
				piclabel[i].setIcon(img[i]);
			}
			picno++;
			if(picno>2) picno=0;
		}
		catch(MalformedURLException e) {System.out.println("下栽突图片错误 URL:"+e+"\n"); return;}
	}
	
	//分布图片位置
	public void random_picture(){
		for(int i=0;i<16;i++){
			piclabel[i].setLocation(30+(int)(Math.random()*330),90+(int)(Math.random()*210));
			statuslist[i]=0;
		}
	}
	//检查是否完成子程序
	public boolean check_finished(){
		boolean flag=true;
		for(int i=0;i<16;i++){
			if(statuslist[i]==0){
				flag=false;
				break;
			}
		}
		return flag;
	}
	//按键事件处理
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==command){
			switch(game_status){
				case 0://image显示图像
				game_status=1;
				loadpicture();
				feedback.setVisible(false);
				command.setIcon(but_icon[1]);
				break;
				case 1://开始游戏
				game_status=2;
				p_time=0;
				time1.setText("time:"+p_time);
				feedback.setVisible(false);
				random_picture();
				timer.start();
				command.setIcon(but_icon[2]);
				break;
				case 2://停止游戏
				game_status=0;
				timer.stop();
				feedback.setText("Stop!");
				feedback.setVisible(true);
				command.setIcon(but_icon[0]);
					}
				}
				if(game_status==2){
					if(e.getSource()==timer){
						p_time++;
						time1.setText("time:"+p_time);
			}
		}
	}
	
	public void mouseMoved(MouseEvent e){}
	//拖动鼠标事件处理
	public void mouseDragged(MouseEvent e){
		int x1=e.getX();
		int y1=e.getY();
		int x,y;
		for(int i=0;i<16;i++){
			if(e.getSource()==piclabel[i]){
				x=piclabel[i].getLocation().x;
				y=piclabel[i].getLocation().y;
				piclabel[i].setLocation(x+x1-px,y+y1-py);
			}
		}
	}
	//按键事件处理
	public void mousePressed(MouseEvent e){
		px=e.getX();
		py=e.getY();
	}
	//释放鼠标事件处理
	public void mouseReleased(MouseEvent e){
		int x1,y1;
		int ox,oy;
		for(int i=0;i<16;i++){
			if(e.getSource()==piclabel[i]){
				//取得图片当前位置
				x1=piclabel[i].getLocation().x;
				y1=piclabel[i].getLocation().y;
				//计算图片正确位置坐标
				ox=30+(int)(i%4)*110;
				oy=90+(int)(i%4)*70;
				//判断移位是否正确
				if(x1>ox-8&&y1>oy-8&&x1<ox+8&&y1<oy+8){
					piclabel[i].setLocation(ox,oy);
					statuslist[i]=1;
					//检查[拼图是否完成
					if(check_finished()==true){
						game_status=0;
						timer.stop();
						feedback.setText("Successful!");
						feedback.setVisible(true);
						command.setIcon(but_icon[0]);
		}
    	}else{
			statuslist[i]=0;
		}
	}
	}
	}
	public void mouseEntered(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
	public void mouseClicked(MouseEvent e){}
	
	//JPanel的扩展对象,用于放置背景图案
	class ImgJPanel extends JPanel
	{
		private Image image1;
		public ImgJPanel(Image image_a){
			this.image1=image_a;
		}
		public void paintComponent(Graphics g)
		{
			g.drawImage(image1,0,0,this);
		}
	}
	}

⌨️ 快捷键说明

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