프로그래밍 언어 복습/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]);
}
}