태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'삽질'에 해당되는 글 4건

  1. 2008/04/20 [자작] Electrostar (4)
  2. 2008/04/08 Ruby로 짜본 간단한 369게임 (2)
  3. 2008/03/10 QtRuby 1.4.9 를 Mac OSX 10.5.1에 깔기 (2)
  4. 2007/11/04 원서를 내고.. (3)

[자작] Electrostar

Composing 2008/04/20 03:44




장르 : Electronic

정신없는 일렉트로닉 곡입니다 -.-;
크리에이티브 커먼즈 라이선스
Creative Commons License

'Composing' 카테고리의 다른 글

[자작] Antarctica  (3) 2008/04/26
[카피] 송영선 "너 뭐야 도대체" 카피 -_-;  (4) 2008/04/22
[자작] Electrostar  (4) 2008/04/20
[연습] 무서운 분위기  (2) 2008/04/19
[자작] Dawn  (0) 2008/03/29
[자작] Around the planet  (0) 2008/03/28
Posted by leonid

심심해서 369게임을 작성해봤습니다.

369게임에서 제일 중요한 요소는 아무래도

"주어진 숫자에 대해 몇 회 박수를 쳐야 하는지 계산하기" 인 것 같습니다. ㅎㅎ

숫자 안에 포함된 3, 6 또는 9의 개수만큼 박수를 치거나, 만약 3,6,9가 없을 경우 해당 숫자를 리턴하면 됩니다.

예를 들어, 307은 박수 한번, 9936은 박수 네번, 400은 "400"이라고 말하면 됩니다.

이걸 구현할 알고리즘을 연구하다가 다음과 같은 코드를 생각해봤습니다.



여기서 n이 주어진 숫자입니다. 숫자를 문자열로 바꾼 후, tr  명령을 사용해서 '3', '6', 그리고 '9'를 제외한 다른 문자를 지운 후, 남은 문자열의 길이를 구하는 겁니다. 이 길이가 바로 필요한 박수 횟수입니다.

그 다음, "clap "이라는 문자열을 방금 구해낸 박수 횟수만큼 복사합니다. 1이면 "clap ", 2이면 "clap clap ", 3이면 "clap clap clap ", 0이면 "" 이 되겠죠.

그 다음 max 함수를 사용하여 마지막으로 n을 문자열로 바꾼 스트링(num_s)과 비교하여 더 우선순위가 높은 문자열을 리턴하도록 합니다.
만약 박수 횟수가 0이면 왼쪽의 스트링은 ""이 되고, 빈 문자열은 무엇이든 들어있는 문자열보다 무조건 우선순위가 낮습니다. 따라서 우측의 숫자가 리턴됩니다.
만약 박수 횟수가 1 이상이면, 왼쪽의 스트링은 "clap clap ..."이 되는데, 문자열 끼리의 비교 과정에서 왼쪽 스트링의 첫번째 문자는 무조건 'c'가 되고, 오른쪽 스트링의 첫번째 문자는 무조건 숫자입니다. 'c'가 '1'~'9'보다 더 아스키코드 값이 크기 때문에 max 함수를 통하여 왼쪽의 스트링이 리턴됩니다.

루비 언어를 쓰고 있기 때문에 이런 복잡해보이는 알고리즘을 간단한 코드로 구현할 수 있었습니다.
만약 C나 C++을 쓰고 있었더라면 코드가 굉장히 길어지겠죠. ㅎㅎ

이외에도 사용자의 입력에 대한 예외처리, 채팅방에서 369게임을 하는 것처럼 보이기 위한 꾸미기, 컴퓨터와 같이 하기, 어설픈 OOP(-_-;) 등 여러 자질구레한 사항들을 추가하다보니 코드가 좀 길어졌습니다. 간단한 게임도 생각보다 만만치 않네요. -.-;


소스코드는 아래와 같이 생겼습니다. 좀 눈아프게 생기긴 했지만 그래도 저 나름대로 예쁜 코드, 버그 없는 코드를 만들어보려고 노력해봤습니다. -.-;




아래는 소스코드 파일이고, 혹시 루비 인터프리터가 설치되어있지 않은 분들을 위해서 exe버전(rubyscript2exe 사용)도 같이 첨부합니다. ㅎㅎ



크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by leonid

최근 이틀 동안 QtRuby를 설치하기 위해 꽤 애를 먹었습니다. 그래서 혹시 저와 같은 일을 겪으실 것 같은 분들을 위해 이렇게 글을 씁니다.

Qt는 Trolltech사(Nokia에 인수됐죠)에서 만든 GUI 라이브러리입니다. 말하자면 MFC 같은거죠. 여러모로 기타 GUI 라이브러리들에 비하여 장점이 많아서 꽤 유명합니다. KDE 리눅스, 구글 어스 등 많은 유명한 애플리케이션 들에 사용되고 있죠.

원래 Qt 라이브러리는 C++ 언어를 쓰게 되어있지만, 여러가지 다른 언어들의 바인딩도 나와있습니다. 저는 C++보다는 Ruby언어를 좋아하므로 QtRuby를 선택하게 되었습니다.

QtRuby의 최신 버전인 QtRuby 1.4.9를 설치하기 위해서는 다음과 같은 파일들이 필요합니다.
  1. qt4-qtruby-1.4.9.tgz : 이건 당연히 필요
  2. qt-mac-opensource-src-4.3.3.tar.gz : Qt 라이브러리가 있어야 합니다. 그런데 최근에 나온 4.3.4나 4.4.0beta1 로는 QtRuby 1.4.9가 빌드되지 않더군요. Qt를 컴파일 할 때 -no-framework 플래그도 넣어보고 여러가지 조합을 시도해봤지만 실패했습니다. QtRuby 포럼에서 보니 버그 비슷한거라더군요. -_-; Qt 4.3.3 버전으로는 플래그를 따로 지정을 하지 않아도 빌드가 잘 됐습니다. 사실 이걸 알아내느라 고생을 한겁니다. Qt가 빌드 한번 하는데 시간이 오래걸리니까 한번 시행착오 할때마다 시간낭비가 심하죠..
  3. cmake-2.4.8-Darwin-universal.dmg : cross-platform make 라고 하는 프로그램인데 윈도우, 맥, 리눅스에서 모두 동작하는 소프트웨어인 것 같습니다. QtRuby 1.4.9를 컴파일 하려면 이게 있어야 한다네요.
이 파일들을 ~/Desktop 에 받았다고 가정하고 계속 진행합니다.

먼저, cmake를 설치합니다. dmg파일을 열고 패키지를 열면 알아서 다 해줍니다.

다음으로 Qt 4.3.3을 설치해야 하는데, C++ 컴파일러가 있어야합니다. 뭐 다들 있으시겠지만, 전 설치 당시에 그게 없어서 -_-; 맥에서 제공해주는 Xcode 유틸리티를 설치했습니다.
터미널을 켜고 다음 명령들을 순서대로 실행합니다.



빌드 되는데 오랜 시간이 걸릴 것이므로 잠시 다른일을 하고 계시다가 Qt 설치가 끝나면 다음 명령을 해줍니다.



그리고 위 두줄을 ~/.profile 파일에 넣어줍니다.

echo $PATH 를 해서 나오는 주소 중에 /usr/local/Trolltech/Qt-4.3.3/bin 이 있는지 체크해봅시다. 없으면 좀 있다가 QtRuby를 설치 할 때 Qt가 있는 폴더를 찾을 수 없어서 설치 할 수가 없습니다.

이제 QtRuby를 설치합니다.

이제 irb를 열고 QtRuby가 잘 설치되었는지 확인합니다.


true가 리턴되면 잘 설치된겁니다.

QtRuby의 프로젝트 홈페이지 -> http://rubyforge.org/projects/korundum/

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by leonid

요즘 심심해져있는 상태.. -_-ㅋ

그래도 곧 심심할 틈 없을만큼 바빠지겠지 ㅠㅠ

아아.. 레귤러 준비 할거 생각하면 눈앞이 깜깜해진다

얼리때 삽질한걸 곱하기 10 해야 하다니-_-

그리고 요새 이것저것 귀찮아지고 있는중..

블로그에 글 올리기도 귀찮고.. (근 한달넘도록 안쓰다니 -_-)

저 위에 이미지도 올리기 귀찮고-_-;

ㅁㄴㅇㄹㅁㄴㅇㄹ

크리에이티브 커먼즈 라이선스
Creative Commons License

'Journal/BlahBlah' 카테고리의 다른 글

으헝ㅎ얼아러ㅡㅏㅣㄴㅁㄷ  (6) 2007/12/11
가위  (1) 2007/12/10
그림판으로 그림좀 그려봄  (10) 2007/12/07
한가해지면  (4) 2007/12/04
전화가 서툴러  (4) 2007/12/01
원서를 내고..  (3) 2007/11/04
Posted by leonid