ball.java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ball extends JFrame {
MyPanel mp;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
set se=new set();
}
public ball(int n){
mp=new MyPanel(n);
mp.addMouseListener(mp);
mp.addMouseMotionListener(mp);
this.add(mp);
this.setTitle("是男人就坚持100s");
this.setLocation(200, 100);
this.setSize(700, 610);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setVisible(true);
}
}
class MyPanel extends JPanel implements MouseListener,MouseMotionListener{
boolean touch=false;
int x=100,y=100;
String string="坚持时间:0.0";
double time=0.0;
int n;
/**
* 创建一个自己的画板
*/
//创建敌方小球
Vector<enemy> ee=new Vector<>();
public MyPanel(int m){
n=m;
for (int i = 0; i <n; i++) {
ee.add(new enemy());
}
}
public void paint(Graphics g) {
for (int i = 0; i < ee.size(); i++) {
enemy et1=ee.get(i);
if (((x-15)-(et1.getX()-et1.getR()/2))*((x-15)-(et1.getX()-et1.getR()/2))+((y-15)-(et1.getY()-et1.getR()/2))*((y-15)-(et1.getY()-et1.getR()/2))<=(et1.getR()/2+15)*(et1.getR()/2+15)) {
touch=true;
}
}
super.paint(g);
super.setBackground(Color.BLACK);
for (int i = 0; i < ee.size(); i++) {
enemy etEnemy=ee.get(i);
etEnemy.run();
g.setColor(etEnemy.getColor());
g.fillOval(etEnemy.getX(), etEnemy.getY(), etEnemy.getR(), etEnemy.getR());
}
g.setColor(Color.yellow);
g.fillRect(x, y, 30, 30);
g.drawString(string, 150, 10);
if (!touch) {
repaint();
time+=0.004;
string="坚持时间:"+time;
}
else {
g.setFont(new Font("宋体",Font.BOLD,20));
g.drawString("游戏结束,坚持时间:"+time, 150, 150);
time=0;
string="坚持时间:0.0";
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
touch=false;
repaint();
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stu
x=e.getX();
y=e.getY();
if(x>=660||x<=1||y>=550||y<=1){
touch=true;
}
for (int i = 0; i < ee.size(); i++) {
enemy et1=ee.get(i);
if (((x-10)-(et1.getX()-et1.getR()/2))*((x-10)-(et1.getX()-et1.getR()/2))+((y-10)-(et1.getY()-et1.getR()/2))*((y-10)-(et1.getY()-et1.getR()/2))<(et1.getR()/2+10)*(et1.getR()/2+10)) {
touch=true;
}
}
}
}
class set extends JFrame{
int count;
JPanel jp,jp1;
JLabel jl;
JTextField jtf;
JButton jb;
set(){
jp=new JPanel();
jp1=new JPanel();
jl=new JLabel("小球个数:");
jtf=new JTextField(10);
jb=new JButton("确定");
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
count=(int)Integer.valueOf(jtf.getText());
setVisible(false);
ball b=new ball(count);
}
});
jp.add(jl);
jp.add(jtf);
jp1.add(jb);
this.add(jp);
this.add(jp1);
this.setTitle("设定小球个数");
this.setLayout(new GridLayout(2, 1));
this.setLocation(400, 200);
this.setSize(153,145);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
enemy.java
import java.awt.Color;
public class enemy implements Runnable{
int x,y;
private Color color;//小球颜色
private int R=34;//小球半径
private int xSpeed;//小球x轴速度
private int ySpeed;//小球y轴速度
int a,b,c;
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(3);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x=getX()+xSpeed;
y=getY()+ySpeed;
if ((getX()+R)>690||getX()<0) {
xSpeed=-xSpeed;
}
if (getY()<0||(getY()+R)>580) {
ySpeed=-ySpeed;
}
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public int getR() {
return R;
}
public void setR(int r) {
R = r;
}
public int getxSpeed() {
return xSpeed;
}
public void setxSpeed(int xSpeed) {
this.xSpeed = xSpeed;
}
public int getySpeed() {
return ySpeed;
}
public void setySpeed(int ySpeed) {
this.ySpeed = ySpeed;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getC() {
return c;
}
public void setC(int c) {
this.c = c;
}
public enemy(){
//rgb随机颜色的设置
a=(int)(Math.random()*255);
b=(int)(Math.random()*255);
c=(int)(Math.random()*255);
//随机x y速度
xSpeed=(int)(Math.random()*8+3);
ySpeed=(int)(Math.random()*8+3);
color=new Color(a, b, c);
//随机坐标
x=(int)(Math.random()*600+1);
y=(int)(Math.random()*500+1);
}
}