您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
业务架构设计
4月18-19日 在线直播
基于UML和EA进行系统分析设计
4月25-26日 北京+在线
AI 智能化软件测试方法与实践
5月23-24日 上海+在线
     
   
 
 订阅
用有限状态机实现的迷宫求解
 
作者:潘李亮
   次浏览      
 2007-6-7
 
编辑推荐:
本文我们主要演示一个迷宫行走者在迷宫中的行走过程,希望对您的学习有所帮助。
本文来自gameres,由火龙果软件Linda编辑、推荐。

和大部分的迷宫程序相同,迷宫的解决方法是 递归或者是用堆栈来模拟递归,这个程序也不例外。但是我们知道普通的迷宫求解程序通常是用一种递归的方法来实现的。程序从一开始运行就不断的进行递归,直到找到迷宫的出口。但是这对一个演示程序来说是不行的,我们需要演示一个迷宫行走者在迷宫中的行走过程。

因此我们用另外的方式来实现,我们首先要需要一个状态机来记录当前行走者的状态,比如说他是处在行走还是寻找一个新的可以到达的地方的状态,因此我使用了一个有限状态机来模拟搜索者的状态的,我们只要记住行走者的状态就可以了。我们在game loop的每一次到来时刻让行走者按照给定的状态行动。根据行动的结果可以转化状态机的状态。同时也可以在任何你喜欢的时候暂停行走者的行动(在game loop里设置一个标记就可以了。)

关于有限状态机的原理和应用请看《离散数学》。在这个程序里重要有:

NEXT_DIR: 转动到下一个方向

MOVE_NEXT: 运动到下一个地方

TRACE_BACK: 回退:好难实现啊:-(

NO_PATH: 找不到路,迷宫没有出口

FIND_EXIT: 找到了出口

至于本程序用于画图的是OpenGL,强烈推荐OpenGL啊,易学,易用,还附送很多的特殊扩展哦。

以下是用于有限状态机处理的函数


int CMaze::Action()

{
    //First test the walker is want to search
    switch(_walker.is_rest)
    {
        case true:
        {

            Alert("I think I must have a rest Z...ZZ.....");
            Alert();

           return 0;
        }
    }

    switch(_walker.stauts)

    {
        case NEXT_DIR:

           NextDir();
        break;
        case MOVE_NEXT:
           
MoveNext();
        break;
        case TRACE_BACK:
           
TraceBack();
        break;

        case NO_PATH:

           
Alert("It's so bad the maze has no exit!!");

        break;

        case FIND_EXIT:

           
Alert("Ha ha! I find the maze's exit!! Yeah!");
        break;
    }     Alert();    
return 1;
}

 

 

   
次浏览       
相关文章

一文了解汽车嵌入式AUTOSAR架构
嵌入式Linux系统移植的四大步骤
嵌入式中设计模式的艺术
嵌入式软件架构设计 模块化 & 分层设计
相关文档

企点嵌入式PHP的探索实践
ARM与STM简介
ARM架构详解
华为鸿蒙深度研究
相关课程

嵌入式C高质量编程
嵌入式操作系统组件及BSP裁剪与测试
基于VxWorks的嵌入式开发、调试与测试
嵌入式单元测试最佳实践

最新活动计划
业务架构设计与建模 4-18[北京]
DeepSeek大模型开发实践 4-19[在线]
基于 UML 和EA进行分析设计 4-26[北京]
产品经理与产品管理 5-8[上海]
AI智能化软件测试方法与实践 5-23[上海]
图数据库与知识图谱 5-22[北京]
 
 
最新文章
基于FPGA的异构计算在多媒体中的应用
深入Linux内核架构——简介与概述
Linux内核系统架构介绍
浅析嵌入式C优化技巧
进程间通信(IPC)介绍
最新课程
嵌入式Linux驱动开发
代码整洁之道-态度、技艺与习惯
嵌入式软件测试
嵌入式C高质量编程
嵌入式软件可靠性设计
成功案例
某军工所 嵌入式软件架构
中航工业某研究所 嵌入式软件开发指南
某轨道交通 嵌入式软件高级设计实践
深圳 嵌入式软件架构设计—高级实践
某企业 基于IPD的嵌入式软件开发
更多...