1. ExecClass
public class ExecClass {
public static void main(String[] args) {
// 1.
class GameManager{ // 다른 곳에서는 사용 못 하고 오직 이 메소드 내에서만 사용할 수 있는 클래스. 클래스 파일을 하나 더 만들고 빼도 된다.
public boolean doGame(Horse[] horse) {
boolean isEnd = true; // Horse의 isEnd와 다른 isEnd다. 이 위치에 선언하고 각 말의 객체의 isEnd와 비교해야 모든 말이 완주할 수 있고 return을 돌려보낼 수 있다.
for (int i = 0; i < horse.length; i++) { // Horse 객체를 0번부터 n번까지 달리게 만드는 반복문
horse[i].runHorse();
isEnd = isEnd && horse[i].isEnd; // doGame에서 true로 놓은 게임
}
return isEnd;
}
}
// Horse 객체 생성
Horse[] horse = {new Horse("흑마"), new Horse("적토마")};
// GameManager 메모리에 할당
GameManager gameManager = new GameManager();
// 턴을 증가시키는 반복문
for (int i = 0; i < 99999; i++) {
boolean isEnd = gameManager.doGame(horse);
System.out.println("---------------------------------");
if (isEnd) {
break;
}
}
}
}
2. Horse
import java.util.Random;
public class Horse {
String name;
int distance;
boolean isEnd = false;
static int rank = 0;
Horse(String name) {
this.name = name;
}
public void runHorse() {
if (!this.isEnd) {
this.distance = this.distance + (int)Math.floor(Math.random() * 100); // 매 턴마다 0~100 사이의 정수의를 달린 거리로 랜덤 누적.
System.out.println(this.name + " : " + this.distance);
this.checkEnd(); // 달린 누적 거리가 1000 이상이면 해당 객체의 isEnd를 True로 바꿔주는 메소드를 매번 체크 (게임에서 isLive 체크와 동일)
}
}
public void checkEnd() {
if (distance >= 1000) {
isEnd = true;
Horse.rank++;
System.out.println(this.name + " is goal" + " rank" + Horse.rank);
}
}
public void run() {
Random r = new Random();
for (int i = 0; i < 99999; i++) {
this.runHorse();
if (this.isEnd) {
break;
}
int sleepTime = r.nextInt(10) * 1000 + 300;
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {}
}
}
}
결과
흑마 : 87
적토마 : 53
---------------------------------
흑마 : 163
적토마 : 121
---------------------------------
흑마 : 252
적토마 : 172
---------------------------------
흑마 : 336
적토마 : 240
---------------------------------
흑마 : 401
적토마 : 261
---------------------------------
흑마 : 434
적토마 : 328
---------------------------------
흑마 : 529
적토마 : 343
---------------------------------
흑마 : 594
적토마 : 360
---------------------------------
흑마 : 679
적토마 : 436
---------------------------------
흑마 : 740
적토마 : 468
---------------------------------
흑마 : 781
적토마 : 503
---------------------------------
흑마 : 801
적토마 : 530
---------------------------------
흑마 : 835
적토마 : 559
---------------------------------
흑마 : 864
적토마 : 629
---------------------------------
흑마 : 915
적토마 : 636
---------------------------------
흑마 : 973
적토마 : 716
---------------------------------
흑마 : 1015
흑마 is goal rank1
적토마 : 783
---------------------------------
적토마 : 851
---------------------------------
적토마 : 926
---------------------------------
적토마 : 980
---------------------------------
적토마 : 1042
적토마 is goal rank2
---------------------------------
또 다른 결과
흑마 : 68
적토마 : 62
---------------------------------
흑마 : 89
적토마 : 66
---------------------------------
흑마 : 139
적토마 : 129
---------------------------------
흑마 : 189
적토마 : 195
---------------------------------
흑마 : 274
적토마 : 216
---------------------------------
흑마 : 373
적토마 : 294
---------------------------------
흑마 : 454
적토마 : 391
---------------------------------
흑마 : 509
적토마 : 489
---------------------------------
흑마 : 530
적토마 : 523
---------------------------------
흑마 : 587
적토마 : 565
---------------------------------
흑마 : 599
적토마 : 650
---------------------------------
흑마 : 607
적토마 : 678
---------------------------------
흑마 : 706
적토마 : 736
---------------------------------
흑마 : 802
적토마 : 805
---------------------------------
흑마 : 813
적토마 : 883
---------------------------------
흑마 : 841
적토마 : 954
---------------------------------
흑마 : 931
적토마 : 1008
적토마 is goal rank1
---------------------------------
흑마 : 1010
흑마 is goal rank2
---------------------------------
'개발자 > Java' 카테고리의 다른 글
Eclipse (이클립스) 서버 실행 불가 (0) | 2020.06.07 |
---|---|
Java (자바) HomeController의 locale, model, model.addAttribute() (0) | 2020.06.05 |
Java (자바) FileInputStream, FileOutputStream (0) | 2020.05.30 |
Java (자바) 파일 경로, 디렉토리 (0) | 2020.05.30 |
Java (자바) ArrayList 정렬하기 (Comparator 이용) (0) | 2020.05.25 |