首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据C++绘制地图的速度

根据C++绘制地图的速度
EN

Stack Overflow用户
提问于 2014-01-09 04:05:04
回答 1查看 250关注 0票数 0

我正在尝试使用SDL库在C++中创建我自己的河马(2D游戏)版本。在游戏中,玩家驾驶屏幕底部的飞机,目标是在不受到敌人伤害或击中地面的情况下通过关卡。我现在拥有的是几个表示土地和水的位图。我从记事本上绘制地图,我在记事本上存储了1和0,它们相应地表示陆地和水域。

所以我有一个记事本,上面写着关卡的布局。我将所有这些值放入map数组中。我在网上发现我可以通过飞机的速度来移动地图。不幸的是,我不知道如何达到这样的效果。

代码语言:javascript
复制
SDL_Rect blockarray[200];
for(int y=0;y<16;y++){
    for(int x=0;x<8;x++){
        int surfacetype = getsurface(x,y);
        int color=0;
        switch (surfacetype)
        {
        case 0:
            color=blue;
            break;
        case 1:
            color=green;
            break;
        default:
            color=blue;
            break;
        }
        blockarray[i].x=80+60*x;
        blockarray[i].y=60*y;
        blockarray[i].h=60;
        blockarray[i].w=60;
        i++
    }
}

我想知道的是:我如何将这些小块组装成一个曲面,或者当我试图在飞机上升时将地图向下移动时,我如何将它们视为一个曲面。

记事本:

代码语言:javascript
复制
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
1 0 1 1 0 1 1 0
EN

回答 1

Stack Overflow用户

发布于 2014-01-09 04:43:52

您可以使用以下命令完成此操作

代码语言:javascript
复制
int SDL_BlitSurface(SDL_Surface*    src,
                    const SDL_Rect* srcrect,
                    SDL_Surface*    dst,
                    SDL_Rect*       dstrect)

我建议您在循环之前创建三个SDL_Surface*,一个用于水,一个用于陆地,一个用于整个地图。

您已经为循环中的行业瓦片创建了SDL_Rect,因此缺少的就是整个地图的SDL_Rect ( w = 8 * 60, h = 200 * 60。)

然后,将相应的切片绘制到地图中,如下所示的SDL_BlitSurface( tileLand, blockarray[i], mapSurface, mapRect);

现在mapSurface就是你的整个地图。如果不再使用切片表面,则应使用SDL_FreeSurface( srf );释放切片表面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21005431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档