试着使用SDL2复刻曹操传(三)

本篇分三部分,分别是地图移动、光标替换以及鼠标事件处理。最后达成的效果如下:

 

(1)地图移动

        曹操传是上世纪90年代末的作品,那时候的显示设备是CRT显示器,屏幕大小和分辨率都比现在要小和低,窗口无法覆盖整张地图,当鼠标游走到窗口边缘的时候地图会相应的移动。为了实现此功能,可以进行如下考虑:

        创建Camera对象:

struct Camera
{
    SDL_Rect rect;
    int speed;      //移动速度
    SDL_bool is_moving;
    SDL_Point dst;  //移动目的地
};

void camera_init(struct Camera *ptr_camera, int x, int y, int w, int h, int speed);

void camera_translate(struct Camera *ptr_camera);

地图渲染的时候使用的函数为:

把Camera的rect成员指针代入到此函数中的const SDL_Rect *clip参数。当鼠标移到窗口边缘的时候触发Camera的camera_translate函数,地图渲染区域也就跟着变化,实现了地图在窗口里移动。

(2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值