怎么用C++实现推箱子游戏
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"怎么用C++实现推箱子游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用C++实现推箱子游戏"吧!一、项目简介用两天闲余时间
千家信息网最后更新 2025年01月19日怎么用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#include 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 (游戏类)
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安全错误
数据库的锁怎样保障安全
软件开发测试岗笔试
计算机网络技术教什么
网络技术基础代谢标准
江苏爱上门网络技术有限公司
网警开展网络安全知识进校园
超级云呼机服务器网址
游戏软件开发工资高不
门头沟区网络技术服务报价
网络安全组件都有哪些
厦门雷霆网络技术有限公司
服务器设置静态路由
软件开发人工费现在多少一天
余烬风暴连接服务器失败
基岩版如何增加服务器地址
智慧社区网络技术理论
数据库建表type类型
如何选择好的数据库漏洞扫描
gp数据库很卡怎么办
学霸元宝妈网络安全视频
信息技术的多媒体和网络技术
光明大陆服务器名称
支付宝网络技术开户网点
网络安全从我做起班会发完稿
软件开发人员不主动加班
深圳佑辰网络技术有
上海互联网教育科技软件
手机锁屏无法连接到服务器
网络技术服务合同保密条款
数据库取最后一位
永兴电脑软件开发在哪学