网页游戏源代码
导入Java . lang . math . *;
导入Java . awt . event . *;
导入Java . awt . *;
导入javax . swing . *;
类mainframe扩展jframe实现action listener {//定义整个框架。
私有JButton[]JB = new JButton[8];
private JButton jbs = new JButton(" opening ");
Private JButton jbres = new JButton("重新开始");
private JPanel jp 1 = new JPanel();
private JPanel jp2 = new JPanel();
private int[]n = new int[9];
private int[]n 1 = new int[9];
private int position = 8,p,q;
私有布尔bl,startbl = false
private JLabel JL = new JLabel();
private int count = 0;
private JLabel JL 1 = new JLabel("+integer . tostring(0));
公共主机(){ // frame的构造方法
int I;
for(int j = 0;j & ltn .长度;j++){
n[j]= j;
n 1[j]= n[j];
}
for(I = 0;我& ltjb.lengthI++){ //为每个按钮分配一个对应的值,并记录侦听器。
JB[I]= new JButton(integer . tostring(I+1));
Jb[i]。setFont(新字体(“号”,字体。粗体,48));
jp2 . add(JB[I]);
jb[i]。addActionListener(this);
}
for(I = 0;我& ltn .长度;i++){
if(n[i] ==位置)
jp2 . add(JL);
其他
jp2 . add(JB[n[I]]);
}
jp2.setLayout(new GridLayout(3,3));//注册侦听器
jbs . addactionlistener(this);
jbres . addactionlistener(this);
jp 1 . add(jbs);
jp 1 . add(jbres);
jp 1 . add(JL 1);
jp 1 . set layout(new FlowLayout());//将jp1设置为流布局。
set layout(new BorderLayout());//整体布局是边界布局。
this.add("North ",jp 1);
this.add("Center ",jp2);
This.setTitle(“拼图”);
this.setBounds(100,100,300,350);
this . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);//实现关闭按钮
this . setresizable(false);
this . set visible(true);
}
public void action performed(action event e){//实现按钮的事件。
If(e.getSource()==jbres){ //重启按钮事件。
for(int j = 0;j & ltn .长度;j++)
n[j]= n 1[j];
reShow();
startbl = true
count = 0;
JL 1 . settext("+integer . tostring(0));
}
Else if(e.getSource()==jbs) //开始按钮事件
这个。init();
else if(startbl){//Button 1-8移动事件
for(int I = 0;我& ltjb.lengthi++)
if(e.getSource() == jb[i]){
//system . out . println(I+1);
for(int a = 0;a & ltn .长度;a++){
if(n[a]==i)
p = a;
if(n[a]= =位置)
q = a;
}
}
如果(p!= 0 & amp& ampp!= 1。& ampp!= 2)
如果((p-3) == q)
互换(p,q);
如果(p!= 0 & amp& ampp!= 3 & amp& ampp!= 6)
如果((p-1) == q)
互换(p,q);
如果(p!= 2 & amp& ampp!= 5 & amp& ampp!= 8)
if((p+1) == q)
互换(p,q);
如果(p!= 6 & amp& ampp!= 7 & amp& ampp!= 8)
如果((p+3) == q)
互换(p,q);
}
}
Public void swap (int x,int y) {//button 1-8与空白图片交换。
int z;
z = n[x];
n[x]= n[y];
n[y]= z;
JL 1 . settext("+integer . tostring(++count));
reShow();
win();
}
Public void Init(){ //随机生成游戏界面。
int i=0,j,x;
布尔bl;
while(我& lt9){
bl =真;
x =(int)(math . random()* 9);
for(j = 0;j & lt我;j++)
if(n[j] == x)
bl =假;
如果(bl){
n[i++]= x;
n 1[I-1]= x;
}
}
reShow();
startbl = true
count = 0;
JL 1 . settext("+integer . tostring(0));
}
public void show(){//重写游戏界面。
for(int I = 0;我& ltn .长度;i++){
if(n[i] ==位置)
jp2 . add(JL);
其他
jp2 . add(JB[n[I]]);
}
jp2 . revidate();
}
Public void win(){ //判断是否成功。
boolean winbl = true
for(int I = 0;我& ltn .长度;i++)
if(n[i]!=i)
winbl = false
if(winbl){
Joption窗格。显示消息对话框(这个,“恭喜你,你成功了!”+"您使用了"+Integer.toString(count)+ "step "、""、jooptionpane。信息_消息);
startbl = false
}
}
}
公共类拼贴{//主函数类
公共静态void main(String[] args){
新大型机();
}
}
我之前编的。不是很好。请参考。