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;
//定义线的绘制方法
void paintSelf(Graphics g)
{
//判断方向,让它一只在1,2,象限移动
if (n<0.1){dir=1;}
else if (n>0.9){dir=-1;}
//让n变化来实现线的移动,同时线的终点坐标也要发生变化
n=n+0.005*dir;
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);
}
}
package com.sxt;
import javax.swing.*; //导出Jframe类的方法,在继承Jframe类时会自己生成。
import java.awt.*;
public class GameWin extends JFrame //创建GameWin类继承JFrame类,Jframe类本身包含鼠标事件,可以实现点击鼠标按键来不同操作。
{
Bg bg=new Bg();//创建Bg类的bg实例对象
Line line=new Line(); //创建line的实例对象
void launch(){ //定义窗口事件,无参构造方法
this.setVisible(true); //窗口可见
this.setSize(768,1000); //窗口大小
this.setLocationRelativeTo(null); //窗口位置
this.setTitle("李星沐牌黄金矿工"); //窗口名称
setDefaultCloseOperation(EXIT_ON_CLOSE); //关闭窗口操作
//用死循环来实现窗口的重新绘制
while (true)
{
repaint();
//降低刷新率,在循环里面设置
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics g) //构造paint方法实现BG中的paintSelf方法
{
bg.panintSelf(g);
line.paintSelf(g); //传入线的绘画方法
}
public static void main(String[] args) {
GameWin gameWin=new GameWin(); //在主函数里引用launch方法来实现窗口出现。
gameWin.launch();
}
}
|