VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1462|回复: 11

[原创] 辅助编程中的那些设计模式思想04-状态模式

[复制链接]
05_avatar_middle
online_vip 发表于 2015-3-2 17:31:34 | 显示全部楼层 |阅读模式
本帖最后由 重楼 于 2015-3-2 17:32 编辑

状态模式不管在游戏编程中还是在辅助编程中都很常见,首先看看最简单的状态机

DWORD ModeID = 0;
void StatusMode(int StatusID)
{
        switch (StatusID)
        {
        case 0:
        {
                          printf("执行状态 0 \r\n");
                          ModeID = 1;
                          break;
        }
        case 1:
        {
                          printf("执行状态 1 \r\n");
                          ModeID = 2;
                          break;
        }
        case 2:
        {
                          printf("执行状态 2 \r\n");
                          ModeID = 0;
                          break;
        }

        }


}

只要我们多次 调用 屏幕就会 在状态0 - 状态2之间来回切换,这是最简单的状态机


为什么要说最简单的呢?因为在这里我们仅仅只是3个状态,那么我们如果有50个呢?难道也写在一个函数里吗?

我们来看看第二个状态机

void(*g_FunData)();
void f2();
void f3();

void f1()
{
        printf("状态1 \r\n");
        g_FunData = f2;
}
void f2()
{
        printf("状态2 \r\n");
        g_FunData = f3;
}
void f3()
{
        printf("状态3 \r\n");
        g_FunData = f1;
}

int _tmain(int argc, _TCHAR * argv[])
{
        g_FunData = f1;

        for (int i = 0; i < 5;i++)
        {
                g_FunData();
        }
}




执行结果

状态1
状态2
状态3
状态1
状态2

这样就会一直循环下去

那么如果我们在函数内判断条件跳转那么我们就可以控制的在几个状态机来回跳转



附一个封装好的 简易状态机

游客,如果您要查看本帖隐藏内容请回复




上一篇:辅助编程中的那些设计模式思想03-适配器模式
下一篇:算法
70_avatar_middle
在线会员 发表于 2015-3-2 20:22:07 | 显示全部楼层
楼哥讲的好呀,支持ING
44_avatar_middle
在线会员 发表于 2015-3-2 23:11:01 | 显示全部楼层
顶顶顶顶11
83_avatar_middle
在线会员 发表于 2015-3-3 09:14:44 | 显示全部楼层
辅助编程中的那些设计模式思想04-状态模式
04_avatar_middle
在线会员 发表于 2015-3-4 18:29:12 | 显示全部楼层
正在找这个,谢谢分享!
86_avatar_middle
在线会员 发表于 2015-4-8 15:26:58 | 显示全部楼层
辅助编程中的那些设计模式思想04-状态模式
38_avatar_middle
在线会员 发表于 2015-6-22 16:55:30 | 显示全部楼层
辅助编程中的那些设计模式思想04-状态模式辅助编程中的那些设计模式思想04-状态模式
38_avatar_middle
在线会员 发表于 2016-1-13 04:16:51 | 显示全部楼层
谢谢重楼大大,好东西就得顶
79_avatar_middle
在线会员 发表于 2016-1-28 11:48:58 | 显示全部楼层
好东西,必须顶起来
55_avatar_middle
在线会员 发表于 2016-2-9 10:06:38 | 显示全部楼层
好东西                                                    辅助编程中的那些设计模式思想04-状态模式
26_avatar_middle
在线会员 发表于 2016-7-13 20:21:21 来自手机 | 显示全部楼层
学MFC不如学Java 学Java不如学C++
17_avatar_middle
在线会员 发表于 2017-1-21 23:25:29 | 显示全部楼层
有这个判断状态不是很好用?
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-1-22 00:52

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表