예제 #1
0
파일: Ex24.java 프로젝트: schoenm1/maze
 public void mouseTouched(Actor actor, GGMouse mouse, Point spot) {
   switch (mouse.getEvent()) {
     case GGMouse.lPress:
       startLocation = toLocation(mouse.getX(), mouse.getY());
       actor.setOnTop();
       hotSpot = spot;
       break;
     case GGMouse.lDrag:
       Point imageCenter = new Point(mouse.getX() - hotSpot.x, mouse.getY() - hotSpot.y);
       actor.setPixelLocation(imageCenter);
       refresh();
       break;
     case GGMouse.lRelease:
       if (spot.x == -1) // Cursor is outside image
       actor.setLocation(startLocation);
       else {
         actor.setPixelLocation(new Point(mouse.getX(), mouse.getY()));
         nbMoves++;
         if (isOver()) setStatusText("Total #: " + nbMoves + ". Done.");
         else setStatusText("#: " + nbMoves);
       }
       actor.setLocationOffset(new Point(0, 0));
       hotSpot = null;
       refresh();
       break;
   }
 }
  @Override
  public void run() {
    // TODO Auto-generated method stub
    while (runner.isAlive()) {
      actors = one.getActors();

      // one.go();
      for (int z = 0; z < AList.size(); z++) {
        Actor a = AList.get(z);
        if (a.equals(background) && a.topy() >= 350) {
          a.setLocation(-5, -360);
        }
        if (a.equals(background2) && a.topy() >= 350) {
          a.setLocation(-5, -360);
        }

        if (a.equals(ammo) && a.topy() >= 350) {
          a.setLocation((int) (330 * Math.random()) + 30, (int) (-1000 * Math.random()) + -1);
        }
        if (a.equals(r) && a.topy() >= 350) {

          a.setLocation(-85, -361);
        }
        if (a.equals(r2) && a.topy() >= 350) {

          a.setLocation(-85, -361);
        }
        if (a.equals(r3) && a.topy() >= 350) {

          a.setLocation(355, -361);
        }
        if (a.equals(r4) && a.topy() >= 350) {

          a.setLocation(355, -361);
        }
        for (int ctr = 0; ctr < rs.length; ctr++) {
          if (a.equals(rs[ctr]) && a.topy() >= 350) {
            a.setLocation((int) (330 * Math.random()) + 30, (int) (-370 * Math.random()) + -1);
          }
        }
        if (a instanceof Ammo) {

          if (a.getRect().intersects(one.getLeft()) == true
              || a.getRect().intersects(one.getRight()) == true
              || a.getRect().intersects(one.getBottom()) == true) {
            a.setLocation((int) (330 * Math.random()) + 30, (int) (-370 * Math.random()) + -1);
            Laser laser = new Laser(one.getX(), one.getY(), "images/laser2.png");
            one.arsenal.add(laser);
            // a.removeSelf();
            one.ammohit = true;
          }
        }

        if (a instanceof Rock) {
          //  System.out.println("PodR: "+one.getRect());
          // System.out.println("Rock :"+a.getRect());

          if (a.getRect().intersects(one.getLeft()) == true
              || a.getRect().intersects(one.getRight()) == true) {
            // System.out.println("collision");
            one.collision = true;
            one.newImage("images/Explosion1.gif");
            one.y -= 60;
            tstop = true;

            speed = one.backSpeed;
            runner.stop();
          }

          //  if(one.collision(a)==true){
          //     System.out.println("collide");
          // }

        }
        if (a instanceof PodRacer) {

          while (a.getY() <= 0) {
            a.y += 1;
          }
          while (a.getY() >= 288) {
            a.y += -1;
          }

        } else {

          a.move();
        }

        if (a instanceof Laser) {
          Laser temp = (Laser) a;
          for (int ctr = 0; ctr < rs.length; ctr++) {
            if (a.getRect().intersects(rs[ctr].getRect()) == false || a.boty() >= 0) {
              // System.out.println("test");
              temp.Shot();
            }

            if (a.boty() <= 0) {
              mtemp = temp;
              laserremove = true;
            }
            if (a.getRect().intersects(rs[ctr].getRect())) {
              mtemp = temp;
              laserremove = true;
              rs[ctr].setLocation(
                  (int) (330 * Math.random()) + 30, (int) (-370 * Math.random()) + -1);
              one.rockhit = true;
            }
          }
        }
      }
      if (laserremove == true) {
        laserremove = false;
        // System.out.println("test");
        // one.arsenal.remove(0);
        mtemp.removeSelf();
      }

      try {
        speed = one.backSpeed;
        runner.sleep(speed);
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      // run();
    }
  }