티스토리 뷰
마리오 게임을 구현해 보았다. 유튜브를 참고하였고, 내가 수정한 부분들도 있다. 유튜브 링크는:
https://www.youtube.com/watch?v=nD5OuMdS9FU 이다.
우선 FileSream.h는:
#pragma once
#include "value.h"
class CFileStream {
private:
FILE* m_pFile;
int m_iFileSize;
bool m_bOpen;
public:
CFileStream();
~CFileStream();
bool Open(char* pFileName, char* pNode);
bool Close();
void Read(void* pData, int iSize);
void Write(void* pData, int iSize);
void ReadLine(void* pData, int& iSize);
void WriteLine(void* pData, int iSize);
};
와 같다. 그리고 FileStream.cpp는 다음과 같다:
#include "FileStream.h"
CFileStream::CFileStream():m_pFile(NULL), m_iFileSize(0), m_bOpen(false){
}
CFileStream::~CFileStream() {
Close();
}
bool CFileStream::Open(char* pFileName, char* pMode) {
if (m_bOpen)
return false;
fopen_s(&m_pFile, pFileName, pMode);
if (!m_pFile)
return false;
fseek(m_pFile, 0, SEEK_END);
m_iFileSize = ftell(m_pFile);
fseek(m_pFile, 0, SEEK_SET);
m_bOpen = true;
return true;
}
bool CFileStream::Close() {
if (!m_bOpen)
return false;
m_bOpen = false;
fclose(m_pFile);
m_pFile = NULL;
m_iFileSize = 0;
return true;
}
void CFileStream::Read(void* pData, int iSize) {
if (!m_bOpen)
return;
fread(pData, iSize, 1, m_pFile);
}
void CFileStream::Write(void* pData, int iSize) {
if (!m_bOpen)
return;
fwrite(pData, iSize, 1, m_pFile);
}
void CFileStream::ReadLine(void* pData, int& iSize){
if (!m_bOpen)
return;
char cData;
char* pChangeData = (char*)pData;
iSize = 0;
while (feof(m_pFile) == 0) {
fread(&cData, 1, 1, m_pFile);
if (cData == '\n')
break;
pChangeData[iSize] = cData;
++iSize;
}
}
void CFileStream::WriteLine(void* pData, int iSize) {
if (!m_bOpen)
return;
char* pBuffer = new char[iSize + 1];
*(pBuffer + iSize) = '\n';
fwrite(pBuffer, iSize + 1, 1, m_pFile);
delete[] pBuffer;
}
'프로젝트 기타 > 마리오게임 코드' 카테고리의 다른 글
C++ 마리오게임6 (Stage.h, Stage.cpp) (0) | 2021.08.30 |
---|---|
C++ 마리오게임5 (Player.h, Player.cpp) (0) | 2021.08.30 |
C++ 마리오게임4 (ObjectManager.h, ObjectManager.cpp) (0) | 2021.08.30 |
C++ 마리오게임3 (MapManager.h, MapManager.cpp) (0) | 2021.08.30 |
C++ 마리오게임1 (Core.h, Core.cpp) (0) | 2021.08.30 |