나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

리듬게임

  • 리듬게임을 만들어보자 9. 그림 글자를 그려보자.

    2010.01.05 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 8. 로직과 디자인을 분리하자2

    2009.12.18 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 7. 로직과 디자인을 분리하자1

    2009.12.06 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 6. 직선, 사각형 그리기

    2009.11.29 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 5. 경우별로 나눠서 관리하기

    2009.11.26 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 4. 행렬변환을 통한 회전, 확대/축소

    2009.11.24 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 3. 다양한 그리기 효과

    2009.11.22 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 2. 파일 메모리 관리, 스프라이트 읽기와 그리기

    2009.11.20 by ∫2tdt=t²+c

리듬게임을 만들어보자 9. 그림 글자를 그려보자.

글자 출력은 D3D에서 제공하는 ID3DXFont 인터페이스를 이용해서 쉽게 할 수 있다. 그런데 그렇게 해서 그린 글자는 별로 멋지지가 않다. 그렇다면 아예 스프라이트로 글자 모양을 준비해 놓고선, 이것을 이용해서 문자열을 출력한다면 어떨까? 이렇게 0~9까지 10개의 문자를 준비해놓으면 정말 멋지게 숫자를 출력할 수 있다. 자, 스프라이트를 이용해서 문자열을 출력하는 클래스 GFont를 만들어보자. struct CharDat { UINT sprindex; //문자가 담긴 스프라이트 번호 UINT width; //문자의 가로 길이 UINT height; //문자의 세로 길이 }; class GFont { protected: GSprites m_sprs; CharDat m_cd[96]; public: e..

프로그래밍/스페샬 2010. 1. 5. 22:31

리듬게임을 만들어보자 8. 로직과 디자인을 분리하자2

저번에 파일로부터 텍스쳐와 스프라이트를 불러들이는 부분을 짜 보았다. 이번에는 로직과 디자인을 확실히 분리해보자. 그러기 위해서 그리기를 수행하는 최소의 단위를 설정해보자. 그 최소의 단위를 '그리기 객체'라고 부르겠다. 프로그래머는 그리기 객체를 여럿 화면에 배치해 놓으면, 그리기 객체는 알아서 자기가 화면에 그림을 그려주는 식이다. 물론 그리기 객체가 어떤 그림을 그릴지는 디자인하는 사람이 잘 정해줄거다. 그리기 객체의 행동을 나타내는 그리기 코드도 정의해보자. 이런 명령어들이 그리기에 주로 필요할 것 같아서 정해보았다. setdata(byte index, long x, long y) : index번호의 데이터를 (x, y)로 설정한다. draw(word index, short x, short y, ..

프로그래밍/스페샬 2009. 12. 18. 23:09

리듬게임을 만들어보자 7. 로직과 디자인을 분리하자1

이쯤되면 어지간한 그래픽 출력은 다 끝났다. 이제 본격적으로 게임로직을 짜는 부분에 들어가자.... 가기전에 먼저 로직과 디자인을 분리해야 한다. 디자인은 프로그래머의 몫이 아니다. 디자인은 디자인하는 사람이 열심히 하고, 프로그램에서는 외부에서 디자인된 파일을 읽어와서 적절하게 화면에 그려주도록 하면 된다. 먼저 텍스쳐와 스프라이트 데이터들을 외부에서 읽어오도록 만들어보자. 텍스쳐를 읽어오기 위해서는 텍스쳐의 주소들을 모아놓은 파일이 필요하다. 그렇게 하기 위해서 문자열 배열을 관리하는 클래스 GStrings를 만들어보자. class GStrings { protected: vector m_vstr; public: const wstring& operator[](size_t i) const; //const..

프로그래밍/스페샬 2009. 12. 6. 14:27

리듬게임을 만들어보자 6. 직선, 사각형 그리기

그래픽 처리를 제대로 하자면, 미리 준비되어있는 그림파일을 화면을 그리는 것 말고도, 직선을 그리는 것이나, 사각형을 그리는 것 등등이 필요하다. 이번에는 직선과 사각형 그리는 것을 구현해보자. D3D에서는 직선을 쉽게 그릴 수 있도록 ID3DXLine이라는 인터페이스를 제공한다. ID3DXLine은 D3DXCreateLine함수를 이용하여 간단히 만들수 있다. LPD3DXLINE pline; D3DXCreateLine(pd3dd, &pline); 참, 쉽죠? ID3DXLine으로 직선을 그리는 순서는 다음과 같다. 1. ID3DXLine::Begin함수로 그리기를 준비한다. 2. ID3DXLine::Draw함수로 직선을 그리고 싶은 만큼 그린다. 3. ID3DXLine::End함수로 그리기를 마친다. ..

프로그래밍/스페샬 2009. 11. 29. 21:11

리듬게임을 만들어보자 5. 경우별로 나눠서 관리하기

게임을 켜면 곧바로 게임이 시작되는건 아니다. 세부 설정을 조작하는 부분도 있고, 로딩하는 부분도 있고, 실제로 게임을 하는 부분도 있다. 이런 경우별로 따로따로 코딩을 해줘야 한다. 가장 손쉬운 방법은 if-else문을 이용하는 것이다. void GGame::OnProc() { if(state==Select_Game) { ... } else if(state==Load_Game) { ... } else if(state==Play_Game) { ... } ... } 이 짓을 OnProc(처리하는 부분)말고도 OnDraw(그리는 부분), 키입력 받는 부분 등등에서 다 해줘야 한다. 함수가 지저분하게 계속 부풀어오르다가 터져버릴지도 모른다. (ㅡ,,ㅡ) 게다가 각종 상태별로 필요한 변수들도 한 클래스에 모조리..

프로그래밍/스페샬 2009. 11. 26. 17:39

리듬게임을 만들어보자 4. 행렬변환을 통한 회전, 확대/축소

이번에는 스프라이트를 확대/축소하거나 회전해서 출력할 수 있게 해보자. 이런 까다로운 일들을 하기 위해선 '행렬'이라는 걸 알아야한다. 하지만 여기서 행렬에 대해서 자세히 설명할 시간은 없고, 3D프로그래밍을 할때는 행렬을 통해서 여러가지 변환을 한다는 사실만 알아두도록 하자. D3D에서는 행렬을 위한 자료형으로 D3DXMATRIX타입을 제공한다. 그리고 편리한 행렬 계산을 위해 D3DXMatrix~~~ 시리즈 함수를 제공한다. D3DXMATRIX 타입에 각종 연산자(대입, 곱하기, 더하기, 빼기 등등)가 정의되어 있으므로 연산도 편리하게 할 수 있다. 점 (x, y, z, 1)에다가 4차정사각행렬을 곱함으로써 행렬변환은 이루어진다. 점에다가 특정한 행렬을 곱하면 여러가지 효과를 줄 수 있다. ID3DX..

프로그래밍/스페샬 2009. 11. 24. 22:04

리듬게임을 만들어보자 3. 다양한 그리기 효과

멋진 그래픽을 만드려고 노력하다 보면 알파블렌딩만으로는 원하는 걸 만들지 못할 때가 있다. 그래서 다양한 그래픽 효과를 여기서 추가해보고자 한다. D3D에서는 Render State라고 해서 렌더링 시에 여러가지 설정을 줄수 있게 해놓았다. IDirect3DDevice9::SetRenderState로 RenderState를 설정할 수 있고 IDirect3DDevice9::GetRenderState로 RenderState값을 가져올 수 있다. 다음과 같이 쓰면 된다. SetRenderState( 상태 종류, 설정할 값 ); 예를 들자면 m_pd3dd->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_ALWAYS); 이런 식으로 하면 된다. 여기서는 특히 중요한 몇 개의 설정들을 살펴보..

프로그래밍/스페샬 2009. 11. 22. 22:41

리듬게임을 만들어보자 2. 파일 메모리 관리, 스프라이트 읽기와 그리기

화면에 그림을 그리기 위해서는 먼저 파일에서 비트맵을 읽어와야한다. 아무리 3D라고 할지라도 그 기본은 변하지 않는다. 3D프로그래밍에서는 비트맵 대신에 텍스쳐라는 말을 자주 쓴다. 그러니 앞으로 텍스쳐 얘기가 계속 나오면 그냥 비트맵을 말하는건가보다 하고 간단히 넘어가자. Direct3D에서는 텍스쳐를 관리하는 인터페이스로 IDirect3DTexutre9를 제공한다. 근데 문제가 하나 있다. 비디오카드에서 받을 수 있는 텍스쳐는 가로 세로길이가 (2의 거듭제곱)픽셀이어야 한다. 요즘에는 가로 세로 길이에 제한이 없는 비디오카드도 있지만, 모든 카드에서 그런것이 아니다. 그러므로 우리가 사용할 텍스쳐는 어쩔 수 없이, 가로 세로 길이가 (2의 거듭제곱)픽셀이어야 한다. 그러나 화면에 출력할 그림들의 크기..

프로그래밍/스페샬 2009. 11. 20. 16:50

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

토픽 모델링 우리역사바로알기대회 영어구조론 c++ php 정보조직론 포니게임 텍스트 마이닝 kiwi 한국고대경제와사회 Direct3D 리듬게임 문헌정보통계 pg어 자연언어처리 악보 BigFloat python 라틴어 NLP

방문자

오늘
어제
전체

페이징

이전
1 2
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바