游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4438|回复: 19

关于游戏地图图块显示的问题(请高手赐教)

[复制链接]

94

主题

165

帖子

165

积分

注册会员

Rank: 2

积分
165
发表于 2004-10-5 13:40:00 | 显示全部楼层 |阅读模式
我做的一个RPG的DEMO程序,地图图块是32*32的,精灵图像是32*32.如果我要让精灵向左走一步.在程序中实现就是背景向右移动(滚屏),我设计的是背景向右移动一个图块的增量(32像素),这看上去好像精灵走出了很大一步.我用的是VC,我想只让角色只移动16个像素,但是BLT程序的显示单位是一个图块,怎么样显示半个图块.或者更小以实现平滑滚屏.

请高手赐教

68

主题

710

帖子

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2004-10-5 13:44:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

直接改RECT的LEFT,RIGHT
做个函数可以将图块解析成坐标

94

主题

165

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2004-10-5 13:50:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

你的意思是说将图块以像素的方式绘制吗?(画点方式),能不能贴个图块平滑滚动显示的代码.

68

主题

710

帖子

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2004-10-5 13:57:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

不是以象素的画点方式
而是在贴图片的时候有个变量决定图片的X、Y坐标
你只要根据这个坐标就可以平滑了
没猜错你现在只是按照规定的图块坐标显示
地图是要以图块方式保存的
但显示时使用单独的一对X,Y或POINT这样如何???

94

主题

165

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2004-10-5 14:17:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

还是不太明白.
对的,我以前是按照图片的X,Y坐标绘制的.假设一屏有10*10个图块.我的背景有15*15个图块组成.
     for(y=0;y<10;y++)
         for(x=0;x<10;x++)
             drawimg(x*32,y*32,map[x][y]);
如果要向右滚动的话:
   for(y=0;y<10;y++)
         for(x=1;x<11;x++)       //在原来的基础上向右定位图块
             drawimg(x*32,y*32,map[x][y]);
  

68

主题

710

帖子

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2004-10-5 15:18:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

我不说了

187

主题

600

帖子

606

积分

高级会员

Rank: 4

积分
606
QQ
发表于 2004-10-5 15:38:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

哈哈!秀才遇见兵,有理说不清,哈哈

94

主题

165

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2004-10-5 15:45:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

底子薄弱.没办法,没读多少书,文化低啊.

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-10-5 16:12:00 | 显示全部楼层

Re: Re:关于游戏地图图块显示的问题(请高手赐教)

要先算出屏幕左上角位于地图的哪一点(不是哪一格)

//先放些变量
RECT rt;
int x,y;
int x2,y2;
int DX,DY;
int i,j;

如果你想画X:0.5到10.5格,Y:1.5到11.5格
也就是屏幕左上角位于
dx=16,dy=48;

两个方向各画10格
width=10,height=10;

DX=dx>>5,DY=dy>>5;
for(j=0;j<=height;j++) //我实际是画11个
{
    y2 = j+DY;
    if(y2<0)
        continue;
    if(y2>=MapHeight)
        break;
    y = y2<<5 - dy;
    for(i=0;i<=width;i++)
    {
        x2 = i+DX;
        if(x2<0)
            continue;
        if(x2>=MapWidth)
            break;
        x = x2<<5 - dx;
        Drawimg(x,y,map[y2][x2]);
    }
}

从我的程序里硬搬了一块,写得挺乱,也没测试。不知道对不对。

94

主题

165

帖子

165

积分

注册会员

Rank: 2

积分
165
 楼主| 发表于 2004-10-5 16:18:00 | 显示全部楼层

Re:关于游戏地图图块显示的问题(请高手赐教)

谢谢帮忙,心中的疑问顿时化解.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-22 17:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表