# βΎοΈ NumberBaseball
## π λͺ©μ°¨
1. [μκ°](#π±-μκ°)
2. [νμλΌμΈ](#β°-νμλΌμΈ)
3. [μκ°νλ νλ‘μ νΈ κ΅¬μ‘°](#π-μκ°νλ-νλ‘μ νΈ-ꡬ쑰)
4. [μ€ν νλ©΄](#π»-μ€ν-νλ©΄)
5. [νΈλ¬λΈ μν
](#β-νΈλ¬λΈ-μν
-βοΈ)
6. [νλ‘μ νΈ μν μ€ ν΅μ¬ κ²½ν](#β
-νλ‘μ νΈ-μν-μ€-ν΅μ¬-κ²½ν)
7. [μ°Έκ³ λ§ν¬](#π-μ°Έκ³ -λ§ν¬)
## π± μκ°
`Gundy`μ `mene` νμ΄ λ§λ 3κ°μ μ«μλ‘ νλ μ«μ μΌκ΅¬ κ²μμ
λλ€.
## β° νμλΌμΈ
### Step 1
<center><img width="500" src="https://i.imgur.com/8AAQX3g.png"></center>
<center><img width="500" src="https://i.imgur.com/elgGZzm.png"></center>
<center><img width="500" src="https://i.imgur.com/ztw2KGa.png"></center>
### Step 2
<center><img width="500" src="https://i.imgur.com/ZkAWQfy.png"></center>
<center><img width="500" src="https://i.imgur.com/OViDjYc.png"></center>
## π μκ°νλ νλ‘μ νΈ κ΅¬μ‘°
<center><img width="500" alt="μ€ν¬λ¦°μ· 2022-08-16 μ€ν 4 35 22" src="https://user-images.githubusercontent.com/84453688/184835561-b17d400a-cddf-4b65-bcaf-2084e28b7c6a.png"></center>
<br>
| μΉλ¦¬ 쑰건 | μ€νΈλΌμ΄ν¬ / λ³Ό νμ |
|:--:|:--:|
|<img src="https://i.imgur.com/GOT8pGE.png" width="450">|<img src="https://i.imgur.com/mZfpg4X.png" width="450">|
μ΄λ―Έμ§ μΆμ²: https://play.google.com/store/apps/details?id=com.snownaul.baseballgame&hl=en&gl=US
## π» μ€ν νλ©΄
| μ¬μ©μ μΉλ¦¬ | μ»΄ν¨ν° μΉλ¦¬ | μλͺ»λ μ
λ ₯ |
|:--:|:--:|:--:|
|<img src="https://i.imgur.com/Lc1z4VO.gif" width="300">|<img src="https://i.imgur.com/p6eklQT.gif" width="300">|<img src="https://i.imgur.com/XHoPvFt.gif" width="300">|
## β νΈλ¬λΈ μν
βοΈ
- #### ν¨μμ μν λΆλ¦¬
νλμ ν¨μκ° λ무 λ§μ κΈ°λ₯μ κ°μ§κ² λλ κ²½μ°, λ³λμ ν¨μλ‘ λΆλ¦¬νλ κ³Όμ μ κ±°μ³€μ΅λλ€. `compareNumber` ν¨μμμ `checkResult`λ₯Ό, `inputNumbers` ν¨μμμ `checkDuplication` ν¨μμ `checkNumberRange` ν¨μλ₯Ό λΆλ¦¬ν κ²μ΄ λνμ μ
λλ€.
ν¨μλ₯Ό λΆλ¦¬νλ κ³Όμ μμ μ§μ λ³μλ μ¬μ©νμ§ λͺ»νκ² λκΈ° λλ¬Έμ λ°νλΆλ₯Ό μΆκ°νλ λ±μ λ°©λ²μΌλ‘ μλ‘ μκΈ°λ λ¬Έμ λ€μ ν΄κ²°νμμ΅λλ€.
- #### ν¨μ νΈμΆ μμΉ
ν¨μλ₯Ό νΈμΆν¨μ μμ΄ μ μ ν μμΉλ₯Ό κ³ λ―Όνμμ΅λλ€. ν¨μμ μν μ λΆλ¦¬νκ³ λ λ€μμλ `compare` ν¨μ λ΄λΆμμ `checkResult` ν¨μλ₯Ό νΈμΆνμμ΅λλ€. `compare` ν¨μλ λ°νμ΄ μλ ν¨μμκΈ° λλ¬Έμ μ§μ λ³μμΈ strikeμ ballμ μ¬μ©νκΈ° μν¨μ΄μλλ°, μ£Όλ ν¨μλ‘ λ³΄μ΄λ `startGame` ν¨μμμ `compare` ν¨μμ `checkResult` ν¨μλ₯Ό νΈμΆν¨μ΄ λμ± μ μ ν΄ μμ νμμ΅λλ€. μ΄ κ³Όμ μμ μκΈ°λ μ§μ λ³μ μ¬μ© λΆκ° λ¬Έμ λ `compare` ν¨μλ₯Ό (Int, Int) νμ
μ νν κ°μ λ°ννκ² νμ¬ ν΄κ²°νμμ΅λλ€.
- #### μ«μλ₯Ό λ΄μ `Collection Type` **Set**μ **Array** μ μ ν
Setλ₯Ό μ¬μ©ν΄ 1-9κΉμ§μ λλ€ν μ«μλ₯Ό 3κ°κ° λ λκΉμ§ μΆκ°νκ³ Arrayλ‘ λ³ννμ¬ μ¬μ©νλ λ°©λ²κ³Ό, 1-9κΉμ§μ μ«μκ° λ€μ΄μλ Arrayλ₯Ό `shuffled` λ©μλλ₯Ό μ¬μ©νμ¬ μμ΄μ€ ν 3κ°μ μ«μλ₯Ό λ½μμ μ¬μ©νλ λ°©λ²μ μκ°νμ¬ λ³΄μμ΅λλ€. Array μ¬μ© μ, Setμ insertνκΈ° μν΄ λ£¨νλ₯Ό λλ¦¬μ§ μμλ λκ³ Setλ₯Ό Arrayλ‘ λ³ννλ κ³Όμ μ κ±°μΉμ§ μμλ λμ΄ μ΅μ’
μ μΌλ‘λ Arrayλ₯Ό μ¬μ©νλ κ²μΌλ‘ κ²°μ νμμ΅λλ€.
- #### λ°λ³΅λ¬Έ νμΆ μ‘°κ±΄
μ΄κΈ°μλ λ°λ³΅λ¬Έ νμΆ μ‘°κ±΄μΌλ‘ λ³μ `remainCount`κ° 0μ΄ λ κ²½μ° λ°λ³΅λ¬Έμ μ’
λ£νκ² νμ¬ `strike`κ° 3κ°μΈ κ²½μ°μλ `remainCount = 0` μ½λλ₯Ό μ€ννκ² νμμ΅λλ€. μ΄λ μ μ νμ§ μμ λ³΄μ¬ `remainCount`κ° 0μ΄κ±°λ `strike`κ° 3κ°μΈ κ²½μ° `break`λ‘ νμΆ μ‘°κ±΄μ μμ νμμ΅λλ€. μ΄λ₯Ό μν΄ `compare` ν¨μλ₯Ό (Int, Int) νμ
μ νν κ°μ λ°ννκ² νμ¬ `gameScore` μ§μ μμμ ν λΉνμμ΅λλ€.
- #### λ¨μ κΈ°ν μ΄κΈ°ν
νμ κ²μμ ν λ²λ§ μ§ννμ¬ λͺ°λλ λ¬Έμ μ μΈ κ²μμ΄ λλκ³ , μλ‘μ΄ κ²μμ μ΄μ΄κ° λ λ¨μ κΈ°νκ° μ΄κΈ°ν λμ§ μλ μ΄μλ₯Ό λ°κ²¬νμμ΅λλ€. μ΄κΈ°νν μ μλλ‘ `startGame` ν¨μ λ΄λΆμ μ΄κΈ°ν μ½λλ₯Ό μΆκ°νμ¬ ν΄κ²°νμ΅λλ€.
- #### λ¨μ κΈ°ν μΆλ ₯
μ¬μ©μ μΉλ¦¬μμλ λ¨μ κΈ°νκ° μΆλ ₯λλ λ¬Έμ κ° μμ΄, ν΄λΉ λΆλΆμ `checkResult` ν¨μ λ΄λΆμ 쑰건문μ μΆκ°νμ¬ μΉλ¦¬ μμλ μΆλ ₯λμ§ μλλ‘ λ³κ²½νμμ΅λλ€.
## π μ°Έκ³ λ§ν¬
- [Swift API Design Guidelines - Naming](https://swift.org/documentation/api-design-guidelines/)
- [Swift Language Guide - Optionals, nil, Optional Binding](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html)
- [Swift Language Guide - Collection Types](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html)
- [λꡬλ μ½κ² μ
λ¬Έν μ μλ Git μ
λ¬Έ](https://backlog.com/git-tutorial/kr/intro/intro1_1.html)
- [Git Book](https://git-scm.com/book/ko/v2)
---
[π 맨 μλ‘ μ΄λνκΈ°](#βΎοΈ-NumberBaseball)
###### tags: `README`