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

📄 puzzle.java

📁 用java编写的拼图游戏
💻 JAVA
字号:
package mypackage;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class puzzle extends Applet implements MouseListener{
	public piece pieces[]=new piece[16];
	int i,x,y,cur_val;
	int start_x=50;
	int start_y=50;//初始拼图位置
	int row_size=4;
	int piece_width=50;
	int piece_height=50;
	private int blank_piece_pos;
	Graphics myG;
	simple_puzzle simple;
	random_value value_supplier=new random_value(1,16);
	MediaTracker tracker;
    selector level_indicator;
    Thread loadThread;//thread used to load images
    String image_name;
    media_checker checker;
    boolean images_loaded=false;
    boolean user_waitting =false;
	public boolean user_waiting;
    public void init(){
    	myG=getGraphics();
    	checker=null;
    	tracker=new MediaTracker(this);
        level_indicator=new selector(0,this,100,5);
    	image_name=getParameter("PREFIX");
    	/*初始化游戏*/
    	x=start_x;
    	y=start_y;
    	for(i=0;i<=15;i++){
    		cur_val=value_supplier.getRandomValue();
    		}
    /*设置空白块的位置*/
    	if(cur_val==16)
    		blank_piece_pos=i;
    	Object cur_var;
		pieces[i]=new piece(i, cur_val, myG, x, y, null, this);
    	x+=50;
    	if(x>200){x=50;y+=50;}
    	   /*开始*/
    	simple=new simple_puzzle(15,this);
        resize(pieces[0].width*6,pieces[0].height*6);
        addMouseListener(this);
        checker=new media_checker(myG,this);	
      }
 
public void start(){}
public void stop(){
	if(loadThread!=null){
		loadThread.stop();
		loadThread=null;
	}
}
public void run(){}
public void mouseEntered(MouseEvent evt){}
public void mouseExited(MouseEvent evt){}
public void mouseReleased(MouseEvent evt){}
public void mouseClicked(MouseEvent evt){}
public void mousePressed(MouseEvent evt){
	int x,y;
	Component e = null;
	x=e.getX();
	y=e.getY();
	int i;
	int rel_x,rel_y;
	int click_piece;
	int cur;
	String str;
	//首先检查点是否在拼图内
	if(point_inside(x,y)){
		rel_x=(int)(x-start_x)/piece_width;
		rel_y=(int)(y-start_y)/piece_height;
		click_piece=rel_x+row_size*rel_y;
		if(pieces[blank_piece_pos].same_row(y)){
			if(pieces[click_piece].toLeft(pieces[blank_piece_pos])){
				cur=pieces[blank_piece_pos].left;
				while(cur!=pieces[click_piece].left){
					pieces[cur].xchg(pieces[blank_piece_pos]);
					blank_piece_pos=cur;
					cur=pieces[blank_piece_pos].left;
					if(simple.puzzle_complete())
						myG.drawString("Congratulation!!!", 75, 275);
				  }
			 }
			else if(pieces[click_piece].toRight(pieces[blank_piece_pos])){
				cur=pieces[blank_piece_pos].right;
				while(cur!=pieces[click_piece].right){
					pieces[cur].xchg(pieces[blank_piece_pos]);
					blank_piece_pos=cur;
					cur=pieces[blank_piece_pos].right;
					if(simple.puzzle_complete())
						myG.drawString("Congratulation!!!", 75, 275);
				  } 
			}
			else if(pieces[blank_piece_pos].same_col(x)){
				if(pieces[click_piece].above(pieces[blank_piece_pos])){
					cur=pieces[blank_piece_pos].up;
					while(cur!=pieces[click_piece].left){
						pieces[cur].xchg(pieces[blank_piece_pos]);
						blank_piece_pos=cur;
						cur=pieces[blank_piece_pos].up;
						if(simple.puzzle_complete())
							myG.drawString("Congratulation!!!", 75, 275);
					  }
			  }
			else if(pieces[click_piece].below(pieces[blank_piece_pos])){
					cur=pieces[blank_piece_pos].down;
					while(cur!=pieces[click_piece].left){
						pieces[cur].xchg(pieces[blank_piece_pos]);
						blank_piece_pos=cur;
						cur=pieces[blank_piece_pos].down;
						if(simple.puzzle_complete())
							myG.drawString("Congratulation!!!", 75, 275);
					  }	
	           }
	
        }
		}
		else if(level_indicator.inside(x,y)){
			boolean user_waiting = false;
			if(images_loaded==true){
				if(user_waiting==true){
					str="Image loading complete!";
					myG.setColor(Color.pink);
					myG.fillRect(0, 251, 300, 300);
					myG.setFont(new Font("Times",Font.BOLD,8));
					myG.setColor(Color.black);
					myG.drawString(str,10,275);
					user_waiting=false;
				 }
				level_indicator.change();
				level_indicator.paint();
				paint(myG);
			}
			else{
				user_waiting=true;
				str="All Images not loaded,try again soon...";
				myG.setFont(new Font("Times",Font.BOLD,8));
				myG.setColor(Color.black);
				myG.drawString(str, 10, 275);
			}
		}
	}
}
	public void paint(Graphics g){
		int i;
		int j;
		int cur;
		g.setColor(Color.pink);
		g.fillRect(0,0,getSize().width,getSize().height);
		cur=0;
		for(i=0;i<=(15);i++)
			pieces[i].draw();
		level_indicator.paint();
	}
	//获得位置
	int getLocValue(int arr_loc){
		return (pieces[arr_loc].value).intValue();
	}
	//获得空白位置
	int getBlankLocValue(){
		return pieces[blank_piece_pos].value.intValue();
	}
	public boolean point_inside(int x,int y){
		if((x>=start_x)&&(y>=start_y)&&(x<=start_x+row_size*piece_width)&&(y<=start_y+row_size*piece_width))
			return true;
		
		else
			return false;
	}
}

⌨️ 快捷键说明

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