- 窗口
package sxt;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GameWin extends JFrame {
BG bg = new BG();
Line line = new Line();
void launch(){
this.setVisible(true);
this.setSize(768,1000);
this.setLocationRelativeTo(null);
this.setTitle("黄金矿工");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
if (e.getButton()==1){
line.state=1;
}
}
});
while (true){
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void paint (Graphics g){
bg.paintSelf(g);
line.painSelf(g);
}
public static void main(String[] args) {
GameWin gameWin = new GameWin();
gameWin.launch();
}
}
- 绘制图片
package sxt;
import java.awt.*;
public class BG {
Image bg = Toolkit.getDefaultToolkit().getImage("imgs/bg.jpg");
Image bg1 = Toolkit.getDefaultToolkit().getImage("imgs/bg1.jpg");
Image peo = Toolkit.getDefaultToolkit().getImage("imgs/peo.png");
void paintSelf(Graphics g){
g.drawImage(bg1,0,0,null);
g.drawImage(bg,0,200,null);
g.drawImage(peo,310,50,null);
}
}
- 线
package sxt;
import java.awt.*;
public class Line {
int x=380;
int y=180;
int endx=500;
int endy=500;
double length = 100;
double n = 0;
int dir =1 ;
int state;
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 painSelf (Graphics g){
switch (state){
case 0:
if (n<0.1){dir=1;}
else if (n>0.9){dir=-1;}
n=n+0.005*dir;
lines(g);
break;
case 1:
if (length<500){
length =length+10;
lines(g);
}else {state=2;}
break;
case 2:
if (length>100){
length =length-10;
lines(g);
}else {state=0;}
default:
}
}
}