본문 바로가기
TIL/C#

반복문(while, for, foreach)

by jaemmm 2020. 9. 11.

오늘도 돌아온 C# 시간!!!!!

저번 시간까지는 조건문을 배웠다면 이번에는 새로운 파트!!! 반복문에 대해서 배워보겠다.

서론은 짧게 바로 시작해보자.


반복문도 조건문처럼 여러 종류가 있는데 그중에서 이번에는 while문에 대해서 배워보겠다.

 

while문조건이 true일 때 로직을 반복해서 실행한다.

 

문법은 위와 같이 while 뒤에는 true값이 들어가야 하기 때문에 bool 타입을 써야 한다.

 

그다음 반복하고 싶은 로직은 써넣으면 간단하게 끝.

 

바로 예시를 들어보겠다.

 

-- 는 연산자 때 배운것을 응용하였다.

 

위의 로직을 풀어서 설명한다면


현재 플레이어의 hp는 100이다. 그리고 hp가 0 초과일 경우 hp를 - 1씩 깎는다.

 

이렇게 될 경우 hp는 100부터 시작해서 1일 깎이며 결국 0이 될 것이다.


 

100부터 쭉 깎여서 0이 되었다.

만약 독 대미지를 입다가 플레이어가 죽는 것을 만들고 싶다면 아래와 같이 하면 된다.

 

배웠던 조건문을 바로 써보았다.

 

hp가 1씩 깎이는 건 그대로 놔둔 채로 플레이어의 피가 0 초과일 때는 if문이 반복적으로 실행될 것이고 0이 됐을 때,

즉, hp == 0 일 때 사망처리를 하는 것이다.

 

0이 됐을 때 사망....

그렇다면 독에 걸렸으니 중간에 "일정 hp 밑으로 떨어지면 해독제를 사용한다"라는 로직을 넣을 수도 있지 않을까?? 

 

이것 또한 배웠던 조건문을 사용해서 한번 만들어 보겠다.

 

여기서 break란 반복문을 끝내라는 뜻이다.

새로 if문을 만들어서 hp가 30이 될 때 해독제를 마셔서 독 상태를 푸는 로직을 만들었다.

 

break는 switch문에서도 잠깐 등장했는데 여기서는 약간 다른 의미로 반복문을 끝내라는 의미로 쓰인다.

 

30이 됐을 때 해독제를 사용했다.

 

 

다음으로 배울 반복문은 for문이다.

 

for문은 while문보다는 조금 복잡한 구문이며, 변수를 연산하면서 로직을 반복 실행할 때 쓰인다.

 

즉, 연산과 반복을 같이 처리해주는 것이다.

 

이렇게 보면 어떤 느낌으로 써야 하는지 약간 감이 안 올 것이다.

 

이번에도 바로 간단한 예를 들면서 설명해보겠다.

 

for문에는 연산될 변수, 조건, 연산이 들어간다고 했는데 위의 로직을 풀어서 설명해보겠다.

 

 


현재 num이 0이고 10이 될 때까지 1씩 더하면서 로직을 반복하겠다는 의미이다.

 

즉, 로직을 11번 반복하며 hp를 5씩 총 55를 채우겠다는 뜻이 된다.


 

제대로 출력됐는지 유니티에서 확인해보겠다.

 

예상한대로 출력되었다.

아까 hp가 30에서 해독제를 먹고 독이 치유된 상태를 계속해서 사용했다.

 

그 상태에서 hp포션을 먹고 피가 5씩 차며 총 11번 올라서 hp가 85에서 멈추었다.

 

 

그다음 for문의 최고의 장점은 그룹형 변수도 사용할 수 있는 것이다.

 

변수는 저번 시간에 사용했던 걸 다시 쓰겠다.
아까보다 더 복잡해졌다.

먼저 중간에 보이는 저 Length(배열)그룹형 변수의 길이를 나타내는 것이다. 그렇다면 배열이 아닌 경우에는 Count(리스트)를 쓰면 된다.

 

bossMonster의 총길이는 6이므로 Length는 6을 나타내고 있는 것이다.

 

 

처음 for문은 그룹형 변수를 사용할 수 있다고 했는데 위의 사진처럼 bossMonster라는 그룹형 변수(배열)를 사용해서 하나하나 Debug로 출력할 필요 없이 원하는 것을 출력할 수 있다.

 

이것도 풀어서 설명을 해보겠다.

 


원래는 bossMonster [숫자]라는 형태가 돼야 되는데, 이 숫자를 bossName이라는 새로운 변수를 만들어서 bossMonster [bossName]의 형태로 만든 것이다.

 

나머지는 아까 본 것처럼 bossName은 0에서부터 시작해서 6이 될 때까지 1씩 더하면서 총 0번에서 6번까지의 bossMonster를 출력할 것이다.


제대로 됐는지 확인 들어갑니다.

 

예상한대로 잘 나왔다.

하지만 그룹형 변수를 쓸 수 있는 건 좋지만 안에 써야 하는 것들이 너무 복잡하다.

 

이것을 최대한 간소화시켜서 만들 수 있는 것이 바로 foreach문이다.

 

foreach문은 for문 중에서 그룹형 변수 탐색에 특화되어있는 구문이다.

 

위의 사진처럼 foreach문은 직접 그룹형 변수 안에 있는 데이터를 하나씩 꺼내올 수 있으며, 일반 for문처럼 복잡하게 쓸 필요도 없다.

 

이번에도 풀어서 설명해보겠다.


bossMonster가 문자열이기 때문에 string을 사용하였다.

 

bossMonsters는 bossMonster안에 있으며 그 안에 있는 데이터를 순서대로 읽으면서 출력하는 로직이다.


과연 똑같은 결과로 출력됐을지 확인해보겠다.

 

좋아쓰

이처럼 같은 for문이지만 foreach를 사용하면 훨씬 간단하게 같은 결과물을 낼 수 있다.

 

 

 

 

이번에는 반복문 3가지를 한꺼번에 배워보았다.

 

이제 슬슬 C#에 적응한 것 같아 진도를 빼는 속도가 처음보다 빨라진 거 같다.

 

물 들어왔을 때 노를 저어야 되는 것처럼 이럴수록 더 많이 배워서 빨리 게임을 만들어 보겠다.

 

오늘은 여기까지

 

다음 시간에 쭉!!!!

 

 

 

 

 

 

'TIL > C#' 카테고리의 다른 글

클래스(Class)  (0) 2020.09.15
함수와 지역,전역 변수  (0) 2020.09.12
조건문 (switch-case,default)  (0) 2020.09.09
조건문 (if-else)  (0) 2020.09.07
비교, 논리, 삼항 연산자  (0) 2020.09.05

댓글