金块消失bug消除
在前面的代码中,抓取一个金块,其余的金块也会一起消失,为金块定义一个是否可移动的状态,当endx,endy在金块范围内时,可移动,状态为true,否则为false。
创建石块类,与金块差别不大,for循环生成,将金块中宽高和路径修改一下即可,同时为了使石块也可以被获取,在Object中定义一个方法获得金块和石块的宽,在case3中
obj.x=endx-26改为obj.x=endx- obj.getWidth()/2;
case 3:
if (length>100) {
length = length - 10;
lines(g);
for (Object obj:this.frame.objectList) {//增强for循环
if (obj.flag){
obj.x=endx- obj.getWidth()/2;
obj.y=endy;
if (length<=100){
obj.x=-150;
obj.y=-150;
obj.flag=false;
state=0;
}
}
}
}
break;
实现抓取速度的变化,在Object中添加一个质量属性,分别在金块和石块中定义其质量,在线类的case3中定义一个局部变量,获取金块和石块的质量,并使用质量为变量进行延时。
try {
Thread.sleep(m);
} catch (InterruptedException e) {
e.printStackTrace();
}
生成不同的金块
class GoldMini extends Gold{
GoldMini(){
this.width=36;
this.height=36;
this.m=15;
this.img= Toolkit.getDefaultToolkit().getImage("imgs/gold0.gif");
}
}
class GoldPlus extends Gold{
GoldPlus(){
this.x=(int) (Math.random()*650);
this.width=105;
this.height=105;
this.m=60;
this.img= Toolkit.getDefaultToolkit().getImage("imgs/gold2.gif");
}
}
yysy,感觉这样重复了好多,,,
避免堆叠
for (Object obj:objectList){//避免堆叠
if (gold.getRec().intersects(obj.getRec())){
//不可放置,需重新生成
isPlace=false;
i--;
}
}
if (isPlace){objectList.add(gold);}
else {isPlace=true;i--;}