迷宫是怎么画的
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/14 07:21:25 字数作文
篇一:c++迷宫绘制
实习报告
1. 需求分析:
随机生成N*N阶迷宫地图,从入口开始寻找到出口的过程,显示每一步的过程.用C++实现,设计类Moze,通过其构造函数生成随机地图,通过其成员函数DoMoze实现寻找从入口到出口路径的过程.
2. 数据类型定义说明:
//迷宫通道块类型
class MazePos
{
public:
int wx,ly; //块的X,Y坐标
int path; //块的类型;0:空块,-1:墙壁,1:出口路径
bool pass; //是否曾经过(对墙壁无意义);false:没有,true:曾经过
bool operator==(const MazePos pos)
{
return (wx==pos.wx && ly==pos.ly );
};
MazePos operator=(const MazePos pos)
{
wx=pos.wx;
ly=pos.ly;
pass=pos.pass;
path=pos.path;
return *this;
};
};
//End:MazePos---------------------------------------
//class:SElemType-----------------------------------------
//辅助栈元素类型
class SElemType
{
public:
int ord; //迷宫通道块路径上的序号
MazePos seat; //通道块在迷宫中的位置坐标
int di; //从此通道块走向下一通道块的方向
//0:无效,1:东,2:南,3:西,4:北
bool operator==(const SElemType et)
{
return (seat==et.seat);
};
SElemType operator=(const SElemType et)
{
ord =et.ord ;
seat =et.seat ;
di =et.di ;
return (*this);
};
};
//End:SElemType--------------------------------------
//struct:MazeMap-------------------------------------
typedef struct MazeMap
{
//由通道块矩阵构成
MazePos mazemap[MAPWIDTH][MAPHEIGHT];
}MazeMap;
//End:MazeMap---------------------------------------
//struct::MazeWay----------------------------------------
//辅助出口路径链表元素类型
typedef struct MazeWay
{
int wx,ly;
}MazeWay;
//End:MazeWay--------------------------------------------
//Class:Maze----------------------------------------
//主体类,迷宫路径问题求解
class Maze
{
public:
Maze(int width=MAPWIDTH,int height=MAPHEIGHT); //生成迷宫地图
~Maze();
void DoMaze(); //找出出口路径并显示
private:
bool InitOK; //初始化成功标志
MazeMap map; //迷宫地图
MazePos start,end; //迷宫的入口和出口
bool FindPath(); //主要函数,寻找出口路径
list
void RandMap(); //随机生成迷宫地图函数
bool CreateMap(bool init); //在初始和找到出口路径后生成相应地图函数
bool pass(MazePos curpos); //当前路径通道块是否可通(即是不是未经过的空块) MazePos NextPos(MazePos curpos,int di); //取得当前通道块当前方向上的下一个通道
块
bool Invalide(SElemType e); //使当前通道块标记为不可通
void DisplayMaze(); //显示迷宫地图
};
主程序流程图:
1>.初始化迷宫,构造辅助运行栈和结果链表
2>.从入口开始
do
{
if (当前位置可通)
{
当前位置入栈
if (当前位置是出口)
{
结束
}
else
{
取得当前位置当前方向上的下一位置为当前位置
将新当前位置入栈
}
}
else
{
从栈中弹出栈顶元素为当前位置
while(当前位置已无下一有效位置 && 栈不为空)
{
将当前位置标记为无效
弹出栈顶元素为当前位置
}
if (当前位置还有下一有效位置时)
{
当前位置方向调整
当前位置进栈
取得取得当前位置当前方向上的下一位置为当前位置
}
}
}while(栈不为空时);
未找到出口
3>.生成新地图
4>.显示地图
函数调用关系:
(1). CreatMap(bool?RandMap
(2). DoMaze -->FindPath( );
-->CreatMap( );
-->DisplayMaze( );
(3). FindPath -->Pass( ):
-->NextPos( );
3. 调试分析:
程序运行时不停的闪动,通过修改sleep(1000)中的值问题解决
时间和空间复杂度都是n*n.
4. 使用说明:
运行程序后生成一随机地图,按提示操作即开始从入口到出口运行的每一步步骤,每走一步显示一次地图,并显示走过的路径.
5. 源程序及运行结果:
#include
#include
#include
#include
#include
#include
#include
using namespace std;
Maze::Maze(int width,int height)
{ //
//随机生成迷宫地图
CreateMap(true);
//显示地图
DisplayMaze();
}
Maze::~Maze()
{
//Add codes here
}
bool Maze::FindPath ()
{//寻找出口,并生成出口路径链表
if(InitOK)
{
//MazeStack mstack;
stack
MazePos curpos=start;
int curstep=1; //经过的步数
MazeWay mw; //出口路径块元素
unsigned mwsize=mazeway.size (); //为显示运行过程而设
do
{
if(pass(curpos))
{
//如果当前位置可通(即是未走过的空块)
//封装栈元素,将当前位置进栈
SElemType e;
e.ord =curstep;
e.seat =curpos;
e.di =1;
mstack.push (e);
//保存当前位置到出口路径链表
mw.wx =e.seat .wx ;
mw.ly =e.seat .ly ;
mazeway.push_back (mw);
//如果是出口,则结束
if(curpos==end)
return true;
//不然就将得到下一个通道块
curpos=NextPos(curpos,e.di );
curstep++;
}
else
{
//当前位置不可通,则在栈内找到下一个位置
if(!mstack.empty())
{
SElemType e;
e=mstack.top ();
mstack.pop ();
//调整出口路径链表
mazeway.pop_back ();
while((e.di==0 || e.di ==4) && !mstack.empty ()) {
Invalide(e); //标记刻通道块不能通过
e=mstack.top ();
mstack.pop (); //退回一步
//调整出口路径链表
mazeway.pop_back ();
}
if(mstack.empty ())
return false;
else if( e.di<5)
{
e.di++;
e.di=e.di%5;
mstack.push (e);
篇二:画迷宫
教学目的;
1、了解迷宫的有关知识,学习运用线条表现物象,理解线条的造型能力,丰富学生的感受。通过迷宫造型游戏,体验快乐。
2、学生能够大胆的运用线条、颜色画迷宫,提高用线和色的表现力。
3、通过迷宫造型游戏,体验快乐。
教学重点:教师通过迷宫范例讲解设计迷宫的要点,使学生清晰可辩
教学难点 : 设计迷宫,给迷宫涂上漂亮的颜色。
教学过程:
一、引导自学
1、玩迷宫:
教师出示一张迷宫图片,通过大屏幕师生共同玩迷宫,体验玩迷宫带来的快乐。
探究迷宫:设计迷宫包括的内容有:起点、终点、障碍物、故事情节、路线清晰可辨。学生欣赏、分析迷宫图片。
2、你都玩够那些迷宫?我玩过小猪找家的迷宫。
3、作业步骤:1、构思迷宫(迷宫的内容、迷宫的外形、故事情节等)
4、设计迷宫,用铅笔起稿,黑笔勾边。(起点、终点、路线、内容清晰可辨)
二、当堂检测:
作品展示
鼓励学生向同学们介绍自己的作品,教师要选择有特点的作业进行点评,学生纷纷展示自己的作品,与同学们进行交流。
三、巩固拓展:
学生除了在附近的公园玩过真实的迷宫,其余都是在迷宫书上见到的,要学生把真实的自然界中大型的植物迷宫,画下来,开阔眼界,增长知识提高绘画能力。
篇三:3、画迷宫
3、画迷宫
授课时间:
教学目标:
知识与能力:
能大胆的想象和创造,运用多种造型方法表现出一个平面的或立体的迷宫。在学习中掌握相关的方法和技能,提高学生的动手能力。 过程与方法:
收集有关的迷宫的资料,了解它的文化和历史以及造型特点。 情感态度与价值观:
掌握不同材料和工具的使用方法。养成有序的制作的习惯,培养学生的合作精神。
教学重点:了解它的文化和历史以及造型特点。
教学难点:运用多种造型方法表现出一个平面的迷宫。
用具准备:课本、铅笔、彩色笔、作业本
教学过程
一、 玩迷宫:(3分钟)
教师出示一张迷宫图片,通过大屏幕师生共同玩迷宫,体验玩迷宫带来的快乐。
二、探究迷宫:(10分钟)
1、设计迷宫包括的内容有:起点、终点、障碍物、故事情节、路线清晰可辨。
2、提问学生都玩够那些迷宫?
学生回答问题:
1、我玩过奥特曼抢险的迷宫。
2、我玩过小猪找家的迷宫。
3、学生欣赏、分析迷宫图片。
4、教师以一小段故事引出课本中外形像鱼的迷宫,依次引出怪兽迷宫和房子迷宫,发现三个迷宫的不同之处:
①通过对迷宫的比较,发现每个迷宫的外形不同。
②迷宫所反应的内容不相同。
③每座迷宫的设计路线不同。
5、教师启发学生发挥想象力,引导学生在丰富的生活中、在所听所看的故事情节中选择体验最深的内容作为素材去创作迷宫。
(设计意图:迷宫对于二年级的小学生来说充满了神秘的色彩,
就利用他们的兴趣,是他们认识到迷宫的特点,为以后设计迷宫、画迷宫打下基础。)
学生回答问题:
①我想设计刺猬摘果子的迷宫。
②我想设计小猪探宝的迷宫。
三、学生创作,教师辅导:(15分钟)
作业步骤:1、构思迷宫(迷宫的内容、迷宫的外形、故事情节等)
2、设计迷宫,用铅笔起稿,黑笔勾边。(起点、终点、
路线、内容清晰可辨)
3、给迷宫涂上漂亮的颜色。
四、作品展示(5)
鼓励学生向同学们介绍自己的作品,教师要选择有特点的作业进行点评。
五、开阔眼界:(7分钟)
学生除了在附近的广场玩过真实的迷宫,其余都是在迷宫书上见到的,教师在这个环节将要为学生展示自然界中大型的植物迷宫,开阔眼界,增长知识。
六、板书设计
三、画迷宫
设计迷宫包括的内容:
1、起点
2、终点
3、障碍物
4、故事情节
5、路线清晰可辨
这设计路线是复习一下曾经学过的线条:折线、直线、曲线、波浪线、乱缠线、弹簧线等。
篇四:2-6岁少儿迷宫图3(可以当着色画哦)
2-6岁少儿迷宫图 3 (可以当着色画哦)
早在古希腊神话中,就有迷宫的传说。迷宫这个词,就是从希腊文演变过来的。传说古埃及金字塔藏有珍宝,为了防盗,里面就建成迷宫的结构。16世纪时,欧洲曾兴起一股建迷宫的热潮。后来世界许多地方也都建起了迷宫。迷宫开始为了藏宝,后来逐渐变成娱乐性建筑。科学家把它移植到纸上,成为一种纸上游戏。孩子玩迷宫游戏可以提高孩子专注力,加强耐心和毅力,还能让孩子对事物整体和局部之间的关系有一个基础的训练,开发孩子的右大脑。这是一项非常好的寓教于乐的训练题材。 这里我搜集了一些适合2——6岁的孩子游戏的迷宫图,喜欢的可以让孩子试一试。
篇五:2-6岁少儿迷宫图3(可以当着色画哦)
2-6
岁少儿迷宫图 3 (可以当着色画哦)
字数作文