C++;根据速度绘制地图 我试图用SDL库在C++中创建我自己的版本的River Road(2D游戏)。在游戏中,玩家驾驶一架位于屏幕底部的飞机,目标是通过关卡而不会受到敌人的伤害或撞击地球。我现在拥有的是两张代表土地和水的位图。我从记事本上画地图,在记事本上我存储了1和0,它们相应地代表了净陆地和水
所以我有一个记事本,上面写着关卡的布局。我把所有这些值都放到map数组中。我在网上发现我可以用飞机的速度移动地图。不幸的是,我不知道如何达到这样的效果C++;根据速度绘制地图 我试图用SDL库在C++中创建我自己的版本的River Road(2D游戏)。在游戏中,玩家驾驶一架位于屏幕底部的飞机,目标是通过关卡而不会受到敌人的伤害或撞击地球。我现在拥有的是两张代表土地和水的位图。我从记事本上画地图,在记事本上我存储了1和0,它们相应地代表了净陆地和水,c++,sdl,C++,Sdl,所以我有一个记事本,上面写着关卡的布局。我把所有这些值都放到map数组中。我在网上发现我可以用飞机的速度移动地图。不幸的是,我不知道如何达到这样的效果 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)
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++
}
}
你可以使用
int SDL_BlitSurface(SDL_Surface* src,
const SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
我建议您在循环之前创建三个SDL_曲面*
,一个用于水,一个用于陆地,一个用于整个地图
您已经在为循环中的各个分幅创建SDL\u Rect
,因此您缺少的只是整个地图的SDL\u Rect
(w=8*60,h=200*60
)
然后将相应的平铺blit到地图,类似于下面的SDL_BlitSurface(平铺、块数组[i]、mapSurface、mapRect)代码>
现在,mapSurface
是您的整个地图。如果不再使用瓷砖表面,应使用SDL_FreeSurface(srf)释放它们代码>
int SDL_BlitSurface(SDL_Surface* src,
const SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)