티스토리 툴바



2009/01/26 12:00

빠른Data Load기법

 

* 빠른 데이터 로드 기법

     빠른지 모르겟지만.. 파일에 저장과 로드할때의 방법인거 같음..

 

- 요런 데이타가 있다.

  1.  class GameData
    {
    public:
     bool Save(char *fileName);
     bool Load(char *fileName);
     bool BufferedLoad(char *fileName);
     // 게임 데이터에 접근하기 위한 멤버 함수들이 추가되어야 한다.
  2.  
  3. private:
     // 한 시점에서 하나의 파일만 연다. - 이멤버는 저장되지 않는다.
  4.  static FILE *fileDescriptor;

  5.  // 게임 데이터. int data[1000]; // 실제로는 이보다 더 복잡하겠지..
  6. };
  7.  
  8.  

- 데이터의 저장.

  1.  
    bool GameData::Save(char *fileName)
    {
     fileDescriptor = fopen(fileName, "wb");
     if(fileDescriptor)
     {
      fwrite(this, sizeof(GameData), 1, fileDescriptor);
      fclose(fileDescriptor);
      //파일 쓰기의 성공을 알린다.
  2.   return TRUE;
     }
     else
     {
      // 파일 쓰기의 실패을 알린다.
  3.   return FALSE;
     }
    }

 

- 자 이제.. 로드

  1. bool GameData::Load(char *fileName)
    {
     // 읽기 모드로 열고..
     fileDescriptor = fopen(fileName, "rb");
     if(fileDescriptor)
     {
      fread(this, sizeof(GameData), 1, fileDescriptor);
      fclose(fileDescriptor);
      // 성공
  2.   return TRUE;
     }
     else
     {
      // 실패  return FALSE;
     }
    }

 

* 관건은 클래스를 통째로 파일에 저장한다는거.. 킁..( 이렇게도 하는군아.. ㅎㅎ)

 

* 일부 게임기 하드웨어의 경우에 주의할점이 있긴하지만.. 그건.. 책을 보세효.. ㅋ

 

이상..

[출처] 빠른 데이터 로드 기법|작성자

 

이 글은 스프링노트에서 작성되었습니다.

Trackback 0 Comment 0