[자바스크립트 연습문제] 별찍기

** 이 게시물은 텍스트게임메이커를 사용하고 있습니다. '시작하기에 앞서 & 텍스트게임메이커' 글을 반드시 먼저 읽어 보세요.

별찍기

** 자바스크립트로 프로그래밍 입문 / [자바스크립트 연습문제] 13 별찍기 예제에서 이미 풀어보신 분들은 프로그래밍 연습이라기 보다, 텍스트게임메이커 연습이라고 생각하고 다시 한번 도전해 보시기 바랍니다. 콘솔에 문자를 출력하는 것과, 텍스트게임메이커 화면에 문자를 출력하는 방법이 약간 다릅니다.

텍스트게임메이커 화면에 반복문을 사용하여 위와 같이 별을 출력하려면 어떠한 코드를 작성해야 할까요?

이 글에서는 우선 위 그림처럼 별찍는 방법을 설명한 후, 다른 모양으로 별찍는 방법을 연습문제로 드리겠습니다.

그림을 살펴보면, 째줄에는 별이 1개, 째줄에는 별이 2개.. 이런식으로 다섯번째 줄에는 별이 5개로 되어 있습니다. 일단 별의 출력을 5번 반복한다는 것을 알 수 있죠.

TMS.clearScreen();
for(var i=1; i<=5; i++){

  //줄당 별의 갯수를 조절하는 부분
  //...

  TMS.insertText("\n\r");
}

대부분의 프로그래밍 언어에서 문자열 안의 \n은 줄바꿈을 나타내고 \r은 커서를 가장 왼쪽으로 옮기는 것을 나타냅니다. 대부분의 언어에서는 \n만으로도 줄바꿈과 커서의 이동이 한번에 되지만, 텍스트게임에디터에서는 의도적으로 줄바꿈과 커서의 이동을 분리하였습니다.

복잡한 설명은 잊고 TMS.insertText("\n\r");를 입력하면 줄을 바꾸고 커서를 가장 왼쪽으로 이동한다는 것만 기억합시다.

다음으로 해결해야 할 부분이 해당 줄 번호에 맞게 별을 찍어주는 부분입니다.

n번째 줄에는 n개 만큼의 별이 찍힙니다. 이때 몇번째 줄인지 알 수 있는 방법은 i입니다. 첫번째 줄은 i가 0, 2번째 줄은 i가 1 ... 이런 식이죠. 즉 i만큼 반복하여 별을 찍어주면 됩니다.

TMS.clearScreen();
for(var i=1; i<=5; i++){
  for(var j=1; j<=i; j++){
    TMS.insertText("*");
  }
  TMS.insertText("\n\r");
}

어렵지 않죠? 자 그럼, 위의 내용을 바탕으로 아래 그림처럼 별을 찍는 반복문을 만들어 봅시다.

1.

*****
****
***
**
*

힌트: 별의 숫자가 줄 번호와 반대로 움직입니다.

2.

*****
 ****
  ***
   **
    *

힌트: 빈칸을 먼저 찍고, 별을 찍어줘야 합니다.

3.

**********
****  ****
***    ***
**      **
*        *

이 문제는 고난이도 보너스 문제입니다. 너무 어렵다면 그냥 넘어가셔도 좋습니다.

댓글

댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP