반응형


 목차

 1. [조건문]Select Case문

2. [함수] Randomize

3. [코딩] 가위바위보


안녕하세요~


오늘은 가위바위보 게임을 만들어 볼거에요.



이런 개사기 가위바위보 말고...정정당당한 가위바위보 프로그램을 짜봅시다...


그전에 배워야 할 것이 두가지가 있어요!






1. [조건문]Select Case문


그러기위해서 필요한 IF문과 똑같은 성질을 지닌

다른 조건문을 다뤄보도록 할게요~


그건 바로,

C언어에서 Switch문과 비슷한 기능을 하고 있는

Select case 문!


Select Case. 뭔가 떠오르지 않으세요?

선택 조건


선택된 변수가 각각의 케이스에 따라 변하겠죠?

그 케이스에 따라 실행될 명령을 줄 수 있는 기능입니다.


IF문의 경우 TRUE/FALSE 둘중 하나만 선택가능하죠?


조건식이 참일경우와 거짓일 경우.


하지만 Select문은 여러가지 케이스를 넣을 수 있습니다.


쉽게 예제를 보여드릴게요.

가위바위보 게임을 하는데,

0을 '가위'

1를 '바위'

2을 '보'

라고 가정할게요.


다중 IF문

Dim A As Integer


If A=0 then

   Msgbox "가위를 내셨습니다."

 Else

   If A=1 then

      Msgbox "바위를 내셨습니다."

   Else

      If A=2 then

         Msgbox "보를 내셨습니다."

      End If

   End If

 End If

이해하기 쉽게 각각 IF문의 색깔을 다르게 해볼게요.

Dim A As Integer


┌If A=0 then

Msgbox "가위를 내셨습니다."

├Else

│ If A=1 then

│ │   Msgbox "바위를 내셨습니다."

│ Else

│ │ If A=2 then

│ │    Msgbox "보를 내셨습니다."

│ │ End If

│ End If

End If


가장큰 IF문 안에 두번째 IF문이 들어갔고,

그 안에 또 세번째 IF문이 들어갔죠.

헷갈리죠?



총 3번의 If을 썼어요.

지금은 가위 바위 보를 예시를 들었지만

나중에는 RPG게임 같은 걸 코딩 한다고 했을때

캐릭터 움직임과 공격 같은 걸 한다고 가정해봐요


그럼

상, 하, 좌, 우, 공격키, 방어키, 스킬키, 인벤토리, 옵션창......

각각 전부다 키입력을 받는 IF문을 다 만들어주게 되겠죠.

그럼 엄청나게 코딩이 불어날거에요.


이걸 가독성도 올리고 (*가독성-프로그래머가 읽기 쉬운 정도)

코딩 양도 줄고, 이해도 빨라 지겠죠?


자, 그럼 저 IF문을 가지고 Select Case문으로 바꿔 볼게요.


Dim A As Integer


Select Case A

Case 0

   Msgbox "가위를 내셨습니다."

Case 1

   Msgbox "바위를 내셨습니다."

Case 2

   Msgbox "보를 내셨습니다."

End Select

깔끔 하게 딱 떨어지죠?



이걸 좀더 코딩스럽게 바꾼다면

Dim A As Integer

Dim B As String


Select Case A

Case 0

   B = "가위"

Case 1

   B = "바위"

Case 2

   B = "보"

End Select

Msgbox B & "를 내셨습니다."

이렇게 되겠죠? (최대한 잘게 쪼개는걸 좋아하는 무꼬)


자, 그럼 IF문과 형제인 Select Case문 강의도 끝났습니다!

아 진짜 잘 가르치는듯..



2. [함수] Randomize




자, Randomize. 이게 뭘까요?

사전적 의미로는


임의 추출하다, 임의로 순서를 정하다. 라는 뜻인데요.

비주얼 베이직에서 이녀석이 하는 기능은


난수 생성기(랜덤 함수)를 초기화 하는 것 입니다.

팁을 드리자면,


사람에게 아무숫자나 생각해보세요~

라고 말하면 진짜 말그대로 랜덤한 숫자를 뽑아 낼 수 있겠죠?

165897, 1884111, 897516...등등...


하지만, 컴퓨터에게 "야, 랜덤한 숫자를 불러와!"

라고 했을때 어떻게 반응할까요?


사고력이 없는 컴퓨터는 그게 무슨말인지 모릅니다.

지정된 숫자 안에서 연산을 하고 지정된 명령에 따라 결과를 도출하는 컴퓨터에게는

절대로 불가능한 것입니다.


그럼? 우리가 컴퓨터에서 자주보는 난수(랜덤)값은 어디서 나오는 걸까요?

절대로 컴퓨터는 난수라는 개념을 생성할 수가 없습니다.

그럼 컴퓨터가 알아먹을 수 있는 틀 안에서 '난수가 생성되는 것 처럼 보이도록' 가능한 방법은 뭐가 있을까요?


바로 '시간'입니다.





시간은 계속 흐르고 있습니다.

다시 말해 매시, 매분, 매초, 매m/s...계속 시간은 흐르고 있죠.

그렇다면!!!

그 계속 흐르고 있는 시간 중에

사용자가 "랜덤 값을 띄워라!" 라고 명령했을 때,

컴퓨터는 흐르고 있는 시간을 캐치해서

숫자를 보여준다면?


계속해서 다른 숫자가 나오겠죠?


사실 조금 더 많이 복잡하지만 이와 원리가 같습니다.


아무튼 '난수'라는 개념만 놓고,

더 더 깊게 생각해보면 어떠한 규칙이 있을 수도 있다는 말입니다.

물론 그 규칙을 발견해서 예측을 하는 매니악한 해커도 있지요.


그럼 서론은 치우고,

Random 함수에대해 배워볼게요.


우선 비주얼 베이직에서는

랜덤 함수를 사용하기 전에 무조건 Randomize 라고 선언처럼 입력해줍니다.

왜 그러냐면


Random이라는 개념이 없다고 분명히 서론에서 말씀드렸죠?


Randomize를 미리 선언해주지 않고 함수를 사용하게 되면

랜덤함수가 발현 되었을때,

난수가 하나 만들어 집니다.

그 후, 다시 랜덤함수를 불러오면.


처음에 발현되었던 그 난수를 계속 반복해서 쓰게 됩니다.


쉽게 말해,

"랜덤 값 하나줘!" 라고 말했을때

 컴퓨터가 "자 내가 내놓은 랜덤값은 123이야."

라고 123이란 숫자를 뱉어냈습니다.


그리고 조금있다가

다시 "랜덤값 하나 더 줘!" 라고 말했을때

컴퓨터는 "어? 아까 가져갔잖아. 아까 말했다시피 내놓은 랜덤값은 123이야."

또 다시 123이란 값을 내뱉습니다.

..백번 천번 반복해도

처음 내뱉었던 123이란 값을 계속해서 뱉어냅니다.


그럼 어떻게 해야하냐


바로 난수생성기 초기화 함수인 Randomize 를 사용하시면 됩니다.


Randomize를 미리 써놓고

"랜덤값 하나줘!" 라고 말하면

처음에 123을 내뱉었다가


두번째에 또 "랜덤값 하나 더 줘!" 라고 말했을때

컴퓨터는

"응? 내가 언제 랜덤값을 준적있나? 초기화되어서 기억이 안나네. 에이 그냥 다시 만들어 줄게 자 111이야."


이렇게 되는 거죠.


이해하셨으면

직접 Random 함수를 사용해봅시다.


간단하게 1~10 숫자중에 아무거나 랜덤으로 값이 나오게 해볼게요.

랜덤값을 받을 RandINT 라는 변수를 선언


Dim RandINT As Integer 

Randomize

RandINT = (10 * Rnd()) + 1

Msgbox RandINT



이렇게 하면 서브가 실행 될때마다

1~10까지 랜덤으로 구한 숫자를 메세지 박스에 띄울겁니다.


다른거 다 필요없고,


RandINT = (10 * Rnd()) + 1

이 부분만 볼게요


Rnd() 함수는 난수 생성기에 있는 1을 넘지 않는 실수(Float)를 가져오는 함수입니다.

Rnd()함수는 결국 0 부터 0.99999..... 의 숫자들중 하나를 임의로 가져오는 거죠.

만약 난수생성기가 비어있다면 난수 생성기를 한번 돌린 후, 가져오고,

만약에 난수 생성기에 이미 한번 돌린 숫자가 있다면 그걸 그대로 가져옵니다.


그럼 RandINT라는 정수형 변수에 


난수 생성기가 뱉어낸 숫자를 하나 가져옵니다.

예를들어 '0.6284' 라고 합시다.


그럼 0.6284라는 숫자에 10을 곱하라고 되어 있죠?

6.284 라는 값이 나옵니다.

그 다음에 마지막에 +1 이 되어 있는데,

이건 즉 초기값을 뜻합니다.

그럼 7.284라는 숫자가 나오겠죠?


하지만 RandINT 변수는 '정수형'변수 이기때문에 뒤의 소수점은 전부 떼버립니다.

그럼 '7'이라는 값을 가지게 되겠죠.


결론적으로

[(10 * Rnd()) + 1] 이 수식은

최소값이 1 그리고 최대값이 10인 숫자들 중 하나를 가져오라는 말입니다.


그리고 참고로,


만약 RandINT 변수가 Integer(정수형)이 아니라 실수형 변수(Long)이라면?


Dim RandINT As Long

RandINT = (10 * Rnd()) + 1


이러면 7.284 라는 값이 그대로 나오겠죠.


그렇지만 그래도 나는 이 변수에 실수를 넣지 않고, 정수만 나오게 하고싶다!

그러면 뭐하러 Long으로 선언했냐, 그냥 Integer로 선언을 하지.

라고 말하시겠지만 이럴 때 있어요.

간혹 그런 상황이 필요하거든요.


그럴때 사용하는 함수가 바로

INT 함수입니다.

Integer 의 약자이죠?


Msgbox Int(10.55888)

이렇게 하면

소수점을 떼버리고 10이라는 숫자만 가지게 됩니다.


그럼 랜덤 함수에도 써먹을 수 있겠죠.


Int((10 * Rnd()) + 1)

괄호를 하나 더 씌워주고 Int를 넣어주면

1~10 사이의 정수형 난수가 추출되겠죠.


3. [코딩] 가위바위보


자, 이제 길고 길었던 요리의 재료준비를 마쳤습니다.


이제 컴퓨터와의 가위바위보 대결 게임을 만들어보겠습니다!


사용자는 [가위] [바위] [보] 이렇게 세가지를 낼 수 있고,

컴퓨터는 랜덤으로 가위 바위 보가 나오게 해야해요.



우선 기본적인 알고리즘을 볼까요.


이렇게 되겠죠.


자, 그럼 코딩으로 나가볼까요.


우선 사용자가 [가위] [바위] [보] 중 선택 할 수 있는 폼을 만들어볼게요.



자, 참고로 저기 있는 [가위][바위][보] 세개버튼은

[가위]버튼을 만들고 복사해서 붙여넣기 한겁니다.


그냥 하나씩 다 그려내는 것과

차이가 뭐냐면





하나씩 찍어서 그려내게 되면 Command1, Command2...이렇게 나옵니다.

하지만 복사 붙여넣기를 하게되면


이런 메세지가 출력되지요.


예(Y)를 누르면 복사가 하나 됩니다.


Command1(0)이 되었고.




Command1(1)이 되었습니다.


이게 뭐냐면 개체배열이라는 것인데,

복사된 개체는 이제 부터 Command1 이라는 이름하나가 되었고,

복사된 어떤 버튼을 누르든지 Command1_Click 으로 서브가 실행됩니다.

결국 위치, 모양만 다른 같은 버튼이라는 소리죠.

그럼 이 버튼들을 각각 다르게 동작하는 방법은 어떻게 될까 알아보면,

괄호 안에 있는 숫자가 해결해줍니다.

바로 인덱스(Index)라는 것입니다.


0번 부터 복사된 숫자 끝 번호까지 각각의 버튼은 인덱스에 다른 숫자를 가지게 됩니다.


그럼 커맨드 버튼을 더블클릭해서 Command1_Click 서브를 생성해볼까요?


두개 차이가 보이시나요?


괄호 안에 (Index As Integer) 라고 변수가 하나 더 선언 되어 있습니다.




자, 그럼 이걸로 가위, 바위, 보 버튼 세개를 만들어서 각각 버튼들이 다른 역할을 하게 하는 방법은!


이렇게 Command1(0)이 눌리면 Case 0으로 빠지고,

Command1(1)이 눌러지면 Case 1로 빠지고,

Command(2)가 눌러지게 되면 Case 2 로 빠지게 됩니다.


하지만 우리는 현재 이 방법을 쓰지는 않을 겁니다.

어차피 각각 버튼을 누르면

가위 = 0 

바위 = 1

보는 = 2

라는 인덱스 값이 들어오게 되죠.


이대로 가위바위보를 만들어도 되지만,

이해하기 쉽게 하기위해서 조금 더 쉽게 진행해볼게요.



그럼 계속해서...


자, 그럼 그냥 인덱스를 가져오기만하는 걸로 RSP_User 변수에 저장이 되겠죠?




그 다음은 이제 컴퓨터가 난수를 발생시킬 차례입니다.

그러면 RSP_Computer 이라는 변수에 0,1,2 중 하나의 값이 저장됩니다.


이제 다음 알고리즘대로 따라가면,

사용자의 선택과 컴퓨터의 난수를 비교해서 결과를 도출해주기만 하면 되겠죠.


저는 Label2.Caption 에다가 결과를 도출 할 겁니다.


우선 비교를 하는 구문을 보시죠~



유저가 가위를 냈을 경우 컴퓨터와 비교하는 것만 코딩 했습니다.

빨간 박스 안에 있는 코딩입니다.

[Select Case RSP_User] 구문 안에

다중으로 [Select Case RSP_Cumputer] 구문이 하나 더 들어갔죠?

다중 Select 구문입니다!


이런 식으로 유저가 바위를 냈을때 (Case 1) , 유저가 를 냈을때(Case 2)

두개 다 비교를 해주는 구문을 넣어주면 되겠죠.



완성된 최종 코드 입니다!


폼창도 틀린게 없는지 확인하고

실행을 한번 해볼게요~




바위를 한 번 눌러 볼게요




오늘 6강에서는 배운게 많았네요.


가위바위보 게임을 만드려면

Select Case문, Randomize, 개체 배열.

이렇게 알아야 할게 많네요~


코딩을 보시면

만약 저걸 If문으로 했다면...?

이라고 생각하시면 Select Case도 복잡해보이는데

후덜덜 하실겁니다.


후덜덜..




반응형
반응형

안녕하세요 무꼬입니다.


기초부터 탄탄하게 이해하기 쉽게 강좌를 한번 써보려고 합니당!


오늘 처음 배우실 것은


1. 폼창 그리기 (기본 개체들을 폼에 그리는 방법)

2. 개체들에게 기본 코딩 명령 넣기

3. 변수형에 대한 짤막한 설명



1. 폼창 그리기


기본 개체들을 폼에 그리는 방법입니다.


비주얼 베이직의 기본 화면입니다.



왼쪽편에 자리를 차지하고 있는 녀석이 도구상자입니다.

순서대로

포인터, 픽쳐박스

라벨, 텍스트박스

프레임, 커맨드 버튼

체크박스, 옵션버튼

콤보박스, 리스트박스

수평 스크롤바, 수직 스크롤바

타이머, 드라이브 리스트

디렉터리 리스트, 파일리스트

모양상자, 선

이미지, 데이터

OLE 개체


이렇게 있습니다.

볼릭체로 굵게 해둔게 기초강좌에서 제일 많이 쓰이는 것이니 참고해두세요.


그리고 이녀석은 폼창.

이곳에다가 도구상자에 있는 녀석들을 가져와서 그리기(개체 배치)를 할겁니다.



그리고 오른쪽에 자리하고 있는 속성창, 레이아웃창입니다.

속성은 각 개체가 가지고 있는 속성을 대부분 알려주고 있습니다.


비주얼베이직이 편한것은,

다른 언어에비해 기본 속성이 개체별로 지정이 되어 있어서,

편리하다는 겁니다.(반대로 말하면 무겁죠. 프로그램 자체가)


무슨말이냐면,

조물주(당신)가 사람(개체)을 만드는데,

이름, 성별, 체격, 특징, 특기들을 조물주인 당신이 하나하나 만들어야 하겠죠?

하지만 사람이라면 기본적으로 사지가 있고, 눈,코,입,귀가 있습니다.

이런 기본적인 속성을 비주얼 베이직에서는 기본으로 입력이 되어 있다는 거죠.

그럼 조물주 입장에서는 그 사람의 특기와 해야할 일만 지정해주면 아주 편하겠죠?


물론 특별한 경우 기본 속성도 바꿀 수 있습니다.



무튼,

기본적으로 위 세가지를 가장 많이 보게 되고 사용하시게 될 겁니다.


그럼 폼창에 간단하게 원하는 것을 그리기를 해볼게요.


우선 C언어에서 가장 많이 하는

"Hello World!" 문구를 나타내는 코딩을 목표로 그리기를 해나갈게요.




도구상자에서 라벨을 클릭해서,

폼창에 보기 좋게 그려줍니다.(드래그 앤 드롭)



[결과물]




자 그럼 기본적인 개체 그리기를 배웠으니, 아래와 같이 만들어 봅시다!




자, 성공하셨나요?

그럼 이제 Label1을 클릭하고, 속성 창으로 한번 눈을 돌려볼게요.



속성창에 보시면


 속성

값 

 (이름)

 Label1

 Alignment 

 0 - 왼쪽 맞춤

 Appearance

 1 - 3D

 AutoSize

False

이런 식으로

각 속성에 따라서 값이 지정되어 있는게 보이시죠?


이름은 해당 선택된 라벨의 이름을 뜻합니다.

그리고 Label개체에서 중요하게 보셔야 할 부분이

Caption 속성입니다.


Caption사용자에게 보여지는 부분입니다.

라벨(Label) 개체의 경우 보통 프로그래밍에서 사용자에게 설명하거나

문자열을 보여주고 싶을때 자주 사용합니다.


그럼 Label1의 Caption 값을 Hello World! 라고 입력하신뒤 엔터를 눌러보세요


위 그림과 같이 되었나요?



그럼 아래 처럼 해보세요!


아 참고로

textbox개체combo개체는 'Caption' 아니라

'text'속성에서 수정이 가능합니다.


자, 그럼 기초 1-1강은 여기서 끝입니다~!



2. 개체들에게 기본 코딩 명령 넣기

자, 그럼 이제 기본적인 배치는 끝났으니 기본 코딩을 잠깐 배워 볼까요?


인사하기 커맨드버튼을 눌렀을때

'Hellow World!' 라고 쓰여있는 라벨이 다른 문자열로 바뀌게 해볼게요.


그럼 인사하기 버튼을 더블클릭 해봅시다.


그럼 아래와 같이 코딩창이 뜨는데요.


간단하게 보면

Private sub Command1_Click() 

Command1 이라는 이름을 갖는 개체가 클릭 당했을 경우(Command1_Click)의 지역서브(Private sub)를 만든다.

라고 해석할 수 있습니다.

Private , Public 과 같은 전역, 지역 함수에 대한 개념은 나중에 설명드릴게요.



End Sub

여기까지 읽어 들이고 Command1_Click() 에 대한 서브를 마쳐라. 라는 뜻입니다.




그럼 저 두 문장 사이에 어떤 명령을 입력하면 되겠다 라는 감이 오시나요?



그럼 Command1 버튼을 클릭했을때 라벨에 쓰여있는 문자열을 바꾸도록 해볼게요.

아래와 같이 입력해주세요!

해석을 해보면

label1 속성중 Caption 속성을 "무꼬 블로그에 오신것을 환영합니다." 라는 문자열로 바꾸라는 뜻이에요.


그리고 기본적으로 문자와 문자열은 쌍따옴표 "" 안에 입력해야 합니다!

그렇지 않으면 그 문자 자체를 '변수' 라는 녀석으로 인식을 합니다.


그래서 문자나 문자열은 "" 안에 입력해주어야

아하, 쌍따옴표 안에 있는건 문자열(문장)이구나! 라고 생각하고 문자열로 인식합니다!


자 그럼 테스트 한번 해볼까요?


간단하게 테스트 하는 방법은


위에 보이는 시작버튼을 누르시면 됩니다.



그럼 지금까지 만들었던 프로그램이 실행 되었죠?




그럼 코딩했던대로 인사하기 버튼을 눌러 봅시다.


짜잔, 무꼬 블로그에 오신것을 환영합니다!


결과가 나왔습니다~

아, 저랑 폼이 왜 다르게 나왔냐고 물으신다면..(저는 윈7 테마를 이걸로 사용하고 있어서 그런거니 다를수 있어요.)


자 그럼, 창을 닫아주시고..

다음 강좌로 넘어갈게요.




3. 변수형에 대한 짤막한 설명


변수는 기본적으로

숫자형태로는 Integer, Long

문자 형태로는 String

참/거짓(부울)으로는 Boolean

이 있습니다.


그외에 Double, Byte, Object 등 변수 자료형이 많은데


지금은 기초를 다듬는 중이니, 굳이 설명안드리고,


Integer, Long, String, Boolean 만 설명 드릴게요.


갑자기 잘나가다가 이게 뭐냐? 라고 물으실텐데,


방금 1-2강에서 보여드린 

Label1.Caption = "무꼬 블로그에 오신것을 환영합니다."

이 코딩 내용 기억하시나요?


"" 쌍따옴표 안에 들어간 내용은 문자열이라고 말씀드렸죠?

그럼 변수형은 String이 되겠죠?


지금 그냥 이게 뭔 멍멍이 짖는 소리인가 하시면서 보시면 됩니다. ㅋㅋ


그럼 Integer는 영어 단어 그대로 '정수형'을 뜻하고,

Long은 '실수형'을 뜻합니다.


어렵게 말하면 변수라는 선언시 자료형을 미리 선언해주고,

필요한 자료형만 들어가게끔 최적화 시켜주는 작업. = 통칭 변수 선언

이라고 하는데요.


쉽게 말해서,

본인이 그릇을 만든다고 가정을 해요. (=변수 선언 준비)

그릇에 'MessageText'라고 이름을 붙입니다. (=변수 이름 설정)

그다음에 그 그릇에 무얼 담을지 분류하기 쉽게 포스트잇으로 붙여 놓는다고 가정할게요.

과일만 담을지, 고기만 담을지, 아니면 다른 그릇을 담을지...(=변수 자료형 설정)


그걸 컴퓨터가 알아먹게 언어로 바꾸면


Dim MessageText as String

라고 선언해줄 수 있어요.


'MessageText' 라는 변수명을 가지면서 '문자열(String)'만 받아들이는 변수를 선언한다!

라고 말해주는거죠.


예제가 어렵나요? 허헣...


저렇게 분류해주는 이유는 나중에 코딩을 할 때,

프로그램 자체가 꼬이는 것을 방지하기도 하고,

각 변수 자료형에 따라서, 그 그릇의 크기를 설정한다고 봐야해요.

예를 들어 사과하나만 담을 건데, 큰양동이같은 그릇은 필요가 없죠?(메모리 낭비)

반대로 서류작업할 문서 A4용지로 만들었는데, 밥그릇에 그걸 보관하기는 애매하죠?

(컴퓨터는 저런식으로 변수형과 맞지않는 값이 들어오게 되면 에러를 띄웁니다.)


그래서 미리 변수에게 그 그릇의 크기를 설정해주는 작업이 변수선언이라고 보시면 됩니다!

문자열만 받을 변수는 String

정수형만 받을 변수는 Integer

실수형만 받을 변수는 Long

참/거짓을 받을 변수형은 Boolean 




대충 이해 하셨죠?

아마 다른 블로그 강좌에서는


비베 자료형

자료형

크기

값의 범위

접미 문자

Byte

1바이트

  0 ∼ 255까지

 없음

Boolean

2바이트

  True, False

 없음

Integer

2바이트

  -32,768 ∼ 32,767까지

 %

Long

4바이트

  -2,147,483,648 ∼ 2,147,483,647까지

 &

Single

4바이트

  음수 : 약 -3.40*1038 ∼ -1.40*10-45

  양수 : 약 1.40*10-45 ∼ 3.40*1038까지

 !

Double

8바이트

  음수 : 약 -1.79*10308 ∼ -4.94*10-324까지

  양수 : 약 4.94*10-324 ∼ 1.79*10308까지

 #

Data

8바이트

  100년 1월 1일 ∼ 9999년 10월 31일까지

 없음

Currency

8바이트

  -922,337,203,685,477.5808 ∼ +922,337,203,685,477.5805

 없음

Object

4바이트

  모든 객체 참조 가능

 없음

String

10바이트+문자열 길이

  약 65,400바이트까지

 $

Variant

가변적

  숫자 : 16바이트(Double형 범위내 모든 숫자)

  문자 : 22+문자열 길이(변수길이 스트링과 같은 길이)

 없음

이런식으로 처음 접하시는 분들은 뭔소린가 싶을 표들이 보일거에요.


뭐 나중가면 이게 그냥 대강 머릿속으로 들어와요.



자, 그럼 이걸 어떻게 사용하느냐~


2강에서 뵙겠습니다 ㅎㅎ



반응형

+ Recent posts