package com.tarena.yiq;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JPanel;
public class MyPanel extends JPanel implements Runnable,
MouseListener,MouseMotionListener{
public Image bg1;
public Image bg2;
public Image bg3;
public Image bg4;
public ChuiZi cz;
public Image czImage;
public DiShu [] dss= new DiShu[9];//地鼠数组
public MyPanel(){
bg1=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("top.png"));
bg2=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("mid_up.png"));
bg3=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("mid_down.png"));
bg4=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("bottom.png"));
czImage=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("hammer.png"));
cz=new ChuiZi(14, 68, czImage);
for (int i = 0; i <9; i++) {
dss[i]= new DiShu();
if(i<3){
dss[i].x=135+137*i;
dss[i].y=191;
dss[i].w=90;
dss[i].h=74;
dss[i].dsImage=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource(
"little_mouse.png"));
}
if(i>=3&i<6){
dss[i].x=106+156*(i-3);
dss[i].y=283;
dss[i].w=102;
dss[i].h=86;
dss[i].dsImage=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource(
"mid_mouse.png"));
}
if(i>=6&i<9){
dss[i].x=65+185*(i-6);
dss[i].y=410;
dss[i].w=122;
dss[i].h=106;
dss[i].dsImage=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource(
"big_mouse.png"));
}
}
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(bg1,0,0,640,192,this);
for (int i = 0; i < 3; i++) {
g.drawImage(dss[i].dsImage,dss[i].x,dss[i].y,dss[i].w,dss[i].h,this );
}
g.drawImage(bg2,0,164,640,120,this);
for (int i = 3; i < 6; i++) {
g.drawImage(dss[i].dsImage,dss[i].x,dss[i].y,dss[i].w,dss[i].h,this );
}
g.drawImage(bg3,0,247,640,167,this);
for (int i = 6; i < 9; i++) {
g.drawImage(dss[i].dsImage,dss[i].x,dss[i].y,dss[i].w,dss[i].h,this );
}
g.drawImage(bg4,0,364,640,116,this);
if(cz.isLive){
cz.image=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("hammer_down.png"));
g.drawImage(cz.image, cz.x-12, cz.y+2, 50, 70, this);
}else {
cz.image=Toolkit.getDefaultToolkit().
getImage(MyPanel.class.getResource("hammer.png"));
g.drawImage(cz.image, cz.x, cz.y, 35, 68, this);
}
}
@Override
public void run() {
int index = (int)(Math.random()*9);
int [] fx = new int[9];
for (int i = 0; i < 9; i++) {
fx[i]=0;//0代表向上
}
while (true) {
if(index<3){
if(fx[index]==0){
dss[index].moveUp();
if(dss[index].y<=118){
fx[index]=1;
}
}
if(fx[index]==1){
dss[index].moveDown();
if(dss[index].y>=191){
fx[index]=0;
index=(int)(Math.random()*9);
}
}
}
//中地鼠198 283
if(index<6&index>=3){
if(fx[index]==0){
dss[index].moveUp();
if(dss[index].y<=198){
fx[index]=1;
}
}
if(fx[index]==1){
dss[index].moveDown();
if(dss[index].y>=283){
fx[index]=0;
index=(int)(Math.random()*9);
}
}
}
//大地鼠 305 410
if(index<9&index>=6){
if(fx[index]==0){
dss[index].moveUp();
if(dss[index].y<=305){
fx[index]=1;
}
}
if(fx[index]==1){
dss[index].moveDown();
if(dss[index].y>=410){
fx[index]=0;
index=(int)(Math.random()*9);
}
}
}
if(cz.isLive){
cz.hit(dss[index]);
if(!dss[index].isLive){
if(index<3){
dss[index].y=191;
}
if(index>=3&&index<6){
dss[index].y=283;
}
if(index>=6&&index<9){
dss[index].y=410;
}
dss[index].isLive=true;
index=(int)(Math.random()*9);
}
}
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@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
cz.isLive=true;
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
cz.isLive=false;
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
cz.x=e.getX()-24;
cz.y=e.getY()-46;
if(cz.x<0){
cz.x=0;
}
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
cz.x=e.getX()-24;
cz.y=e.getY()-46;
if(cz.x<0){
cz.x=0;
}
if(cz.x>605){
cz.x=695;
}
if(cz.y<0){
cz.y=0;
}
if(cz.y>420){
cz.y=420;
}
}
}