📄 gameframe.java
字号:
try
{
DataInputStream record_in=new DataInputStream(new FileInputStream(MyFile[level]));
for (int j=0;j<10;j++)
{
record_name[j]=record_in.readUTF();
record_time[j]=record_in.readUTF();
}
record_in.close();
}
catch(IOException ioe){
Log.debug("Read record error!",ioe);
}
TextField getname=new TextField("",10);
int xxx=-1;
for (int i=0;i<10;i++)
{
if (ctime.compareTo(record_time[i])<0)
{
MegDlg=new Dialog(this,"记录",true);
Panel p3=new Panel();
Panel p4=new Panel();
p3.setLayout(new FlowLayout());
p3.add(new Label("恭喜您创下新的记录!!!"));
p3.add(new Label("请输入您的姓名:"));
p3.add(getname);
p4.add(btnY);
MegDlg.add("Center",p3);
MegDlg.add("South",p4);
MegDlg.setBounds(350,200,200,150);
MegDlg.setResizable(false);
MegDlg.show();
xxx=i;
break;
}
}
if (xxx!=-1)
{
for (int i=8;i>=xxx;i--)
{
record_name[i+1]=record_name[i];
record_time[i+1]=record_time[i];
}
record_time[xxx]=ctime;
record_name[xxx]=getname.getText();
}
try
{
DataOutputStream record_out=new DataOutputStream(new FileOutputStream(MyFile[level]));
for (int i=0;i<10;i++)
{
record_out.writeUTF(record_name[i]);
record_out.writeUTF(record_time[i]);
}
record_out.close();
}
catch(IOException ioe){
Log.debug("write new record error!",ioe);
}
}
else
{
while(!check())
{
wash();
}
}
}
else
{
btn[first_i*gridsize_j+first_j].setBackground(Color.lightGray);
first_i=second_i;
first_j=second_j;
btn[first_i*gridsize_j+first_j].setBackground(Color.red);
}
}
else
{
btn[first_i*gridsize_j+first_j].setBackground(Color.lightGray);
first_i=second_i;
first_j=second_j;
btn[first_i*gridsize_j+first_j].setBackground(Color.red);
}
}
}
}
}
public boolean search()//判断是否有通路
{
int small_i,small_j,big_i,big_j;
small_i=first_button_i;
small_j=first_button_j;
big_i=second_button_i;
big_j=second_button_j;//循环变量
boolean change_check_i,change_check_j;//检查是否交换
int change1_i,change1_j,change2_i,change2_j;
if (first_button_i>second_button_i)
{
big_i=first_button_i;
small_i=second_button_i;
change_check_j=true;
}
else change_check_j=false;
if (first_button_j>second_button_j)
{
big_j=first_button_j;
small_j=second_button_j;
change_check_i=true;
}
else change_check_i=false;
if (change_check_i)
{
change1_i=second_button_i;
change2_i=first_button_i;
}
else
{
change1_i=first_button_i;
change2_i=second_button_i;
}
if (change_check_j)
{
change1_j=second_button_j;
change2_j=first_button_j;
}
else
{
change1_j=first_button_j;
change2_j=second_button_j;
}
for (int j=0;j<gridsize_j;j++)
{
record_flag=true;
for (int i=small_i+1;i<big_i;i++)
{
if (button_flag[i*gridsize_j+j]==1)
{
record_flag=false;
break;
}
}
if (record_flag)
{
record1_i=small_i;
record1_j=j;
record2_i=big_i;
record2_j=j;
if (change_check_j)
{
record1_i=big_i;
record2_i=small_i;
}
record1_j=j;
record2_i=big_i;
record2_j=j;
if (j<small_j)
{
for (int m=j;m<=small_j;m++)
{
if (button_flag[change1_i*gridsize_j+m]==1)
{
record_flag=false;
break;
}
}
if (record_flag)
{
for (int m=j;m<=big_j;m++)
{
if (button_flag[change2_i*gridsize_j+m]==1)
{
record_flag=false;
break;
}
}
}
}
else if (j<big_j)
{
for (int m=small_j;m<=j;m++)
{
if (button_flag[change1_i*gridsize_j+m]==1)
{
record_flag=false;
break;
}
}
if (record_flag)
{
for (int m=j;m<=big_j;m++)
{
if (button_flag[change2_i*gridsize_j+m]==1)
{
record_flag=false;
break;
}
}
}
}
else
{
for (int m=small_j;m<=j;m++)
{
if (button_flag[change1_i*gridsize_j+m]==1)
{
record_flag=false;
break;
}
}
if (record_flag)
{
for (int m=big_j;m<=j;m++)
{
if (button_flag[change2_i*gridsize_j+m]==1)
{
record_flag=false;
break;
}
}
}
}
}
if (record_flag) break;
}
if (!record_flag)
{
for (int i=0;i<gridsize_i;i++)
{
flag=true;
for (int j=small_j+1;j<big_j;j++)
{
if (button_flag[i*gridsize_j+j]==1)
{
flag=false;
break;
}
}
if (flag)
{
record1_i=i;
record1_j=small_j;
record2_i=i;
record2_j=big_j;
if (change_check_i)
{
record1_j=big_j;
record2_j=small_j;
}
if (i<small_i)
{
for (int m=i;m<=small_i;m++)
{
if (button_flag[m*gridsize_j+change1_j]==1)
{
flag=false;
break;
}
}
if (flag)
{
for (int m=i;m<=big_i;m++)
{
if (button_flag[m*gridsize_j+change2_j]==1)
{
flag=false;
break;
}
}
}
}
else if (i<big_i)
{
for (int m=small_i;m<=i;m++)
{
if (button_flag[m*gridsize_j+change1_j]==1)
{
flag=false;
break;
}
}
if (flag)
{
for (int m=i;m<=big_i;m++)
{
if (button_flag[m*gridsize_j+change2_j]==1)
{
flag=false;
break;
}
}
}
}
else
{
for (int m=small_i;m<=i;m++)
{
if (button_flag[m*gridsize_j+change1_j]==1)
{
flag=false;
break;
}
}
if (flag)
{
for (int m=big_i;m<=i;m++)
{
if (button_flag[m*gridsize_j+change2_j]==1)
{
flag=false;
break;
}
}
}
}
}
if (flag) break;
}
}
if ((record_flag)||(flag))
{
return true;
}
else
{
button_flag[first_button_i*gridsize_j+first_button_j]=1;
button_flag[second_button_i*gridsize_j+second_button_j]=1;
return false;
}
}
public boolean check()//检查是否还有可以连接的
{
boolean flag_check=false;
for (int i=0;i<num;i++)
{
for (int j=0;j<pic_num;j++)
{
for (int k=j+1;k<pic_num;k++)
{
first_button_i=button_record_i[i][j];
first_button_j=button_record_j[i][j];
second_button_i=button_record_i[i][k];
second_button_j=button_record_j[i][k];
if ((button_flag[first_button_i*gridsize_j+first_button_j]==1)&&(button_flag[second_button_i*gridsize_j+second_button_j]==1))
{
button_flag[first_button_i*gridsize_j+first_button_j]=0;
button_flag[second_button_i*gridsize_j+second_button_j]=0;
if (search())
{
flag_check=true;
button_flag[first_button_i*gridsize_j+first_button_j]=1;
button_flag[second_button_i*gridsize_j+second_button_j]=1;
break;
}
}
}
if (flag_check) break;
}
if (flag_check) break;
}
helpfirst_button_i=first_button_i;
helpfirst_button_j=first_button_j;
helpsecond_button_i=second_button_i;
helpsecond_button_j=second_button_j;
return flag_check;
}
public void wash()//洗牌
{
int ran;
String chan;
Icon pic_chan;
int x1,x2,x3,x4;
int y1=0;
int y2=0;
for (int i=0;i<size;i++)
{
btn[i].setBackground(Color.lightGray);
if (button_flag[i]==1)
{
x1=-1;
x2=-1;
x3=-1;
x4=-1;
for (int m=0;m<num;m++)
{
for (int n=0;n<pic_num;n++)
{
if ((button_record_i[m][n]*gridsize_j+button_record_j[m][n])==i)
{
x1=m;
x2=n;
break;
}
}
if (x1!=-1)
break;
}
ran=(int)((Math.random())*(size));
while(button_flag[ran]==0)
{
if (ran==size-1)
ran=0;
ran=ran+1;
}
chan=btn[i].getText();
btn[i].setText(btn[ran].getText());
btn[ran].setText(chan);
pic_chan=btn[i].getIcon();
btn[i].setIcon(btn[ran].getIcon());
btn[ran].setIcon(pic_chan);
for (int m=0;m<num;m++)
{
for (int n=0;n<pic_num;n++)
{
if ((button_record_i[m][n]*gridsize_j+button_record_j[m][n])==ran)
{
x3=m;
x4=n;
break;
}
}
if (x3!=-1)
break;
}
y1=button_record_i[x3][x4];
y2=button_record_j[x3][x4];
button_record_i[x3][x4]=button_record_i[x1][x2];
button_record_j[x3][x4]=button_record_j[x1][x2];
button_record_i[x1][x2]=y1;
button_record_j[x1][x2]=y2;
}
}
}
public Timer createTimer(){
//TODO load max seconds from config file or due to game level
return new Timer(180+level*60);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -