怎么用C++实现推箱子游戏
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要讲解了"怎么用C++实现推箱子游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C++实现推箱子游戏"吧!一、项目简介用两天闲余时间
千家信息网最后更新 2025年11月10日怎么用C++实现推箱子游戏
这篇文章主要讲解了"怎么用C++实现推箱子游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C++实现推箱子游戏"吧!
一、项目简介
用两天闲余时间回顾了推箱子这款经典的小游戏,目前设置了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#includeusing 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 (游戏类)
Game.h:
#define _GAEM_H__#ifdef _GAEM_H__ #includeusing namespace std;#include #include #pragma warning (disable:4996)#define N 10#define M 10 /***************************建立一个推箱子相关操作的类***********************//*--------------------------Game类编写-----------------------------------*//****************************************************************************/class Game{public: int Move(int map[M][N], char ch); void Drop(int map[M][N],int c); int juide(int map[M][N]);private: int push(int map[M][N], int offsetX,int offsetY); void Postion(int map[M][N]); int posX; int posY;};#endif /*_GAME_H__*/Game.cpp:#include "Game.h" //按键控制人物移动int Game::Move(int map[M][N], char ch){ static int step = 0; int offsetx = 0; int offsety = 0; switch (ch) { //向上移动 case 'w':case 'W': offsetx = -1; offsety = 0; if (push(map, offsetx, offsety) == 1) step++; break; //向下移动 case 's':case 'S': offsetx = 1; offsety = 0; if (push(map, offsetx, offsety) == 1) step++; break; //向左移动 case 'a':case 'A': offsetx = 0; offsety = -1; if (push(map, offsetx, offsety) == 1) step++; break; //向右移动 case 'd':case 'D': offsetx = 0; offsety = 1; if (push(map, offsetx, offsety) == 1) step++; break; default: break; } return step;}//界面打印void Game::Drop(int map[M][N], int c){ cout <<"\t\t"<<"**********************第 "< Main:
#include#include using namespace std;#pragma warning (disable:4996)#define M 10#define N 10 //定义一个10*10地图,1表示墙,0表示空地,2表示人//3表示箱子,4表示成功点//1.人物可以站到成功点中,显示人//2.箱子推入成功点后,可以推出来//3.记录步数,显示在控制台上//4.界面:提示(■代表墙....)/游戏开始界面//5.最终提示全部推入,提示成功//周围都是墙,中间都是空地#include"Map.h"#include"Game.h"int main(){ Map _map; //_map.Init(); int map[M][N]; char filename[] = "map/map_0"; int custom = 2; while (custom <= 5) { char buffer[80]; sprintf(buffer, "%s%d", filename, custom); //连接filename和custom,以字符串保存到buffer中 strcat(buffer, ".txt"); //字符串连接 _map.ReadMapFile(map, N, buffer); Game game; int step = 0; while (game.juide(map)) //游戏胜利,跳出循环 { system("cls"); game.Drop(map, custom); char ch = _getch(); //按键输入 step = game.Move(map, ch); system("cls"); } custom++; //关卡+1 cout << "你赢了!" << endl; cout << "共走:" << step << "步" << endl;; system("pause"); } return 0;} 感谢各位的阅读,以上就是"怎么用C++实现推箱子游戏"的内容了,经过本文的学习后,相信大家对怎么用C++实现推箱子游戏这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
终点
一格
空地
箱子
地图
人物
移动
推箱子
C++
成功
坐标
界面
j++
学习
提示
胜利
关卡
内容
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
长宁区品质软件开发平台资质
拖动排序 数据库表设计
encod数据库怎么使用
上海徐汇区服务器回收
数据库事务日志
木马僵尸网络安全威胁
文明重启服务器怎么给管理
总体国家安全观有网络安全吗
POS网络技术
南宫软件开发公司有哪些
国内比较流行的服务器
数据库类的书籍有哪些
揭阳软件开发定制
应用软件开发公司报表
3g网络技术体制有哪些
捍卫战记游戏软件开发
手游lol更换服务器
小学生网络安全百度文库
官方的软件开发流程
lol新年服务器
数据库如何检查email
软件开发校园招聘简历
网络安全青年有责
大学计算机数据库基础实验报告
蚌埠软件开发培训哪家专业
九色优选出现服务器忙什么原因
数据库概论里什么是字符
北京常规软件开发制造价格
思科网络安全管理规范
查服务器带宽