package com.sxt;
import java.awt.*;
public class Line {
//起点坐标,保证线左右摇摆时起点不变,仅是终点坐标改变
int x=380;
int y=180;
//终点坐标
int endx=500;
int endy=500;
//定义线长length,角度n,方向dir
double length=100;
double n=0;
int dir=1;
//定义状态 0摇摆 1延长 2收回
int state;
//用有参构造方法来接收窗口GameWin中元素
GameWin frame;
Line(GameWin frame)
{
this.frame=frame;
}
//设置碰撞判断
void logic()
{
if (endx>this.frame.gold.x&&endx<this.frame.gold.x+this.frame.gold.width
&&endy>this.frame.gold.y&&endy<this.frame.gold.y+this.frame.gold.height){
System.out.println("1");
}
}
//定义lines来放置重复代码
void lines(Graphics g)
{
endx=(int)(x+length*Math.cos(n*Math.PI));
endy=(int)(y+length*Math.sin(n*Math.PI));
g.setColor(Color.red);
g.drawLine(x,y,endx,endy);
}
//定义线的绘制方法
void paintSelf(Graphics g)
{
//调用判断方法
logic();
//用switch语句来判断状态
switch (state)
{
case 0:
if (n<0.1){dir=1;}
else if (n>0.9){dir=-1;}
//让n变化来实现线的移动,同时线的终点坐标也要发生变化
n=n+0.005*dir;
lines(g);
break;
case 1:
//实现线的延长
if (length<500)
{
length=length+10;
lines(g);
}
else
{
state=2; //线实现延长,返回状态2来减短
}
break;
case 2:
if (length>100)
{
length=length-10;
lines(g);
}
else
{
state=0; //线变短后要变回摇摆状态;
}
break;
default:
}
//判断方向,让它一只在1,2,象限移动
}
}
Line line=new Line(this); //创建line的实例对象 //接受line中碰撞判断