반응형

UI Text에 float을 String으로 표현해야 할 때 원하는 소수점 자리까지만 표현을 하고 싶을경우가 있다.

 

단순히 ToString() 함수에 'F' 포맷을 넣어주면 된다.

float a = 1.234f;

a.ToString("F1"); // 1.2

a.ToString("F2"); // 1.23

a.ToString("F3"); // 1.234

 

또 마찬가지로 숫자를 1,000 단위로 콤마를 표현해 String으로 반환하고 싶을때가 있다.

float a = 10000.123f;

a.ToString("N1"); // 10,000.1

a.ToString("N2"); // 10,000.12

a.ToString("N3"); // 10,000.123

F대신에 N으로 바꾸어 주면 된다.(아마도 Numric 의 약자가 아닐까 싶다.)

이렇게 간단한 포맷으로 사용이 가능하다.

반응형
반응형

좀 바빠지다보니 ㅠㅠ

오랜만에 포스팅을 하게 되네요~


지금까지는 시간의 개념이 빠진채,


사용자가 입력을 하면 결과를 뱉어(출력해)내고,

또 다시 사용자가 입력을 하면 결과를 뱉어내는..

말그대로 정적인 프로그래밍만 했다면,


오늘 타이머 개체를 배우고나면 동적인 프로그래밍이 가능하실 겁니다~


그럼 정/동적인 프로그래밍이 뭐냐~!


음...알기 쉽게 게임을 만든다고 가정하고 설명드릴게요.


사용자가 용사가 되어 괴물을 잡는 게임을 제작한다고 가정해보아요.


그럼 사용자가 컨트롤하는 캐릭터가 있을테고,

좌, 우, 상, 하, 점프...등등의 사용자의 입력을 받으면 캐릭터가 움직이겠죠?

반대로 사용자가 입력이 없을때는 캐릭터는 가만히 있겠죠.

이 부분에 대해서는 전혀 상관이 없는데,


그럼 사용자가 움직임을 입력했을때, 시간의 개념이 없다면 바로 움직이는 결과만 화면만 출력이 될거에요.


그러나 보통 그런게임은 요즘 흔치 않죠. (16이하 bit의 컴퓨터때도 흔하지 않았음.)





그럼 결국 시간의 흐름에 따라 입력된 값대로 캐릭터를 부드럽게 움직이게 하면

좀더 역동적으로, 동적인 게임을 만들 수 있게 되겠죠.


결국 캐릭터가 움직이는 모션은

'시간'이란 개념을 통해서 그림을 하나씩 표현하고,

해당 좌표로 이동해줘야 하겠죠?


예를들어,

자, 그러면 총 3개의 움직임이 추가가 되었죠?

사용자가 키를 입력하면 위의 '타이머'개념이 없는 것 보다는

좀 더 움직이는 것처럼 역동적으로 보여 질 거에요.


저 하나하나의 움직임을 프레임,(Frame) 이라고 불러요

요즘 3D 게임에 보면 Fps 라는 개념이 있는데

이게 바로 Frame per second 라고.

초당 보여지는 프레임의 수를 얘기하는 거에요.


그럼 초당 보여지는 프레임 수가 높을 수록 더 잘게 잘게 쪼개서 움직이는 모습을 보여주게 되는 거니까

더 부드러운 움직임을 보여주겠죠?


결국 '시간'의 개념이 도입되면 다이내믹한 연출이 가능해진다는 말씀.





그럼 또 다른 예를 들어볼게요.


현재 시간을 표시하는 디지털 시계 프로그램을 만들어 볼게요.


시간 개념이 없이 그냥 폼이 로드 되었을때 현재시간을 표시하는 코딩을 하게되면


Private Sub Form_Load()

(현재시간 표시하는 코딩)

End Sub

이렇게 되겠죠? 그럼 

결과가 이렇게 나올거에요.




문제는 폼이 로드된 시점의 시간에서 멈춰 버린다는 것이죠.


그럼 매 초마다 띄우게 할 수는 없을까? 에 대한 궁금증이 생기실 거에요.


역시 이것도 당연히 '시간' 의 개념이 필요한것이죠.



그렇다면,

한번 만들어볼게요!!


이게 타이머 입니다.



타이머 속성을 한번 볼게요.

속성에는 중요하게 봐야 할게

EnabledInterval 이 두개 입니다.


우선 Interval을 설명드리면,

ms(밀리세컨)을 사용해서 타이머가 가지는 시간값을 지정하는 것입니다.

1분 = 60000ms

10초 = 10000ms

1초 = 1000ms

0.1초 = 100ms


이렇게 되겠죠?

그럼 'Interval값을 1000으로 두면

1초마다 timer에 입력된 코드를 실행시킨다.' 라고 알고 계시면 됩니다.


Enabled값은 말그대로 사용가능한지에 대한 여부인데.

False값으로 설정되지면 Timer는 정지 상태가 됩니다.

반대로 True값이 되면 타이머는 설정된 Interval수치를 작동시켜 돌아가게 되는 것이죠.


그럼 인터벌값을 1초로 두고, 매 초마다 현재 시간을 표현하는 레이블을 만들어 볼까요?




아주아주, 간단합니다.


이렇게 하면 아주 간단하죠!

매 초마다 Timer가 작동하게 되고, 그 타이머는 Label1의 caption속성에다가 Now라는 함수.

즉 현재 시간을 나타내는 함수를 대입하라는 것이죠.

실행 한번 해보세요 ㅎㅎ


2016-02-12 오후 1:11:25 와 같이 시간이 표시 될 것입니다.


자, 그럼 Format 형식을 사용해서 더 나은 타이머를 만들어볼게요.



어? 그럼 Format(Now, "hh:mm:ss") 이 부분이 뭐지? 라고 생각하시겠죠?


Format 함수는 간단하게 사용하시려면 Expression 부분과 [Format] 부분만 신경쓰시면 됩니다.

Expression은 표현할 인수를 얘기하는 것이고,

Format은 그 인수를 어떻게 표현할 것인지를 나타내는 것입니다.


알기 쉽게 풀어서 설명 드리면,

Now라는 함수는 2016-02-12 오후 1:11:25 라는 값을 가지고 있겠죠? (당연히 매초마다 바뀜.)


영어 단어로 풀어보자면




2016 

02 

12 

오후 

11 

25 

Year

Month 

Day 

AM/PM 

Hour 

Minute 

Second 


Year-Month-Day AM/PM Hour:Minute:Second 로 되어 있죠?


이걸 이제 Format 함수에 써먹는 방법은, 각 문자의 앞글자를 따서 사용합니다.


가령 현재 연도를 출력하고 싶다면 Year 단어의 앞글자인 Y.


월을 출력하고 싶다면 Month의 M

일을 출력하고 싶다면 Day의 D

...AM/PM은 그대로 AM/PM으로 사용하시면 되고,


H, M, S 이렇게 각각 앞글자를 따게 되죠.


어라? 근데 이상하네요.

Month의 M과 Minute의 M이 겹치네요?


그래서 날짜는 대문자

시간은 소문자로 표현합니다.


예를 들어볼게요.


16/02/12 을 표현하고 싶다. 하면 "YY/MM/DD" 라고 하면 되겠고,

2016년 02월 12일을 표현하고 싶다. 하면 "YYYY년 MM월 DD일" 이라고 표현하면 되겠습니다.


시간도 역시 마찬가지로.

현재시각: 2시 10분입니다.

라고 표현하고 싶다!

"현재시각: h시 m분입니다." 라고하면 되겠죠.


정말 쉽게 풀어 쓴거라. 후에 제대로 설명을 한번 드리도록할게요.

지금은 개념만 이렇게 잡아두시면 문제 없을 겁니다!


자 그럼 심화 문제 나갑니다!


아래와 같이 폼을 꾸며 주시고,


Label과 타이머를 이용해서 계속해서 시계가 출력되도록 설정합니다.

매초마다 시간을 보여주고,


사용자는 두개의 버튼을 누를 수 있습니다.

우선

1. 현재 시간 체크! 를 클릭하면 현재 시간을 저장합니다.

2. 얼마나 지났나? 를 클릭하면 아까 저장했던 시간부터 얼마나 지났는지 출력하는 문제입니다.



해답은 아래에 있지만. 꼭 풀어보고 하셔요!

















오늘은 여기까지 하겠습니다.


이해 안되시는 부분이나 궁금한점 있으시면 댓글 남겨주세요~!! 확인하는대로 바로 답변드릴게요!


반응형
반응형

안녕하세요 무꼬입니다.


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


오늘 처음 배우실 것은


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강에서 뵙겠습니다 ㅎㅎ



반응형
반응형

무꼬입니다.!


나보다 크고, 힘이 센 사람과 싸울 때. 그냥 질 수는 없죠.ㅎㅎ


저도 신장이 작은 편이라, 스파링을 할 때 키큰 사람이 대부분인데요.

첫 번째 영상 보단 2번째 영상의 기술들은 저도 가끔 사용하는 스킬입니다.


영어 지만 알아 들을 수 있어요.


팔꿈치를 이용해서 상대의 타격을 흘려 보내라네요.
말이야 쉽지만 부단한 노력 없인 안되겠죠.


낮은 싱글렉 인가.. 근데 이건 잘 먹힙니다 의외로 많이 쓰이구요.



이번 영상은 상대가 나보다 클 때 타격시 오버핸드로 타격하는 법입니다.

이것도 많이 쓰죠.

오버핸드 관련해서 러시안 훅도 같은 방법으오 타격이 들어가니 확인해보세요.









반응형
반응형

안녕하세요 무꼬입니다~

 

누워 있는 상태에서 상대방에게 데미지를 줄 수 있는 타격 기술 중 '업킥(UP-KICK)'이 있는데요.

이 업킥을 잘 활용해서 K.O 상태 까지 상대방에게 줄 수 있는 기술이에요.

무시하기엔 많은 타격을 받을 수 있고, 그렇다고 업킥을 신경 쓰기엔 파고 들기가 힘들죠.

 

업킥으로 인한 K.O 넉다운 영상입니다!!

화려하진 않지만 강한 기술!!

 

 

 

 

아래는 업킥 강좌 입니다.

업킥에 데미지를 실어 주려면 손의 반동으로 허리를 들어올려 힐(발 뒷꿈치)로 가격 해야 겠죠?

 

 

 

 업킥이 있다면 그걸 봉쇄할 수 있는 기술이 당연히 있습니다.

 

상대방의 힐과 아킬레스를 자신의 앨보로 감싸 잡아주면 빠져 나가지 못하고,

상대방이 코어 힘으로 밀게되면 그 순간에 다리를 잡아줌으로써 업킥을 사전에 방지 할 수 있겠죠.

 

뭐 실전에서는 미친 듯이 발을 허우적 대며 차는 사람들이 있겠지만,

이런건 자신만 체력 빠지는 일이고, 데미지를 줄 수도 없습니다. (키가 미친듯이 크면...모르겠지만..ㅋㅋ) 

 

 

이상 무꼬였습니다 ㅎㅎ

 

반응형
반응형



무꼬입니다.

싱글렉을 락한 채로, 목과 척추를 잠겨있는 다리 방향으로 끌어당겨,

틀어 버리는 고급 스킬 중 하나인 트위스트 기술 강좌에요! 

 

 

 

 

정찬성 선수도 이와 비슷한 상황에서 트위스트 기술을 시전했죠!

약간은 다르지만 정찬성의 트위스트 기술입니다!


 

좀 다르긴 한데, 아픈건 같음..

한번 걸려봤는데 아픔..걍..아픔.. 

 

반응형

+ Recent posts