---
# System prepended metadata

title: Untitled

---

## iOS 커리어 스타터 캠프
---
### ⚾️ 프로젝트 : 숫자야구게임
- 1~9까지의 랜덤한 숫자를 컴퓨터와 사용자가 각각 생성하여 비교합니다.
- 비교한 숫자를 통해, 스트라이크와 볼 개수를 세어 컴퓨터 또는 사용자 승리로 게임을 종료합니다.
---
### 🗓 진행기간
- 8월 16일 ~ 8월 21일
---
### 🙌🏼 팀원
- woong & bella
---
### ✏️ 흐름도
![](https://i.imgur.com/eUdtK8Y.jpg)

---

### 실행 화면
- 실행화면에서 사용자가 '2.게임종료' 선택 시


![](https://i.imgur.com/0vhQ8xt.png)

- 실행화면에서 사용자가 '1. 게임시작' 선택 시

![](https://i.imgur.com/N38iNwM.png)


- 정상실행 시

![](https://i.imgur.com/IF4ThTH.png)

---
### 트러블 슈팅

#### 0️⃣ 순서도 
- 제작요청서에서 요구하는 기능에 맞도록 순서도를 작성하였습니다.


#### 1️⃣ 일정한 범위의 중복되지 않는 숫자 구현
- 'Int.random(1...9)' 를 중복되지 않는 Set 배열에 넣어주도록 하였고, while문을 활용하여 Set 배열에 담긴 숫자의 개수가 3개가 될 때까지 숫자를 넣어줄 수 있도록 구현하여 문제를 해결하였습니다. 

#### 2️⃣ 컴퓨터번호와 사용자번호 비교를 위해, Set<Int>타입을 Array<Int> 즉 [Int]타입으로 변환
- 중복되지 않는 랜덤한 숫자를 생성하는 함수를 이용하여 '컴퓨터게임번호'와 '사용자번호'를 만들었는데, 이를 비교하기 위해 처음에 Set<Int> 타입으로 반환했던 함수를, 바로 Array 타입으로 변환하도록 변경하였습니다.
    
#### 3️⃣ 실제 사용자 입력 값 받아오기
- 컴퓨터번호와 사용자번호를 비교하는 함수에서, 추후 함수 호출 시 실제로 비교하고자 하는 사용자번호를 넣을 수 있도록 매개변수 지정하여 문제를 해결하였습니다. 

#### 4️⃣ 게임승부 결정
- 게임실행 함수내에 Switch문을 이용하여, 게임승부결정의 조건을 설정하였습니다. 

#### 5️⃣ 사용자 입력 메뉴
- 사용자의 숫자 3자리를 입력 : 세자리 수를 입력하는 오류처리를 해주었습니다. do-catch문으로 오류처리를 하려했으나, 요구사항에서 함수의 활용을 제한하여 switch문으로 처리하였습니다.
- 생성 가능한 전역변수 및 사용가능 함수의 기능을 일부 제약하여 정해진 전역변수와 함수안에 많은 어떤기능을 넣어야하는지 많은 고민을 할 수 있었습니다.(해결: 새로운 매개변수를 만들어 지정된 값으로 return했고 다른함수에서 호출하여 그 값을 사용하였습니다.)
 
    
---
### 피드백 받은 내용 정리
- 코딩 컨벤션을 준수하여 작성 할 것!
(공동으로 진행하는 프로젝트이므로 작업자 상호 가독성과 의도를 파악하기위한게 중요하므로 준수할 것)
- for문 혹은 while문을 사용할 때 둘의 차이와 어떤 것이 효과적일지 생각해보고 사용 할 것
- 전역변수와 지역변수의 차이와 그것을 더 공부하고 코드에서 사용하면 좋을 것
---
### 아쉬운점
- 사용자로부터 입력받은 3자리 숫자에 대한 유효성검증 중, (띄어쓰기/중복/빈값/문자)에 대한 처리가 아직 미흡합니다. 에러 발생 시, 에러메시지가 출력되며 실행이 멈추게 되어버리는데 해당부분에 대해서 더 처리할 수 없어서 아쉬웠습니다. 추후에 코드를 수정하여 보완해봐야겠습니다.
- git을 활용한 협업임에도 공유 처리 중, 사용자 간 지켜야할 컨벤션을 지키지 못해 아쉬웠습니다.(카르마스타일)
    
---
### 참고 링크
[함수](https://docs.swift.org/swift-book/LanguageGuide/Functions.html)
[흐름제어](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)
[오류처리](https://www.youtube.com/watch?v=l0fGtNnNsJg)
    
