iOS ์•ฑ ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜/TIL

3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ ์‹ฌํ™”_๊ฐœ์ธ๊ณผ์ œ_์•ผ๊ตฌ๊ฒŒ์ž„๋งŒ๋“ค๊ธฐ(Lv3~6)

yeggrrr๐Ÿผ 2024. 3. 17. 17:16


์ด์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ •๋ฆฌํ•œ ์•ผ๊ตฌ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ Lv1~2์— ์ด์–ด์„œ
Lv3~6 ํ’€์ด ๊ณผ์ •์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ˜ƒ

Lv1~2 ๊ฒŒ์‹œ๋ฌผ์€ ์•„๋ž˜ ๋งํฌ๋กœ Go!

 

3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ ์‹ฌํ™”_๊ฐœ์ธ๊ณผ์ œ_์•ผ๊ตฌ๊ฒŒ์ž„๋งŒ๋“ค๊ธฐ(Lv1~2)

์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ ๊ณผ์ œ๋Š” ํ•„์ˆ˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ Lv1~2 ์„ ํƒ ๊ตฌํ˜„ ๊ธฐ๋Šฅ Lv3~6์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์—ˆ๋‹ค. Lv1์€ ๋žœ๋ค ์ˆซ์ž ๋ฝ‘๊ธฐ Lv2๋Š” ๋žœ๋ค์œผ๋กœ ๋ฝ‘ํžŒ ์ˆซ์ž์™€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’(readLine() ํ•จ์ˆ˜ ์‚ฌ์šฉ)์„ ๋น„

yegenie-coding.tistory.com



Lv3

โ‘  ๋žœ๋ค ์ˆซ์ž ๊ธฐ์กด 1~9 ๋ฒ”์œ„๋ฅผ 0~9๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ
โ‘ก ๋žœ๋ค ์ˆซ์ž ๊ฐ€์žฅ ์•ž์ž๋ฆฌ ์ˆซ์ž๊ฐ€ 0์ด ๋‚˜์˜ค์ง€ ์•Š๋„๋ก ๋งŒ๋“ค๊ธฐ


์šฐ์„  ๋žœ๋ค ํ•จ์ˆ˜ ์† ๋ฒ”์œ„๋ฅผ '0...9'๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  if-else๋ฌธ์—์„œ else์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. (์ฒซ ๋ฒˆ์งธ ์ˆซ์ž์—์„œ๋Š” 0์ด ๋‚˜์˜ค๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—)
๊ทธ๋Ÿฐ ๋‹ค์Œ randomNums์˜ ๊ฐฏ์ˆ˜๊ฐ€ 0๊ณผ ๊ฐ™๋‹ค๋ฉด, ๋žœ๋ค ์ˆซ์ž๋ฅผ 1~9๊นŒ์ง€ ๋ฝ‘๊ณ  randomNums์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 1~9๊นŒ์ง€ ๋žœ๋ค์œผ๋กœ ๋ฝ‘ํžˆ๊ณ ,
๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 0~9๊นŒ์ง€ ๋ฝ‘ํžˆ๊ฒŒ ๋œ๋‹ค.

์ด 3๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ๋ฝ‘ํžˆ๊ฒŒ ๋˜๋ฉด, randomNums.count < 3 ์˜ ์กฐ๊ฑด์ด false๊ฐ€ ๋˜์–ด while๋ฌธ์ด ๋๋‚˜๊ฒŒ ๋˜๊ณ ,
randomNums์˜ ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด๋ฐ›๋„๋ก ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๋žœ๋ค ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š” while๋ฌธ์€
Int ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด ๋ฐ›๋Š” makeRandomNums๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์•ˆ์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.


Lv4

ex) ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์›ํ•˜์‹œ๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.
1. ๊ฒŒ์ž„ ์‹œ์ž‘ 2. ๊ฒŒ์ž„ ๊ธฐ๋ก ๋ณด๊ธฐ 3. ๊ฒŒ์ž„ ์ข…๋ฃŒ

โ‘  ์œ„์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ ์•ˆ๋‚ด ๋ฌธ๊ตฌ ๋„์šฐ๊ธฐ
โ‘ก 1๋ฒˆ์„ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด, ํ•„์ˆ˜๊ตฌํ˜„์—์„œ ๋งŒ๋“  ๊ฒŒ์ž„ ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ธฐ
โ‘ข ์ •๋‹ต์„ ๋งž์ถฐ ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ ์œ„ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๋ฅผ ๋‹ค์‹œ ๋ณด์—ฌ์ฃผ๊ธฐ


์šฐ์„  startGame()์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์•ž์„œ Lv1~2์—์„œ ๋งŒ๋“  ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

๋‹ค์Œ print๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋‚˜์˜ฌ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด์คฌ๋‹ค.
์˜ต์…˜ ์•ˆ๋‚ด ๋ฌธ๊ตฌ(1. ๊ฒŒ์ž„์‹œ์ž‘ 2. ๊ฒŒ์ž„๊ธฐ๋ก๋ณด๊ธฐ 3. ๊ฒŒ์ž„์ข…๋ฃŒ) ๋˜ํ•œ print๋กœ ๋งŒ๋“ค์–ด์คฌ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ 1๋ฒˆ์„ ๋ˆ„๋ฅด๋ฉด, ๊ฒŒ์ž„์ด ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“ค์–ด์•ผํ•˜๋ฏ€๋กœ(=์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์•„์•ผ ํ•จ)
Lv1~2์—์„œ ๊ฒŒ์ž„ ์†์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ readLine() ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ๋„ฃ์–ด์ฃผ๊ณ ,
์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’์„ Int๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ clickedNum์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  if ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ 1์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ,
์•ž์„œ ๋งŒ๋“  startGame() ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค.

์ •๋‹ต์„ ๋งž์ถ”๋ฉด ์˜ต์…˜ ์•ˆ๋‚ด ๋ฌธ๊ตฌ๊ฐ€ ๋‹ค์‹œ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ while๋ฌธ ๊ณ„์† ๋Œ ์ˆ˜ ์žˆ๋„๋ก
var gameOver = false๋ฅผ ์„ค์ •ํ•ด๋‘๊ณ ,
while๋ฌธ์— gameOver == false์ธ ๊ฒฝ์šฐ๋ผ๊ณ  ์กฐ๊ฑด์„ ๋‘๊ณ ,
์œ„์— ๋งŒ๋“  ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

(๋งˆ์ง€๋ง‰ Lv6์—์„œ 3(๊ฒŒ์ž„ ์ข…๋ฃŒ)๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, while๋ฌธ์ด ๋๋‚˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋„๋ก
gameOver = true๋ฅผ ๋„ฃ์–ด์ค„ ์˜ˆ์ •) 

 


Lv5

ex) 1๋ฒˆ์งธ ๊ฒŒ์ž„ : ์‹œ๋„ ํšŸ์ˆ˜ - 14๋ฒˆ
2๋ฒˆ์งธ ๊ฒŒ์ž„: ์‹œ๋„ ํšŸ์ˆ˜ - 11๋ฒˆ
โ‘  2(๊ฒŒ์ž„ ๊ธฐ๋ก ๋ณด๊ธฐ)๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ, ์œ„์™€ ๊ฐ™์ด ๊ฒŒ์ž„ ์‹œ๋„ ํšŸ์ˆ˜ ๋ณด์—ฌ์ฃผ๊ธฐ

startGame() ํ•จ์ˆ˜ ์† ์ฝ”๋“œ์—์„œ

๋ฐ‘์— isRunning = answerNums != inputNums
(→ isRunning = ์ •๋‹ต๊ณผ ์ž…๋ ฅ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ false)
๋ผ๋Š” ์กฐ๊ฑด์„ ๋‘๊ณ  ์žˆ์—ˆ๋˜, isRunning while๋ฌธ ์•ˆ์—
count += 1์„ ๋„ฃ์—ˆ๋‹ค.
( → strike, ball, ์ •๋‹ต์„ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜์ธ chkStrikeAndBall()ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ์„ธ๊ธฐ ์œ„ํ•ด์„œ)

๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๊ธˆ์ „ ํ–ˆ๋˜ ๊ฒŒ์ž„์—์„œ ์ •๋‹ต์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์‹œ๋„ํ•œ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ
myGameResults๋ผ๋Š” ๋ฐฐ์—ด์„ ๋‹ด๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ ,

append๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ทธ ๋ณ€์ˆ˜์— ์‹œ๋„ํ•œ ํšŸ์ˆ˜(count)๋ฅผ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ myGameResults์˜ ๊ฐฏ์ˆ˜ - 1 ๊นŒ์ง€ for๋ฌธ์œผ๋กœ ๋Œ๋ ธ๋‹ค. (index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— → ..<)
๊ทธ๋ฆฌ๊ณ  tryCount์— ๋งˆ์ง€๋ง‰ ์‹œ๋„ ํšŸ์ˆ˜์ธ myGameResults๋ฅผ ๋„ฃ์–ด์„œ
์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ print๋ฅผ ํ™œ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ 2(๊ฒŒ์ž„ ๊ธฐ๋ก ๋ณด๊ธฐ)๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ,
ํ•ด๋‹น ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์คฌ๋‹ค.
(i + 1 ์ธ ์ด์œ ๋Š” index 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— '0๋ฒˆ์งธ ๊ฒŒ์ž„' ์ถœ๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์ž„.
๋ฌธ์ œ์—์„œ '1๋ฒˆ์งธ ๊ฒŒ์ž„'๋ถ€ํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ๋งŒ๋“ค๋ผ ํ–ˆ์œผ๋‹ˆ, i + 1) 

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ก์„ ๋ณด๋Š” ์ฝ”๋“œ๋ฅผ ๋‹ด์„ seeResult() ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ๊ทธ ์†์— ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์คฌ๋‹ค.


Lv6

โ‘  3(๊ฒŒ์ž„ ์ข…๋ฃŒ)๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋„๋ก ํ•˜๊ธฐ
โ‘ก ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ, ์ด์ „์˜ ๊ฒŒ์ž„ ๊ธฐ๋ก์ด ์ดˆ๊ธฐํ™” ๋˜๋„๋ก ๋งŒ๋“ค๊ธฐ
โ‘ข 1, 2, 3 ์ด์™ธ์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋งŒ๋“ค๊ธฐ

๊ฒŒ์ž„ ์ข…๋ฃŒ ํ•จ์ˆ˜ exitGame()์„ ๋งŒ๋“ค์–ด
3(๊ฒŒ์ž„ ์ข…๋ฃŒ)์„ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ์— ์‹คํ–‰ํ•  ํ•จ์ˆ˜ exitGame()๋ฅผ ๋งŒ๋“ค์–ด์„œ
๋„์–ด์ค„ ๋ฌธ๊ตฌ๋ฅผ print()ํ•จ์ˆ˜๋กœ ๋„ฃ์–ด์ฃผ๊ณ ,
๋„์ „ ํšŸ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ myGameResults๋ฅผ ๋นˆ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๊ณ ,

์•ž์„œ while gameOver == false { ~~ } ๊ฐ€ true์—ฌ์„œ ๊ณ„์† ๋Œ๊ณ  ์žˆ๋˜ ํ”„๋กœ๊ทธ๋žจ์„ 
gameOver = true ๋„ฃ์–ด์ฃผ์–ด ์กฐ๊ฑด์„ false๋กœ ๋งŒ๋“ค์–ด์„œ while๋ฌธ์„ ์ข…๋ฃŒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์คฌ๋‹ค.

๊ทธ๋ฆฌ๊ณ  1~3์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ
์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œฐ ์ˆ˜ ์žˆ๋„๋ก wrongInput() ํ•จ์ˆ˜๋„ ๋งŒ๋“ค์–ด์คฌ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ 1(๊ฒŒ์ž„ ์‹œ์ž‘)์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ
2, 3, ์ด์™ธ์˜ ๊ฒฝ์šฐ๋ฅผ if ์กฐ๊ฑด๋ฌธ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋!!



์•ผ๊ตฌ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ Lv1~6 ์ฝ”๋“œ๋Š”
github์— ์˜ฌ๋ ค๋†จ์œผ๋‹ˆ,
์ „์ฒด์ ์ธ ์ฝ”๋“œ๊ฐ€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์•„๋ž˜ ๋งํฌ๋กœ ๊ณ ๊ณ !

https://github.com/yeggrrr/MyPlaygrounds

 

GitHub - yeggrrr/MyPlaygrounds

Contribute to yeggrrr/MyPlaygrounds development by creating an account on GitHub.

github.com


 


 

728x90