📄 eluosi.java
字号:
}
public int compareTo(Object otherObject)
{
ElsXiaoFK other=(ElsXiaoFK)otherObject;
if (y<other.y)return -1;
if(y>other.y)return 1;
if(y==other.y&&x<other.x)return -1;
if(y==other.y&&x>other.x)return 1;
return 0;
}
private int x=500,y=0;
private final int r=100;
}//单位俄罗斯方块,也就是一个小矩形
//UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
class ElsFKUnion
{
public ElsFKUnion()
{
int i;
for (i=0;i<=3;i++)
FKUnion[i]=new ElsXiaoFK();
}
//RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRandom
public void ElsRanDom()
{
int i=0;
Random random=new Random();
int y=random.nextInt(5);
if(y==0)
{ shape=0;
for(i=0;i<=1;i++)
{
FKUnion[i].setY(-25);
FKUnion[i].setX(500+i*25);
}
for(i=2;i<=3;i++)
{
FKUnion[i].setY(0);
FKUnion[i].setX(450+i*25);
}
}//田字形
if (y==1)
{
shape=1;
for(i=0;i<=3;i++)
FKUnion[i].setY(-25);
for(i=0;i<=3;i++)
FKUnion[i].setX(500+25*i);
}//横条 类型0;
if (y==2)
{ shape=2;
for(i=0;i<=2;i++)
FKUnion[i].setY(-25);
FKUnion[3].setY(0);
for(i=0;i<=2;i++)
FKUnion[i].setX(500+i*25);
FKUnion[i].setX(525);
}//三一中
if (y==3)
{ shape=3;
for(i=0;i<=1;i++)
FKUnion[i].setY(-25);
FKUnion[2].setY(0);
FKUnion[3].setY(25);
for(i=0;i<=1;i++)
FKUnion[i].setX(500+i*25);
FKUnion[2].setX(525);
FKUnion[3].setX(525);
}//一三右 7字形的。
if (y==4)
{ shape=4;
for(i=0;i<=2;i++)
FKUnion[i].setY(-25);
FKUnion[3].setY(0);
for(i=0;i<=2;i++)
FKUnion[i].setX(500+i*25);
FKUnion[i].setX(550);
}//三一右,
if (y==5)
{
shape=11;
for(i=0;i<=3;i++)
FKUnion[i].setX(500);
for(i=0;i<=3;i++)
FKUnion[i].setY(-25+i*25);
}//长条 类型0;
}//随机数,方块体的种类有待增加
public int Move(int y,HashMap map,Iterator iter)
{ this.map=map;
this.iter=iter;
int total=0;
for(int i=0;i<=3;i++)
{
total=total+ FKUnion[i].CanMove(y,map);
}
if (total==4)//都能移动
{
for(int i=0;i<=3;i++)
{
FKUnion[i].Move(y,map);
}
return 1;
}//都能移动久移动
else if(total<4&&y==0)//下移受阻,添加到集合
{int k=0;
for(int i=0;i<=3;i++)
{
ElsXiaoFK elsXiaoFK1=new ElsXiaoFK();
elsXiaoFK1.setX(this.GetElsXiaoFK(i).GetX());
elsXiaoFK1.setY(this.GetElsXiaoFK(i).GetY());
map.put(elsXiaoFK1.toString1(),elsXiaoFK1);//tianjia 加加加加加加加加加到集合中
}
//删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删删
rowlist[k]=this.GetElsXiaoFK(0).GetY()*12/25;
if (this.GetElsXiaoFK(1).GetY() != this.GetElsXiaoFK(0).GetY()) rowlist[++k]=this.GetElsXiaoFK(1).GetY()*12/25;
if(this.GetElsXiaoFK(2).GetY() != this.GetElsXiaoFK(1).GetY() && this.GetElsXiaoFK(2).GetY()!=this.GetElsXiaoFK(0).GetY()) rowlist[++k]=this.GetElsXiaoFK(2).GetY()*12/25;
if(this.GetElsXiaoFK(3).GetY() != this.GetElsXiaoFK(2).GetY() && this.GetElsXiaoFK(3).GetY()!=this.GetElsXiaoFK(1).GetY() && this.GetElsXiaoFK(3).GetY() != this.GetElsXiaoFK(0).GetY() ) rowlist[++k]=this.GetElsXiaoFK(3).GetY()*12/25;
for (int h=0;h<=k;h++)
{
System.out.println("rowlist[h] is "+rowlist[h]);
}
for(int h=0;h<=k;h++)//h<=k保证这个h取值有意义,即数组中确实有值
{ ArrayList newElsXiaoFK=new ArrayList();
int m;
for ( m=rowlist[h];m<=rowlist[h]+11;m++)
{
NumberFormat formatter= NumberFormat.getNumberInstance();
String s=formatter.format(m);
if (!map.containsKey(s)){System.out.println("1111111111111111111"+"s is "+s+" break");break;}
}
if (m>rowlist[h]+11)
{
Set keys = map.keySet();
iter=keys.iterator();
while (iter.hasNext())
{
int yyy=Integer.parseInt((String)iter.next());
if(rowlist[h]<=yyy && yyy<=rowlist[h]+11) iter.remove();
if(rowlist[h]>yyy)
{
String ss=yyy+"";
ElsXiaoFK newElsXiaoFK1=((ElsXiaoFK)map.get(ss)).NextDownEls();
newElsXiaoFK.add(newElsXiaoFK1);
iter.remove();
}
}//遍历该集合,删除在这一行的元素,
}//if
for (int j=0;j<newElsXiaoFK.size();j++)
{
map.put(((ElsXiaoFK)newElsXiaoFK.get(j)).toString1(),(ElsXiaoFK)newElsXiaoFK.get(j));
}
//往集合里添加元素。刚才删除了一些需要移动的元素,现在增加新的元素
}
this.ElsRanDom();
return 0;
}//else if
return 0;
}//move
public int Turn()
{ int[] xxx=new int[4];
int[] yyy=new int[4];
int[] newxxx=new int[4];
int[] newyyy=new int[4];
String newkeys[]=new String[4];
int changeindex=0;
if (shape==0)//田字形的,不用变换
return 0;
if ( shape==11|| shape==2||shape==2222||shape==333||shape==3333||shape==4||shape==44) changeindex=1;
if (shape==1||shape==22||shape==222||shape==3||shape==33||shape==444||shape==4444) changeindex=2;
ElsXiaoFK newElsXiaoFK=new ElsXiaoFK();
newElsXiaoFK.setX( FKUnion[0].GetX());
newElsXiaoFK.setY( FKUnion[0].GetY());
FKUnion[0].setX( FKUnion[changeindex].GetX());
FKUnion[0].setY( FKUnion[changeindex].GetY());
FKUnion[changeindex].setX( newElsXiaoFK.GetX());
FKUnion[changeindex].setY( newElsXiaoFK.GetY());
newkeys[0]=FKUnion[0].toString1();
for(int i=1;i<=3;i++)
{
xxx[i]=FKUnion[i].GetX();
yyy[i]=FKUnion[i].GetY();
newxxx[i]=FKUnion[0].GetX()-(yyy[i]-FKUnion[0].GetY());
newyyy[i]=FKUnion[0].GetY()+(xxx[i]-FKUnion[0].GetX());
newkeys[i]=(newxxx[i]-350)/25+newyyy[i]/25*12+"";
}
if(shape==1)
for(int i=0;i<=3;i++) newkeys[i]+=12;
for (int i=0;i<=3;i++)System.out.println(" now key["+i+"]"+"is "+newkeys[i]);
if(newyyy[1]<=475 && newyyy[1]>=0 && newxxx[1]<=625 && newxxx[1]>=350 && newyyy[2]<=475 && newyyy[2]>=0 && newxxx[2]<=625 && newxxx[2]>=350 && newyyy[3]<=475 && newyyy[3]>=0 && newxxx[3]<=625 && newxxx[3]>=350 && !map.containsKey(newkeys[0]) && !map.containsKey(newkeys[1]) && !map.containsKey(newkeys[2]) && !map.containsKey(newkeys[3]))
{
if(shape==1){shape=11;}
else if(shape==11){shape=1;}
else if(shape==2){shape=22;}
else if(shape==22){shape=222;}
else if(shape==222){shape=2222;}
else if(shape==2222){shape=2;}
else if(shape==3){shape=33;}
else if(shape==33){shape=333;}
else if(shape==333){shape=3333;}
else if(shape==3333){shape=3;}
else if(shape==4){shape=44;}
else if(shape==44){shape=444;}
else if(shape==444){shape=4444;}
else if(shape==4444){shape=4;}
for (int i=1;i<=3;i++)
{
FKUnion[i].setX(newxxx[i]);
FKUnion[i].setY(newyyy[i]);
}
if (shape==11) this.Move(0,map,iter);//用来调整横条和竖条之间的转换
}
else System.out.println(" newyyy[1] is "+newyyy[1]+" newxxx[1] is "+newxxx[1]+" newyyy[2] is "+newyyy[2]+" newxxx[2] is "+newxxx[2]+" newyyy[3] is "+newyyy[3]+" newxxx[3] is "+newxxx[3]);
////////////////////////////
Arrays.sort(FKUnion);
return 0;
}
public int GetShape()
{
return shape;
}
public ElsXiaoFK GetElsXiaoFK(int i)
{
return FKUnion[i];
}
private ElsXiaoFK[] FKUnion =new ElsXiaoFK[4] ;
private Iterator iter;
private int[] rowlist=new int[4];
private int shape;
private HashMap map;
}//俄罗斯方块体,就是每次俄罗斯方块中出来的那些东西,4个方块组成的不同组合。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -