우아한테크코스 프리코스 Week 2. 자동차 경주 게임

우아한테크코스 프리코스 기간 동안의 후기와 소감을 적은 연재글입니다.

첫 번째 미션을 제출하고 다음날 날아온 두 번째 미션은 자동차 경주 게임이었다.

  • 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.
  • 각 자동차에 이름을 부여할 수 있다.
  • 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
  • 자동차 이름은 쉼표(,)를 기준으로 구분하며 이름은 5자 이하만 가능하다.
  • 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.
  • 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4 이상일 경우 전진하고, 3 이하의 값이면 멈춘다.
  • 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한 명 이상일 수 있다.
  • 다음 Car 객체를 활용해 구현해야 한다.
  • Car 기본 생성자를 추가할 수 없다.
  • name, position 변수의 접근 제어자인 private을 변경할 수 없다.
  • 가능하면 setPosition(int position) 메소드를 추가하지 않고 구현한다.

이름에서 느껴지는 바와는 달리 각각의 자동차가 한 칸씩 움직일지 움직이지 않을지 랜덤 결정해 가장 멀리 간 자동차를 우승자로 치는 방식의 게임이었다.
Car 객체의 형태가 주어졌기 때문에 이를 객체 지향으로 풀어나가야 하는구나 하는 힌트를 얻을 수 있었다.

늘어난 제약조건들

단계가 올라갈 수록 이런저런 제약들이 추가되는 게 어렸을 때 해본 롤러코스터 타이쿤 게임이 생각났다.
소문에따르면 3주차에선 들여쓰기도 1번밖에 못하게 한다던데…

객체지향적으로 짜기

else 예약어를 쓰지 않는다.


힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다. else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.

1주차를 한창 하고 있을 때 else, getter, setter를 사용하는 게 나쁘다는 조언을 들었다. 그러고 딱! 이번 미션 컨벤션 조건에 else와 setter 사용 안하기가 나왔다.
getter도 사용하지 않아 보려고 했지만 현재 실력 수준에선 어려웠다.ㅠㅠ
최대한 메소드를 쪼개 짜고 클래스로 역할 분담하는 연습을 하는 중이다. MVC 패턴에 대해서도 찾아봤지만 이해가안되어 일단 이번주차에 적용은 못함…’

자바 API 잘 써먹기

C에서 쓰던 삼항 for문 대신 향상된 for문으로 바꿈으로서 가독성이 많이 나아졌다. 2주차에선 조금 늦게 알아서 많이 못 써먹었는데 Stream이라던가 java api 문서 잘 찾아 읽어보고 3주차에선 많이 써먹어 봐야겠다. 그외에도 객체 뒤에 점 한번 찍어 자동완성 목록 살펴보고 인텔리제이가 제공하는 제안 기능 써먹어 보고 하면서 배우는 중.

1 thought on “우아한테크코스 프리코스 Week 2. 자동차 경주 게임

  1. Pingback: 우아한테크코스 프리코스 Week 3. 블랙잭 – Hothead Factory

댓글 남기기