【四圣龙神录的编程教室】第6章、定制一下主循环里的调用函数吧

原文地址:

http://dixq.net/rp/6.html


MainLoop里调用的函数,会把当前的各种各样的状态返回,对吧。

也就是说,我们有必要定制一下MainLoop里面调用的函数。

因此,我们准备一个func_state变量,把表示状态的值存进去,然后根据不同的条件进行分支的操作吧。

我们要把func_state 定义成全局变量,所以,首先加到 GV.h 里面。

————————————————————————————————————————————————————————————————————————————

--GV.h 里加上下面的内容--

GLOBAL int func_state;

————————————————————————————————————————————————————————————————————————————

为了给下一节做准备,我们先把初始化函数给准备好吧。

—————————————————————————————————————————————————————————————————————————————

--ini.cpp里加上下面这段--


void first_ini(){


}

—————————————————————————————————————————————————————————————————————————————

给mainloop里要调用的函数需要先声明呢,而声明得写在function.h里面

—————————————————————————————————————————————————————————————————————————————

--function.h里写下如下语句--


GLOBAL void first_ini();

—————————————————————————————————————————————————————————————————————————————

在mainLoop里,用准备好了的func_state 来进行条件的分支判断。

—————————————————————————————————————————————————————————————————————————————

//--main.cpp改动--
#define GLOBAL_INSTANCE
#include "../include/GV.h"

//主循环里必须做的三大处理
int ProcessLoop()
{
    if(ProcessMessage()!=0)
        return -1   ;//Process处理出错的话,返回-1
    if(ClearDrawScreen()!=0)
        return -1;  //画面清理出错的话,返回-1
    GetHitKeyStateAll_2();  //获取现在的键盘输入情况
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    ChangeWindowMode(TRUE);     //窗口模式
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1; //初始化和设置双缓冲模式

    while(ProcessLoop()==0)     //主循环
    {
        switch(func_state)
        {
        case 0:
            load();         //载入数据
            first_ini();//第一次初始化
            func_state=100;
            break;
        case 100:
            graph_main();//主绘画函数
            break;
        default:
            printfDx("未知的func_state\n");
            break;
        }

        if(CheckStateKey(KEY_INPUT_ESCAPE)==1)
            break;                  //按下ESC的话,break
        ScreenFlip();       //交换双缓冲画面
    }

    DxLib_End();//DxLib中止
    return 0;
}
—————————————————————————————————————————————————————————————————————————————

和第四章的执行结果一样。可以和以前一样运行起来的话,就算成功了。



本人CSDN博客目录:

http://blog.csdn.net/tidus5


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值