【四圣龙神录的编程教室】第20章、我们来绘制背景吧

原文地址:

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


接下来我们来绘制背景吧,来绘制龙神录的第一个舞台吧。

虽然说起来有点复杂,我们预先在数据文件里存放一个背景文件的图片快照,把这个滚动起来看看吧。

要把背景滚动起来,基本说来就是上下连续的描绘两张一样的图片,把图片大小的周期和滚动的周期调成一样的就行了。

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

---- graph_back.cpp 的改动 ----

#include "../include/GV.h"

void graph_back00(){
        SetDrawArea( 32 , 16 , 416 , 464 ) ;//设置绘制区域
        DrawGraph(FIELD_X,count%700+FIELD_Y-700,img_back[0],FALSE);
        DrawGraph(FIELD_X,count%700+FIELD_Y    ,img_back[0],FALSE);
        SetDrawArea( 0, 0, 640, 480);//返回原来的区域
}

void graph_back_main(){
        graph_back00();
}
————————————————————————————————————————————————————————————

首先,由于要绘制大面积的图像,对不会显示的部分进行计算绘制是不必要的。

所以,我们把可能要绘制的部分放到 FIELD 区域里面。

然后,把一张图片,在错开一张图片的大小的两个位置上进行绘制,然后以相同的速度进行滚动。

这里使用到了每一帧都会增加的 count 变量。

额,目前就是一个图片的滚动效果,所以还比较简单啦。

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

---- graph.cpp 的 graph_main 函数里添加如下部分 ----

extern void graph_back_main();

void graph_main(){
        graph_back_main();


---- GV.h 里加入如下代码 ----

GLOBAL int img_back[10];//背景图片
GLOBAL int func_state,stage_count,count;


---- load.cpp 的 load函数里添加如下部分 ----

img_back[0] = LoadGraph("../dat/img/back/0/back0.png");


---- main.cpp 的main函数改成如下这样 ----

            case 100://通常的处理
                calc_ch();   //计算角色
                ch_move();   //角色的移动操作
                cshot_main();//自机射击的主函数
                enemy_main();//敌机的处理的主函数
                shot_main(); //射击的主函数
                out_main();  //碰撞检测
                effect_main();//特效的主函数
                graph_main();//绘制的主函数
                stage_count++;
                break;


---- main.cpp 里添加如下部分 ----

                music_play();
        if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//如果按下ESC的话,跳出
        ScreenFlip();//刷新双缓冲
        count++;
    }

    DxLib_End();//DxLib的退出处理
    return 0;
}
————————————————————————————————————————————————————————————————

运行结果:

http://dixq.net/rp/swf/20.swf


(PS:

拖延症犯了,本来都烂尾了,看看,这都半年没更了啊。

这半年,坚持跑步一个月后,感觉身体不行,去医院检查了之后就没跑了。买了个琴,也没怎么练了。

半年,在新公司呆了半年,项目都还没上线,唉。。据说快了吧。反正我就一打酱油的,今天又一个小问题卡了半天。。

技术没长进,代码框架不大懂,自己的东西bug一堆。不敢乱改,出错只希望不是我的错,遇到问题就慌了去寻求帮助。。。

老大今天一句话说的对啊,没有无缘无故的错误,程序怎么出错的查一下改回来就是了。别说不知道,老总在你后面,你敢说不知道?

唉,技术渣的码农啊。。。)


本人CSDN博客目录:

http://blog.csdn.net/tidus5


展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值