연습문제 8월 18일자

2009. 8. 19. 00:36

8월15일 연습예제

거북이 구현하기

/*
거북이
*/
class Tuttle {
  int x;
  int y;
  int speed;

  void initialize() {
    x = 0;
    y = 0;
    speed = 0;
  }

  void stop() {
    speed = 0;
  }

  void speedUp() {
    speed++;
  }

  void speedDown() {
    speed = (speed <= 0) ? 0 : speed - 1;
  }

  void goNorth() {
    y++;
  }

  void goSouth() {
    y = (y <= 0) ? 0 : y - 1;
  }

  void goEast() {
    x++;
  }

  void goWest() {
    x = (x <= 0) ? 0 : x - 1;
  }

  void getStatus() {
    System.out.println("거북이의 위치는 " +
        "(" + x + ", " + y + ")이고, ");
    System.out.println("속도는 " +
        speed + "m/h입니다.");
  }

  public static void main(String[] args) {
    Tuttle t = new Tuttle();
    t.speedUp();
    t.goNorth();
    t.getStatus();
  }
}

탱크로 벽 부수기

/*
탱크
*/
class Tank {
  void shoot(Wall w) {
    w.strike();
  }
}
/*
무너저내리는 벽
*/

class Wall {
  public int durability;
  
  Wall() {
    durability = 10;
  }

  void strike(int power) {
    System.out.println("꽝!");
    durability -= power;
    if (durability > 0) {  
      System.out.println("현재 내구력 : " + durability);
    } else {
      crumble();
    }
  }

  void crumble() {
    System.out.println("와르르!!");
  }
}
/*
벽돌 벽
*/
class Brick extends Wall {
  Brick() {
    durability = 5;
  }
}
/*
탱크로 벽 맞추기
*/
class Stage {
  public static void main(String[] arg) {
    Brick w1 = new Brick();
    Wall w2 = new Wall();
    Tank2 t = new Tank2();

    t.shootGun(w1);
    t.shootGun(w1);
    t.shootCannon(w1);
    }
}

총과 대포를 발사하는 탱크

/*
탱크
*/
class Tank2 {
  void shootGun(Wall w) {
    w.strike(1);
  }

  void shootCannon(Wall w) {
    w.strike(5);
  }
}

거북이 벽에 부딪치다.

/*
장애물 탐지 거북이
*/
class Tuttle2 {
  int x;
  int y;

  void goNorth(Wall2 w) {
    y++;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void goSouth(Wall2 w) {
    y = (y < 0) ? 0 : y - 1;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void goEast(Wall2 w) {
    x++;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void goWest(Wall2 w) {
    x = (x < 0) ? 0 : x - 1;
    if (x >= w.x1 && x <= w.x2
        && y == w.y1) {
      shriek();
      w.soundEffect();
    }
  }

  void shriek() {
    System.out.println("꽥!");
  }
}
/*
길이 요소를 갖는 벽
*/
class Wall2 {
  int x1;
  int y1;
  int x2;
  int y2;

  void soundEffect() {
    System.out.println("꽝!!");
  }

  Wall2() {
  }

  Wall2(int x1, int y1, int x2, int y2) {
    this.x1 = x1;
    this.y1 = y1;
    this.x2 = x2;
    this.y2 = y2;
  }
}
class Stage2 {
  public static void main(String[] args) {
    Wall2 w = new Wall2(5, 5, 9, 10);
    Tuttle2 t = new Tuttle2();

    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goEast(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
    t.goNorth(w);
  }
}
/*
1에서 4사이의 난수 발생
*/
import java.util.Random;

class GenRandom {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      Random rnd = new Random();
      System.out.print(
          rnd.nextInt(4) + " ");
    }
    System.out.println();
  }
}
/*
커맨드 라인 입력 받기
*/
import java.util.Scanner;

class CmdInput {
  public static void main(String[] args) {
    System.out.print("입력하세요: ");
    Scanner sc = new Scanner(System.in);
    System.out.println("입력한 문자는 : ");
    while (sc.hasNext()) {
        System.out.println(sc.next());
    }
    sc = null;
  }
}

+ Recent posts