프로그래밍 언어 복습/JAVA

#40 JAVA 100m 올림픽 : 달리기 경주 게임

사재원 교수 2022. 5. 26. 20:28

내가 만든 문제가 아니라서 문제를 조금 이해하기 어려웠지만 쨌든 내가 해석한 대로 문제를 풀어서 코드를 짜봤다

은근 머리가 아프더라 생각보다 시간이 좀 걸렸다

정답 공개 ! 

package NewProject;

import java.util.Random;

//플레이어 생성하는 클래스 (나라,전진거리,레인)
class Player{
	Random r = new Random();
	String country; //나라이름
	int result = 0; //전진거리
	int rain; //몇번레인
	Player(String country,int rain){
		this.country = country;
		this.rain = rain;
	}
	public void runandrun() {
		result += r.nextInt(10)+1;
	}
	public void print() {
		System.out.println(rain + "번 레인의 " + country + "선수의 전진거리 : " + result);
	}
	
}
//랜덤으로 한 선수에게 돌발상황이 발생하며 달린거리의 -10m가 된다.
class Den{
	Den(Player p){
		System.out.println(p.country +"선수의 돌발 상황 발생 ! -10m !!");
		p.result -= 10;
	}
}




public class Start {
	public static void main(String[] args) {
		//랜덤함수만들기
		Random r = new Random();
		
		//나라 배열 만들기
		String[] name = {"한국","중국","미국","러시아"};
		
		//플레이어 자료형 4개 생성
		Player[] p = new Player[4];
		//돌발상황 자료형만 만들기
		Den d;
		
		//레인
		int count = 0;
		
		//총 4명의 플레이어 객체 만들어줌과 동시에 나라와 레인을 각각 넣어줌.
		for(int i=0;i<p.length;i++) {
			count ++;
			p[i] = new Player(name[i],count);
		}
		
		//while 컨트롤 하기 위한 boolean 변수
		boolean chk = true;
		
		//결승점에 한명이 통과할때까지 while 무한루프 돌리기
		while(chk) {
			
			for(int i=0;i<p.length;i++) {
				p[i].runandrun();
				System.out.println(p[i].country + "선수 전진거리 : " + p[i].result);
			}
			
			int a = r.nextInt(4);
			d = new Den(p[a]);
			
			for(int i=0;i<p.length;i++) {
				if(p[i].result > 100) {
					chk = false;
				}
			}
		}
		//게임이 끝나고 각 선수들의 전진거리를 array배열에 각각 담아줌
		int[] array = new int[4];
		for(int i=0;i<array.length;i++) {
			array[i] = p[i].result;
		}
		
		//전진거리 값이 가장 큰 사람의 인덱스를 얻는다.
		int first = array[0];
		int j = 0;
		for(int i=0;i<array.length;i++) {
			if(first < array[i]) {
				first = array[i];
				j = i;
			}
		}
		
		// 각 선수들의 정보와 총 전진거리를 출력
		System.out.println("--------결승선 통과---------");
		for(int i=0;i<p.length;i++) {
			p[i].print();
		}
		
		// 우승한 나라를 위에서 뽑아냄 index를 통해 출력해줌.
		System.out.println("-------------------");
		System.out.println("우승나라 : " + name[j]);
		
		
		

	}
}