hackee 2020. 10. 6. 16:47

 몬스터와 싸우는 기능을 만든다고 생각해볼까요?

 

 

 

아래 사진을 봅시다.

좌측처럼 한번만 공격하고  전투가 종료되는게 맞을까요,

우측처럼  고블린이 죽거나, 플레이어가 도망쳐서  전투씬이 종료되는게 맞을까요?

 

 

좌측보단 우측이 맞을겁니다.

 

우리가 지금까지 배운거로  우측처럼 만들 수 있을까요?

만들지 못합니다.

 

고블린의 HP가 몇인지 모르기에,  왼쪽의 코드를  몇번 더 써야할 지 모릅니다.

이럴땐, 우측처럼  반복문 (while)을 이용해주면   우리가 원하는 횟수만큼 반복시킬 수 있습니다.

 

특정 동작을 원하는 만큼 반복시키는 방법을   C언어 용어론 '반복' 이라 부릅니다.

반복엔 2가지 문법이 존재합니다.  while과 for.   

우선 while부터 알아봅시다.

1. while 괄호안의  조건이  참이면

2. 중괄호 { } 안에 있는 내용이 실행된다.

3. 중괄호 { } 안에 있는 내용을 다 실행했다면, 다시 1번으로 올라가 while 괄호안의 조건이 참거짓인지 따진다.

4. 조건이 참이면 2번행동을 반복한다.
거짓이면  닫는 중괄호 아래부분으로 빠져나온다.


 

while을 사용한 예제코드로 한번 더 볼까요?

 



 

코드는 위에서부터 아래로 실행이 되는데,  while문을 만나면 조건이 참인동안 { } 안에서 머무릅니다.

그러다 조건이 거짓이되면  { } 을 빠져나오고  밑의 코드들을 실행하게 됩니다.

 

while문을 활용한 예제를 좀더 봐볼까요?

i가 9보다 작거나 같은동안   괄호안의 두 문장을 반복합니다.

 

while 괄호안의 조건으로  if때 배운  관계연산자와 논리연산자를  사용하면 됩니다.

관계연산자 ( >, <, >=, <=, ==, !=)
논리연산자 (&&,||)

이번엔 직접 while문을 이용해 상점기능을 구현해볼까요?

소지금을 입력받고,  3번을 누르거나  소지금이 다 떨어지지 않는한  상점에 머무르게 만들어봅시다.

#include <stdio.h>

int main()
{	
	
	printf("소지금을 입력해주세요 : ");
	int money;
	scanf("%d",&money);
	
	while(money > 0) {
		printf("\n상점에 입장했습니다.\n");
		printf("소지금 : %d \n\n",money); 
		printf("1. HP 포션  50원\n");
		printf("2. MP 포션  70원\n");
		printf("3. 상점에서 나가기\n");
		 
		int n;
		scanf("%d",&n);
		
		if(n==1){
			if(money>=50){
				printf("HP포션을 구매했습니다.\n");
				money = money - 50;
			}
			else {
				printf("소지금이 부족합니다.\n");	
			}
		}
		else if(n==2){
			if(money >= 70){	
				printf("MP포션을 구매했습니다.\n");
				money = money - 70;	
			}	
			else {
				printf("소지금이 부족합니다.\n");	
			}
		}
		else if(n==3){
			printf("상점에서 나갔습니다.\n"); 
			break;	
		}
	}
	
	return 0;	
}

 

코드에 작성한 break라는 명령어는   한국어로  해석시  '멈추다', '부수다' 처럼     실행중인 반복문에서 빠져나오게 만듭니다.

즉,  자신이 속한   반복문에서  빠져나와    while문의  } 닫는 중괄호 밑의 내용을 실행하게 됩니다.

 

 

오늘은  특정 동작을  원하는 만큼 반복하는 방법에 대해 알아보았습니다.

while과 for문이 있고,  그 중 while문에 대해서만 배워봤습니다!

그럼 오늘도 파이팅입니다.

 

hackee.tistory.com/255

게임개발을 희망하는 초등학생, 중학생, 고등학생들을 위한 c언어 책

이 글을 보고있다는건 게임개발에 관심있다는 거겠죠? 그렇다면 정말 잘보셨습니다. 읽기 쉽고,  단기간 내에 자기꺼화 할 수 있게 최대한 핵심만 담았습니다. 게임을 어떻게 만드는지 궁금해

blog.codingteacher.kr

hackee.tistory.com/256

1장. 프로그램 결국 0과 1

프로그램이란 단어를 들어보셨나요? 앞으로 우리가 만들게될 게임들!! 결국 '프로그램' 입니다. 프로그램이란 컴퓨터가 실행하는 파일을 뜻합니다. 스마트폰을 사용하고 계신다면, 자주 접하는

blog.codingteacher.kr

hackee.tistory.com/257

2장. 출력. 전사키우기 게임에 오신걸 환영합니다.

 C언어에서 출력이란 화면에 나타나는 모든걸 뜻합니다. 예를들어 지뢰찾기 게임을 켰을때 화면에 나타나는 지뢰들의 이미지. 이 모든걸 다 '출력'이라 합니다.  위 사진에서 보이는 모든 내용�

blog.codingteacher.kr

hackee.tistory.com/258

3장. 변수. HP가 50인 전사가 생성되었습니다.

 잠시 머릿속에 자판기를 떠올려볼까요? 자판기를 보면 동전투입구와 지폐투입구가 있고, 얼마의 돈을 넣었는지가 조그만 창에 표시됩니다. 자판기에 오백원을 넣으면 화면에 500이라 표시되고

blog.codingteacher.kr

hackee.tistory.com/259

4장. 게임을 만들기 위한 5가지 필수 문법

 프로그램은 0과 1로 이루어져있다 했습니다. 하지만 0과 1로 프로그램을 만들기엔 시간도 오래걸리고 어렵기에, C언어로 프로그램을 만들면, 컴파일러가 0과1로 바꿔준다고 말씀드렸습니다. 그�

blog.codingteacher.kr

hackee.tistory.com/260

5장. 입력. 소지금을 입력해주세요.

이번 시간엔 정말 매력적인 '입력' 을 배워보겠습니다. 입력이 무엇을 의미하는지 이해 하기 위해 두 코드를 쳐보고  실행결과를 비교해봅시다. #include int main() { int money; money = 500; printf("소지금.

blog.codingteacher.kr

blog.codingteacher.kr/261

6장. 조건. 어떤 물건을 구매하시겠습니까? 1)청동검 2)철검

 잠시 머릿속에 게임 상점을 떠올려볼까요?   어떤 물건을 선택하냐에 따라  사용하는 돈과  구매하는 물건이 달라집니다. 스킬을 사용할때도 생각해볼까요? 누른 키가 무엇인지에 따라 다양�

blog.codingteacher.kr

 

초등, 중등, 고등  1:1 원격 c언어 교육문의

010 - 4537 - 7998

 

현재 대치동 학원에서 코딩강사로 활동중에 있습니다

영재고, 과학고 내신 /

초등, 중등, 고등 입문반, 초급, 중급, 정올반 /

앱, 게임 제작반  문의주세요!