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

📄 gtest.java.bak

📁 java编的applet拼图小游戏
💻 BAK
字号:
import java.awt.*;
import java.awt.Image;
import java.applet.Applet;
import java.awt.event.*;
//import java.math.*;
public class GTest extends Applet implements MouseListener,MouseMotionListener,ActionListener,ItemListener
{
	int xPos=-1,yPos=-1;
	int xDown=-1,yDown=-1,xUp=-1,yUp=-1;
	int dx,dy,d=1;
	int w,h;
	
	int rectx=-1,recty=-1;
	
	String s="";
	Image pic;
	
	int m=3,n=4;
	
	private int[] k1;	
	private int x0=10,y0=30;
	
	
	boolean flag=true;
	boolean first=true;
	boolean done=false;
	boolean rerandom=true;
	boolean levelchange=false;
	
	List picList;
	
	List level;
	
	int listcase=1;
	
	String picName[]={"car","leaves","Ferrari","sky"};
	
	String levelName[]={"Einstein","Man","Child","Monkey"};
	int picnum=0;
	int levelnum=-1;
	
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==picList)
		listcase=1;
		else if(e.getSource()==level)
		listcase=2;
			
	}
	
	public void itemStateChanged(ItemEvent e)
	{
		if(listcase==1)
		{
			picnum=picList.getSelectedIndex();
			if(done)
			{done=false;}
			rerandom=true;
			rectx=-1;
			recty=-1;
			repaint();
	  }
		
		else if(listcase==2)
		{
		
		levelnum=level.getSelectedIndex();
		if(levelnum==3){m=2;n=3;}
		if(levelnum==2){m=3;n=4;}
		if(levelnum==1){m=4;n=5;}
		if(levelnum==0){m=5;n=6;}	
		levelchange=true;
		if(done)
			{done=false;}
			rerandom=true;
			rectx=-1;
			recty=-1;
		  repaint();
		}
		
		
	}

	public void init()
	{
		int i,k;	
	
		picList=new List(5,false);
		picList.addActionListener(this);
		picList.addItemListener(this);
		for(i=0;i<picName.length;i++)
		picList.add(picName[i]);
		
		level=new List(5,false);
		level.addActionListener(this);
		level.addItemListener(this);
		for(i=0;i<levelName.length;i++)
		level.add(levelName[i]);
		
		
   
		Label label1=new Label("Choose a picture:");
		Label label2=new Label("Choose a role:");
		
		setLayout(new FlowLayout(FlowLayout.RIGHT));
		add(label1);
		add(picList);
		
		setLayout(new FlowLayout(FlowLayout.RIGHT));
		add(label2);
		add(level);
		
	  k1=new int[m*n];	
		for(k=0;k<m*n;k++)k1[k]=k;
		addMouseListener(this);
		addMouseMotionListener(this);
	}
		
	public void paint(Graphics g)
	{
		
		
		int x,y,x1,y1,x2,y2;
		int i,k,t;
		
		pic=getImage(getDocumentBase(),picName[picnum]+".jpg");
		
		w=pic.getWidth(this);
		h=pic.getHeight(this);
		dx=w/n;
		dy=h/m;
		
		g.drawImage(pic,x0,y0,this);
		
		if(levelchange)
		{
			k1=new int[m*n];	
		  for(k=0;k<m*n;k++)k1[k]=k;
		  levelchange=false;
			
		}
		
		if(rerandom)
		{
			
				for(k=0;k<m*n;k++)
				{
					i=(int)(Math.random()*(m*n));
					t=k1[k];k1[k]=k1[i];k1[i]=t;
				}
				rerandom=false;
		}
		
		
		
			for(k=0;k<m*n;k++)
			{
				i=k1[k];
				x1=x0+w+dx+d+(i-i/n*n)*(dx+d);
				y1=y0+i/n*(dy+d);
				x=(k-k/n*n)*dx;
				y=(k/n)*(dy);
				x2=x0+(k-k/n*n)*(dx+d);
				y2=y0+h+(k/n+1)*(dy+d);
				g.drawImage(pic,x1,y1,x1+dx-1,y1+dy-1,x,y,x+dx-1,y+dy-1,this);
				g.drawImage(pic,x2,y2,x2+dx-1,y2+dy-1,x,y,x+dx-1,y+dy-1,this);
				if(rectx!=-1||recty!=-1)
				{
					if(flag)
					g.setColor(Color.red);
					else 
					g.setColor(Color.yellow);
          g.drawRect(rectx-1,recty-1,dx,dy);
          g.drawRect(rectx-2,recty-2,dx+2,dy+2);
				}
				
			}
			
			for(k=0;k<m*n;k++)
			{
				if(k==k1[k])continue;
				else break;
			}
			if(k==m*n)
			{
				done=true;
				g.setColor(Color.yellow);
				g.setFont(new Font("Monospaced",Font.BOLD,50));
				g.drawString("Congratulations!",350,200);
				g.setColor(Color.red);
				g.drawString("Congratulations!",350+2,200+2);
				
			}
	}
		
	public void processer()
	{
			int i;
			if(s.equals("Clicked"))
			{
				if(xPos>x0+w+dx+d&&xPos<x0+w+(dx+d)*(n+1)-d
				   &&yPos>y0&&yPos<y0+m*(dy+d)-d)
				{
					if(first)
				  {
				  	xDown=xPos;
				  	yDown=yPos;
				  	
				  	int down;
				  	down=(yDown-y0)/dy*n+(xDown-x0-w-dx-d)/dx;
				  	
					  rectx=x0+w+dx+d+(down-down/n*n)*(dx+d);
				    recty=y0+down/n*(dy+d);
					  
				  	
				  	first=false;
				  	flag=true;
				  	showStatus("first"+first);
				  	
				  }
				  else 
				  {
				  	xUp=xPos;
				  	yUp=yPos;
				  	first=true;	  
				  	flag=false;	
				  
				  
				  int down,up;
				  
				  down=(yDown-y0)/dy*n+(xDown-x0-w-dx-d)/dx;
				  up=(yUp-y0)/dy*n+(xUp-x0-w-dx-d)/dx;
				  
				  //showStatus("down"+down+"up"+up);
				  showStatus("first"+first);
				  int temp1=0,temp2=0;
					for(i=0;i<m*n;i++)
					  {
					  	if(k1[i]==down){temp1=i;}
					  	if(k1[i]==up){temp2=i;}
					  }
				  k1[temp1]=up;
				  k1[temp2]=down;
				  
				  rectx=x0+w+dx+d+(up-up/n*n)*(dx+d);
				  recty=y0+up/n*(dy+d);
				  
					}
					
					
			  }
			  
			}
	}
	 	
	private void setValues(String Event,int x,int y)
	{
		s=Event;
		xPos=x;
		yPos=y;
		processer();
		if(!done)
		repaint();
		
		
		
	}
	public void mouseClicked(MouseEvent e)
	{
		setValues("Clicked",e.getX(),e.getY());
	}
	public void mousePressed(MouseEvent e)
	{
	//	setValues("Pressed",e.getX(),e.getY());
	}
	public void mouseReleased(MouseEvent e)
	{
	//	setValues("Released",e.getX(),e.getY());
	}
	public void mouseEntered(MouseEvent e)
	{
	//	showStatus("Mouse in apple area");
	}
	public void mouseExited(MouseEvent e)
	{
	//	showStatus("Mouse outside apple area");
	}
	public void mouseDragged(MouseEvent e)
	{
	//	setValues("Dragging",e.getX(),e.getY());
	}
	public void mouseMoved(MouseEvent e)
	{
		//setValues("Moving",e.getX(),e.getY());
	}
	
}

⌨️ 快捷键说明

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