티스토리 뷰

마리오 게임을 구현해 보았다. 유튜브를 참고하였고, 내가 수정한 부분들도 있다. 유튜브 링크는:

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;
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함