?? buttonmove.java
字號:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
class ImageApp extends Canvas{
Image list;
Image[] array=new Image[16];
Image[] garray=new Image[16];
ImageIcon[] icon=new ImageIcon[16];
ImageIcon[] gicon=new ImageIcon[16];
int w;
int h;
int index;
public void init(){
MediaTracker mt=new MediaTracker(this);
Toolkit tk=Toolkit.getDefaultToolkit();
list=tk.createImage(ImageApp.class.getResource("p1.jpg"));
mt.addImage(list,0);
try{
mt.waitForID(0);
}catch(InterruptedException e){ }
list=list.getScaledInstance(400,400,1);
mt.addImage(list,1);
try{
mt.waitForID(1);
}catch(InterruptedException e){ }
w=list.getWidth(this)/4;
h=list.getHeight(this)/4;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
array[index]=this.createImage(w,h);
CropImageFilter crop=new CropImageFilter(j*w,i*h,w,h);
FilteredImageSource fs=new FilteredImageSource(list.getSource(),crop);
array[index]=this.createImage(fs);
mt.addImage(array[index],2);
index++;
}
}
for(int i=0;i<16;i++){
Gray gf=new Gray();
garray[i]=createImage(new FilteredImageSource(array[i].getSource(),gf));
mt.addImage(garray[i],3);
}
try{
mt.waitForID(3);
}catch(InterruptedException e){
}
for(int i=0;i<16;i++){
icon[i]=new ImageIcon(array[i]);
gicon[i]=new ImageIcon(garray[i]);
}
}
}
class Gray extends RGBImageFilter{
public Gray(){
canFilterIndexColorModel=true;
}
public int filterRGB(int x,int y,int rgb){
int gray=(((rgb&0xff0000)>>16)+((rgb&0x00ff00)>>8)+(rgb&0x0000ff))/5;
return(0xff000000|(gray<<16)|(gray)<<8|gray);
}
}
class IDbutton extends JButton{
ImageIcon im;
ImageIcon gim;
int id;
boolean Flag;
public IDbutton(int a){
id=a;
this.setBorder(null);
}
public int IDG(){
return id;
}
public void See(){
Flag=true;
setIcon(im);
}
public void UnSee(){
Flag=false;
setIcon(gim);
}
public ImageIcon GetS(){
return im;
}
public void SetS(ImageIcon ii){
im=ii;
this.setIcon(im);
}
public ImageIcon Getgs(){
return gim;
}
public void Setgs(ImageIcon ii){
gim=ii;
}
}
class Toe extends Dialog{
String s;
JLabel label=new JLabel();
public Toe(Frame parent){
super(parent, "消息框", false);
label.setSize(new Dimension(50,20));
setLayout(new BorderLayout());
add(label,BorderLayout.CENTER);
setSize(180,90);
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY)
dispose();
else
return super.handleEvent(evt);
return true;
}
public void SetL(String str){
label.setText(str);
}
}
public class ButtonMove extends Applet{
Toe dialog=new Toe(new Frame());
IDbutton[] Box=new IDbutton[16];
static int random;
static int ran;
ImageApp imageapp=new ImageApp();
ImageIcon[] icon=new ImageIcon[16];
ImageIcon[] gicon=new ImageIcon[16];
public void init(){
imageapp.init();
Panel p=new Panel();
p.setLayout(new GridLayout(4,4));
setLayout(new BorderLayout());
for(int i=0;i<16;i++){
icon[i]=imageapp.icon[i];
gicon[i]=imageapp.gicon[i];
Box[i]=new IDbutton(i);
p.add(Box[i]);
Box[i].SetS(icon[i]);
}
add(p,BorderLayout.CENTER);
p=new Panel();
JButton bstart=new JButton("開始游戲");
JButton bend=new JButton("完成游戲");
bstart.addActionListener(new SL());
bend.addActionListener(new EL());
p.setLayout(new GridLayout(1,2));
p.add(bstart);
p.add(bend);
add(p,BorderLayout.NORTH);
}
public void StartSet(){
ImageIcon image;
for(int i=0;i<16;i++){
random=(int)(Math.random()*(15-i));
Box[i].SetS(icon[random]);
Box[i].Setgs(gicon[random]);
image=icon[15-i];
icon[15-i]=icon[random];
icon[random]=image;
image=gicon[15-i];
gicon[15-i]=gicon[random];
gicon[random]=image;
Box[i].See();
Box[i].addActionListener(new BL(i));
}
ran=(int)(Math.random()*15);
Box[ran].UnSee();
}
public void MoveA1(int id){
ImageIcon str;
if((Box[id+1]!=null)&&(Box[id+1].Flag==false)){
str=Box[id+1].GetS();
Box[id+1].SetS(Box[id].GetS());
Box[id].SetS(str);
str=Box[id+1].Getgs();
Box[id+1].Setgs(Box[id].Getgs());
Box[id].Setgs(str);
Box[id+1].See();
Box[id].UnSee();
}
}
public void MoveA4(int id){
ImageIcon str;
if((Box[id+4]!=null)&&(Box[id+4].Flag==false)){
str=Box[id+4].GetS();
Box[id+4].SetS(Box[id].GetS());
Box[id].SetS(str);
str=Box[id+4].Getgs();
Box[id+4].Setgs(Box[id].Getgs());
Box[id].Setgs(str);
Box[id+4].See();
Box[id].UnSee();
}
}
public void MoveJ1(int id){
ImageIcon str;
if((Box[id-1]!=null)&&(Box[id-1].Flag==false)){
str=Box[id-1].GetS();
Box[id-1].SetS(Box[id].GetS());
Box[id].SetS(str);
str=Box[id-1].Getgs();
Box[id-1].Setgs(Box[id].Getgs());
Box[id].Setgs(str);
Box[id-1].See();
Box[id].UnSee();
}
}
public void MoveJ4(int id){
ImageIcon str;
if((Box[id-4]!=null)&&(Box[id-4].Flag==false)){
str=Box[id-4].GetS();
Box[id-4].SetS(Box[id].GetS());
Box[id].SetS(str);
str=Box[id-4].Getgs();
Box[id-4].Setgs(Box[id].Getgs());
Box[id].Setgs(str);
Box[id-4].See();
Box[id].UnSee();
}
}
public static void main(String[] args){
Frame f=new Frame("動腦筋大比拼");
ButtonMove b=new ButtonMove();
b.init();
b.start();
f.add(b,BorderLayout.CENTER);
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
f.setSize(402,442);
f.setResizable(false);
f.setVisible(true);
}
class BL implements ActionListener{
int id;
int num;
public BL(int i){
id=i;
}
public void actionPerformed(ActionEvent e){
this.num=this.id;
switch(num){
case 0:
MoveA1(num);
MoveA4(num);
break;
case 1:
case 2:
MoveJ1(num);
MoveA1(num);
MoveA4(num);
break;
case 3:
MoveJ1(num);
MoveA4(num);
break;
case 4:
case 8:
MoveA4(num);
MoveJ4(num);
MoveA1(num);
break;
case 7:
case 11:
MoveA4(num);
MoveJ4(num);
MoveJ1(num);
break;
case 5:
case 6:
case 9:
case 10:
MoveA1(num);
MoveA4(num);
MoveJ1(num);
MoveJ4(num);
break;
case 12:
MoveA1(num);
MoveJ4(num);
break;
case 15:
MoveJ4(num);
MoveJ1(num);
break;
case 13:
case 14:
MoveJ1(num);
MoveA1(num);
MoveJ4(num);
break;
}
}
}
class EL implements ActionListener{
public void actionPerformed(ActionEvent e){
int i=0;
for(;i<15;i++){
if(Box[i].GetS()!=imageapp.icon[i]){
break;
}
}
if(i==15){
dialog.SetL(" 你成功了!恭喜你");
dialog.show(true);
}else{
dialog.SetL(" 你還沒有完成任務!");
dialog.show(true);
}
}
}
class SL implements ActionListener{
public void actionPerformed(ActionEvent e){
StartSet();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -