一,项目简介
用两天闲余时间回顾了推箱子这款经典的小游戏,目前设置了5关,只能实现基本的人物移动。判断胜利条件,其他功能还未实现(例:撤回到上一步,自由选择关卡等),也顺便复习了C++的相关知识。
二, 代码区
Class Map(地图类)
Map.h:
#pragma once
#define N 10
#define M 10
//地图类
class Map
{
public:
Map();
~Map();
void Init();
void ReadMapFile(int map[M][N], int size,const char* filename );
void WriteMapFile(int map[M][N], int size, const char* filename);
private:
};
Map.cpp:
#include "Map.h"
#include<iostream>
#include<fstream>
using namespace std;
Map::Map()
{
}
//地图初始化方法
void Map::Init()
{
int Map[10][10] =
{
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 4, 3, 0, 1, 1, 1, 1 },
{ 1, 0, 4, 3, 4, 3, 0, 0, 1, 1 },
{ 1, 7, 3, 4, 3, 4, 2, 0, 1, 1 },
{ 1, 0, 4, 3, 4, 3, 0, 1, 1, 1 },
{ 1, 0, 0, 4, 3, 0, 0, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
};
WriteMapFile(Map, 10, "map/map_05.txt");
}
//读取地图文件
void Map::ReadMapFile(int map[M][N], int size, const char* filename)
{
FILE* pfile = nullptr;
fopen_s(&pfile, filename, "rb");
fread(map, 10 * size * 4, 1, pfile);
fclose(pfile);
}
//写入地图文件
void Map::WriteMapFile(int map[M][N], int size, const char* filename)
{
FILE* pfile = nullptr;
fopen_s(&pfile, filename, "wb");
fwrite(map, 10 * size * 4, 1, pfile);
fclose(pfile);
}
Map::~Map()
{
}
Class Game (游戏类)