import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.*;
public class Hold60s {
public static void main(String[] args) {
Badguy badguys[] = new Badguy[100];
for (int i = 0; i < 100; i++) {
badguys[i] = new Badguy();
}
final BattleCanvas canvas = new BattleCanvas(badguys);
canvas.setSize(400, 400);
Frame frame = new Frame();
frame.setSize(400,400);
frame.add(canvas);
frame.pack();
frame.setVisible(true);
frame.addKeyListener(new KeyListener() {
int w = 0, a = 0, s = 0, d = 0;
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
// System.out.println();
if (e.getKeyChar() == 'w' || w == 1) {
w = 1;
// System.out.println("向上");
canvas.hero.ypos -= 5;
}
if (e.getKeyChar() == 'a' || a == 1) {
a = 1;
// System.out.println("向左");
canvas.hero.xpos -= 5;
}
if (e.getKeyChar() == 's' || s == 1) {
s = 1;
// System.out.println("向下");
canvas.hero.ypos += 5;
}
if (e.getKeyChar() == 'd' || d == 1) {
d = 1;
// System.out.println("向右");
canvas.hero.xpos += 5;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyChar() == 'w') w = 0;
else if (e.getKeyChar() == 'a') a = 0;
else if (e.getKeyChar() == 's') s = 0;
else if (e.getKeyChar() == 'd') d = 0;
}
});
new Thread() {
public void run() {
while (true) {
canvas.repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
}
class BattleCanvas extends Canvas implements ActionListener {
int width;
int height;
Badguy[] badguys;
Image bi;
Graphics bg;
Hero hero;
int flag;
BattleCanvas (Badguy[] badguys) {
this.badguys = badguys;
this.height = 400;
this.width = 400;
this.hero = new Hero();
this.flag = 0;
System.out.println("Success");
}
public void paint(Graphics g) {
bi = createImage(width, height);
bg = bi.getGraphics();
bg.drawOval(hero.xpos, hero.ypos, hero.width, hero.height);
// bg.drawOval(0, 0, 100, 100);
for (Badguy badguy : badguys) {
if (badguy.start <= 0) {
bg.drawOval(badguy.xpos, badguy.ypos, badguy.width, badguy.height);
if (flag == 0) {
if (Math.pow(badguy.xpos + badguy.width/2 - hero.xpos - hero.width/2, 2) +
Math.pow(badguy.ypos + badguy.height/2 - hero.ypos - hero.height/2, 2) <
Math.pow(badguy.width/2 + hero.width/2, 2)) {
System.out.println("啊,被击中了!");
flag++;
}
badguy.ypos += badguy.speed;
} else {
bg.setColor(Color.red);
}
}
if (flag == 0) {
--badguy.start;
}
}
g.drawImage(bi, 0, 0, this);
}
public void make () {
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
}
class Hero {
int xpos;
int ypos;
int width;
int height;
Hero() {
this.xpos = 195;
this.ypos = 370;
this.width = 20;
this.height = 20;
}
}
class Badguy {
int xpos;
int ypos;
int width;
int height;
int speed;
int start;
Badguy(){
Random random = new Random();
this.xpos = random.nextInt(390);
this.speed = random.nextInt(2) + 1;
this.start = random.nextInt(600);
this.ypos = 10;
this.width = 10;
this.height = 10;
// System.out.println(this.xpos);
}
}