//COORD

//在二维数组里,1代表墙,0代表路

#define WALL 1

#define ROAD 0

class MazeMap

{

public:

MazeMap(char wall='X');

~MazeMap();

void setMazeMap(int *mazemap, int row, int col);

void pintMazeMap();

int** getMap(); //返回地图二维数组指针

const char m_cRoad; //常数据成员:路

void setExitPosition(int x,int y); //设置迷宫出口

COORD m_COORDExitPostion; //迷宫的出口

private:

const char m_cWall; //常数据成员:墙

int** m_pMap; //指向迷宫地图二维数组的二级指针

int m_iMapRow; //二维数组的行数

int m_iMapCol; //二维数组的列数

};

#endif

#include "MazeMap.h"

MazeMap::MazeMap(char wall):m_cWall(wall),m_cRoad(' ')

{

m_pMap=NULL;

}

MazeMap::~MazeMap()

{

if(m_pMap)

{

for(int i=0; i < m_iMapRow; i++)

{

delete m_pMap[i];

m_pMap[i]=NULL;

}

delete m_pMap;

}

}

void MazeMap::setMazeMap(int *mazemap, int row, int col)

{

m_iMapRow=row;

m_iMapCol=col;

//为存储迷宫地图的二维数组动态分配内存空间

m_pMap=new int*[m_iMapRow]; //分配m_iMapRow个存储int类型指针的内存空间

for(int i=0; i < m_iMapRow; i++)

m_pMap[i]=new int[m_iMapCol]; //分配m_iMapCol个存储int类型的内存空间

//将二维数组迷宫地图的数据拷贝给二级指针

for(int i=0; i < m_iMapRow; i++)

{

for(int j=0; j < m_iMapCol; j++)

{

m_pMap[i][j]=*mazemap;

mazemap++;

}

}

}

void MazeMap::pintMazeMap()

{

system("cls");

for(int i=0; i < m_iMapRow; i++)

{

for(int j=0; j < m_iMapCol; j++)

{

if(m_pMap[i][j]) //数组元素为1,则打印代表墙的字符

std::cout << m_cWall;

else //否则,打印代表路的字符

std::cout << m_cRoad;

}

std::cout << std::endl;

}

}

int** MazeMap::getMap()

{

return m_pMap;

}

void MazeMap::setExitPosition(int x

MazeMan.h

#ifndef MAZEMAN_H

#define MAZEMAN_H

#include #include "MazeMap.h"

enum direction{U,D,L,R};

class MazeMan

{

public:

MazeMan(char man='T',char manface=R);

void setPosition(int x, int y); //设置游戏角色位置

void setMap(MazeMap *map); //设置地图对象

bool walkUp(); //向上走

bool walkDown(); //向下走

bool walkLeft(); //向左走

bool walkRight(); //向右走

void moveForward(direction direct); //根据传入的方向让游戏角色前进一步

void start(); //游戏开始函数

private:

char m_cMan; //代表游戏角色的字符

char m_cManFace; //游戏角色的朝向

int m_iSteps; //记录游戏角色已经走的步数

COORD m_COORDManCurrentPosition; //游戏角色的当前位置

MazeMap *m_pMap; //地图对象

};

#endif

MazeMan.cpp

#include "MazeMan.h"

MazeMan::MazeMan(char man,char manface)

{

m_cMan=man;

m_cManFace=manface;

m_iSteps=0;

}

void MazeMan::setMap(MazeMap *map)

{

m_pMap=map;

}

void MazeMan::setPosition(int x, int y)

{

unsigned long numWritten;

//获得命令行窗口的窗口句柄

HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);

m_COORDManCurrentPosition.X=x;

m_COORDManCurrentPosition.Y=y;

//在指定坐标位置填充指定的字符,这里我们在游戏角色的当前位置填充代表游戏角色的字符,使游戏角色采出现

FillConsoleOutputCharacter(handle,m_cMan,1,m_COORDManCurrentPosition,&numWritten);

//参数说明:控制台屏幕缓冲区句柄,要向控制台缓冲区写入的字符;应写入的字符单元数;

//一个COORD结构,它指定字符的字符是要写的第一个单元格的坐标;

//指向接收的实际写入控制台屏幕缓冲区的字符数的变量的指针。

}

void MazeMan::moveForward(direction direct)

{

unsigned long numWritten;

//获取命令行窗口的窗口句柄

HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);

//在指定坐标位置填充指定的字符,这里我们在游戏角色的当前位置填充空格,使游戏角色消失

FillConsoleOutputCharacter(handle,m_pMap->m_cRoad,1,m_COORDManCurrentPosition,&numWritten);

switch(direct)

{

case U:

m_COORDManCurrentPosition.Y -=1;

break;

case D:

m_COORDManCurrentPosition.Y +=1;

break;

case L:

m_COORDManCurrentPosition.X -=1;

break;

case R:

m_COORDManCurrentPosition.X +=1;

break;

default:

break;

}

//游戏角色坐标更新,在新的坐标

FillConsoleOutputCharacter(handle,m_cMan,1,m_COORDManCurrentPosition,&numWritten);

//移动完成后跟新游戏角色的朝向

m_cManFace=direct;

}

/************************************************

*函数名称:walkUp()

*函数功能:向上走一步,若成

Main.cpp

#include "MazeMap.h"

#include "MazeMan.h"

#define MapRow 11 //迷宫地图的行数

#define MapCol 11 //迷宫地图的列数

int main()

{

//定义并初始化存储地图数据的二维数组

int map[MapRow][MapCol]={

{WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL},

{WALL, ROAD, ROAD, ROAD, WALL, ROAD, ROAD, ROAD, ROAD, ROAD, ROAD},

{WALL, ROAD, WALL, WALL, WALL, ROAD, WALL, WALL, WALL, ROAD, WALL},

{WALL, ROAD, ROAD, ROAD, WALL, ROAD, ROAD, ROAD, WALL, ROAD, WALL},

{WALL, ROAD, WALL, ROAD, WALL, ROAD, WALL, ROAD, WALL, WALL, WALL},

{WALL, ROAD, WALL, ROAD, ROAD, ROAD, WALL, ROAD, WALL, ROAD, WALL},

{WALL, ROAD, WALL, WALL, WALL, ROAD, WALL, WALL, WALL, ROAD, WALL},

{WALL, ROAD, WALL, ROAD, WALL, ROAD, ROAD, ROAD, WALL, ROAD, WALL},

{WALL, WALL, WALL, ROAD, WALL, WALL, WALL, ROAD, WALL, ROAD, WALL},

{ROAD, ROAD, ROAD, ROAD, ROAD, ROAD, ROAD, ROAD, ROAD, ROAD, WALL},

{WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL}

};

//从堆中实例化地图对象

MazeMap *mm=new MazeMap();

mm->setMazeMap(&map[0][0],MapRow,MapCol);

mm->setExitPosition(10,1);

mm->pintMazeMap();

//从堆中实例化游戏角色对象

MazeMan *man=new MazeMan();

//设置角色起始位置

man->setPosition(0,9);

//设置游戏要走的地图

man->setMap(mm);

//用new的方式从堆中实例化的对象,使用完毕之后需要手动释放内存

man->start();

delete mm;

mm=NULL;

delete man;

man=NULL;

std::cout << "闯关成功!" << std::endl;

system("pause");

}

C/C++

C/C++

迷宫android游戏代码,C++打造迷宫游戏,直接上代码相关推荐

  1. 利用字符数组c语言编写迷宫探路游戏,C语言打造——迷宫游戏

    直接干脆点吧,这个是迷宫游戏,先做出来迷宫界面,然后的话,记住从起点到出口的路线,从黑暗中走出去,用灯光,直接去摸索,走出去,每一次运行的界面都是随机的,所以说难度肯定也是有的,代码的话也比较多,所以 ...

  2. Android素描算法及实现手指在图片上左右滑动调节图片透明度,最终实现类似调节素描浓度的效果

    一.前期基础知识储备 UI掌握PS这一逆天的软件,可以实现将图片转化为素描或者水彩的效果,以素描为例: 在Photoshop中打开一张人物照片,按下快捷键"Ctrl+Shift+U" ...

  3. java代码弹弹球_java_Java实力弹弹球实现代码,先看看效果图:直接上代码 - phpStudy...

    Java实力弹弹球实现代码 先看看效果图: 直接上代码了. 微调按钮加画布画几个圆,再实现监听... package cn.hncu.threadDemo.thread2; import java.a ...

  4. 破解前端面试系列(3):如何搞定纸上代码环节?

    很多重视技术的互联网公司在工程师招聘的技术面环节都会要求候选人在纸上写代码(后文用"纸上代码"代称),面试官想通过这种方式考察哪些点?候选人该注意哪些点?本文基于美团早几年常用的一 ...

  5. python迷宫小游戏代码_pygame简易迷宫游戏_mask应用示例程序

    用pygame制作的迷宫小游戏.像这类碰撞检测用mask最好.下面是部分代码预览: """ 简易迷宫游戏.本程序演示一个非常简单的迷宫游戏原理. 采用mask进行碰撞检测 ...

  6. python用一行代码画个迷宫_用 Python 制作一个迷宫游戏

    相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...

  7. 【Python妙用】用200行Python代码制作一个迷宫小游戏

    相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...

  8. Unity Android 2021:用C#打造3D ZigZag赛车游戏

    Unity Android 2021 : Build 3D ZigZag Racing Game with C# MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch ...

  9. fla 走迷宫游戏 源码_迷宫新玩法,果断一试

    迷宫, 真的是谜一样的存在, 大到几十岁的成年人, 小到三岁小儿, 都对其没有抵抗力. 而迷宫君也是真给力, 除了能给人带来愉悦感与成就感, 还能同时锻炼专注力.空间感.思维力.视觉追踪等, 是儿童感 ...

最新文章

  1. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jumpamp;Crouch
  2. Android开发如何进阶?
  3. opencv 使用cvload加载xml出现错误原因解析及方法
  4. Python数据分析入门(四)
  5. genewise运行过程中遇到的错误及其解决方法
  6. 乐视 logo 换新:显示“老板造车美利坚”;雷军给米粉起名小粽子;谷歌浏览器不再隐藏完整 URL|极客头条...
  7. Effective Java 第一条:考虑用静态工厂方法代替构造器
  8. Qt 5.9.1 连 MYSQL 5.7数据库
  9. windows下把文件压缩成tar.gz格式
  10. ARM汇编中^、!、cxsf符号和movs等指令使用
  11. vsd格式文件用什么打开? .vsd
  12. 交易结算金额一致性保证
  13. h5锁屏提醒-锁横屏和锁竖屏
  14. linux网页没有声音,linux 系统播放网页内容没声音
  15. 通过使用ZooKeeper解决单点故障理论
  16. 使用Dockerfile创建openoffice镜像
  17. 电商-分享时短链接生成方案
  18. WinXPSP2:IE浏览器加载项管理(转)
  19. unity界面介绍及导入模型
  20. 乱序字典加密解密python基础知识综合应用

热门文章

  1. 7. U9成本核算基本流程概述
  2. mysql5.6.40升级到mysql8.0.11 的步骤
  3. mybatis14--注解的配置
  4. ELK+redis搭建nginx日志分析平台
  5. java代码排序实践
  6. iframe cross domain
  7. 关于C++中的条件编译
  8. /scriptalert(/xss/)/script
  9. vim括号操作(转)
  10. 解决EclipseSDK3.3.0无法启动问题