- ♡
★
하트와 별의 달리기 경주 코딩
public class MoveHeart implements Runnable{
@Override
public void run() {
try {
for(int i=0; i < 9; i++) {
for(int a=0; a<30; a++) System.out.println(); // 30줄 띄우기
// i 이하만큼 반복하면서 한 칸 띄어쓰기
for(int h=0; h <= i; h++) System.out.print(" ");
System.out.println("♡"); // 맨 처음 공백 출력
// -> 하트는 한 칸 띄고 시작하는 모양새
// i 미만까지 반복하면서 한 칸 띄어쓰기
for(int s=0; s < i; s++) System.out.print(" ");
System.out.print("★");
Thread.sleep(1000); // 1초 일시정지
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
public class MoveStar implements Runnable{
@Override
public void run() {
try {
for(int i=0; i < 10; i++) {
for(int a=0; a<30; a++) System.out.println(); // 30줄 띄우기
// i 이하만큼 반복하면서 한 칸 띄어쓰기
for(int h=0; h < i; h++) System.out.print(" ");
System.out.println("♡"); // 맨 처음 하트부터 출력
// i 미만까지 반복하면서 한 칸 띄어쓰기
for(int s=0; s < i; s++) System.out.print(" ");
System.out.print("★"); // 맨 처음 별부터 출력
// -> 하트와 별 모두 동일선상에서 출발하는 것처럼 보임
Thread.sleep(1000); // 1초 일시정지
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
public class MoveRun {
public static void main(String[] args) {
// Runnable을 implements한 객체 활용하여 스레드 생성
Thread th1 = new Thread(new MoveHeart());
Thread th2 = new Thread(new MoveStar());
try {
th2.start(); // 하트와 별이 동일선상에 있는 모습 출력
Thread.sleep(500); // th1, th2의 실행 시간에 0.5초 차이를 줌
th1.start(); // 하트가 별을 앞서는 모습 출력
// MoveStar와 MoveHeart가 시간 차로 실행되며
// 하트와 별이 움직이는 애니메이션 비슷한 결과를 출력함
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}