📄 gtest.java.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 + -