游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6453|回复: 18

求教斜45度方形地图原理及右键菜单问题

[复制链接]

19

主题

64

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2005-2-6 13:21:00 | 显示全部楼层 |阅读模式
我在制作45度斜视角地图时遇到下面两个问题,向这里的好心人讨教了!
1、请问方形的斜视角地图的原理。按照网上我看到的理论,做出来的地图都是菱形的(像帝国时代2那样),这样一张方形表面就有一半被浪费了。那么像星际一样的方形地图是怎么做出来的呢?
2、我的地图编辑器有个问题老是解决不了,就是右键菜单、对话框显示的问题。怎么说呢,当我有时(注意是有时,有时又可以)点击右键时,右键菜单显示不了,但我确定它确实弹出来了,因为那时画面就停住了,且我在右键菜单出现的大概位置点击后,能实现相应项的功能。也就是说,右键菜单弹出来了,但是显示不出来。对话框也有这个问题。
弹菜单的代码如下:
        e_hMainMenu=:oadMenu(hInstance,MAKEINTRESOURCE(IDR_EDITOR_MENU));

        HMENU hmMain=::CreatePopupMenu();
        HMENU hmsub;
        char *ppszMenu[]={"文件","显示","帖图","地图","帮助"};
       
        for(int i=0;i<5;i++)
        {
                hmsub=::GetSubMenu(e_hMainMenu,i);
                ::AppendMenu(hmMain,MF_POPUP|MF_STRING,(UINT)hmsub,ppszMenu);
        }
        POINT pt;
        ::GetCursorPos(&pt);
        TrackPopupMenu(hmMain,TPM_LEFTALIGN|TPM_RIGHTBUTTON,pt.x,pt.y,0,e_hwnd,NULL);
        :eleteMenu(hmMain,0,0);

其中的e_hwnd是窗口的句柄:
    e_hwnd=CreateWindow("MyARPG","ARPG Map Editor",WS_POPUP|WS_VISIBLE,
                        0,0,GetSystemMetrics(SM_CXSCREEN),
                        GetSystemMetrics(SM_CYSCREEN),NULL,NULL,hInstance,NULL);

据我的研究,很可能是这个句柄:e_hwnd的问题,因为涉及此句柄的东西都有这个问题,如弹对话框:
int result=DialogBox(e_hInstance,
                          MAKEINTRESOURCE(IDD_TILE_DATA),
                          e_hwnd,
                          (DLGPROC)DlgSetTileData);
MessageBox(e_hwnd,"hi",NULL,MB_OK);

坦白地说,我弹右键菜单的代码是参考LOA的,就此我也问过LOA的作者,他说他制作时也遇到过与我一样的问题,只不过他当时并未将窗口句柄保存,而是直接用GetActiveWindow()得到的。当他用一个变量保存窗口句柄,并在之后使用它而非GetActiveWindow()得到的句柄后,问题解决了。于是我就纳闷加郁闷了,我明明是按他后来的方法,问题却依然存在...
这个问题已经困扰我一个年头了,听说gameRes的高手和好心人多,故小弟特来讨教,望知道的大哥赐教。
sf_200526132131.jpg

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-6 16:25:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

星际的可能是用的tile横排的,,这样大地图就是方的,,这样鼠标拾取比较方便

帝国用的是这种大菱形

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-6 16:28:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

可以用IDirectDraw7下的FlipToGDISurface试试

可以确保GDI绘到主表面

19

主题

64

帖子

77

积分

注册会员

Rank: 2

积分
77
 楼主| 发表于 2005-2-6 22:12:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

Quest兄,看过你的地图编辑器了,也是这种大菱形的。有没有想过做成方形的(优点很多啊),一起研究研究。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-2-6 23:40:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

      我最近在做一个2D的RPG游戏,也考虑到了菱形Tile的资源浪费问题。我的做法是把地图中的地表层和物体层分开处理,地表层采用矩形Tile坐标系,物体层采用菱形Tile坐标系。编辑地图的时候分两个坐标系来处理,绘制地图时把矩形Tile坐标系换算成菱形Tile坐标系即可!其实主要的想法就是将地表层作为整图来处理,只不过这个整图被分割成一系列大小相同的矩形块而已。

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-7 12:12:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

呵呵,,本来我也想做成平铺的,,不过最后想到突袭我就做成大菱形了

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-7 12:14:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

其实,,大菱形和平铺差不多,,就是绘制时要分奇数和偶数行

不过说起来平铺无论在哪方面都有优点的啊

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-7 12:17:00 | 显示全部楼层

Re: Re:求教斜45度方形地图原理及右键菜单问题

DreamSnow: Re:求教斜45度方形地图原理及右键菜单问题

      我最近在做一个2D的RPG游戏,也考虑到了菱形Tile的资源浪费问题。我的做法是把地图中的地表层和物体层...


这种做法其实和Big Bitmap差不多

不过Big Bitmap更加自由

19

主题

64

帖子

77

积分

注册会员

Rank: 2

积分
77
 楼主| 发表于 2005-2-7 12:26:00 | 显示全部楼层

Re: Re:求教斜45度方形地图原理及右键菜单问题

DreamSnow: Re:求教斜45度方形地图原理及右键菜单问题

      我最近在做一个2D的RPG游戏,也考虑到了菱形Tile的资源浪费问题。我的做法是把地图中的地表层和物体层...

我觉得你不需要用两个坐标系,统一用地表层的坐标系不是更好?

19

主题

64

帖子

77

积分

注册会员

Rank: 2

积分
77
 楼主| 发表于 2005-2-7 12:32:00 | 显示全部楼层

Re:求教斜45度方形地图原理及右键菜单问题

其实关于45度方形地图,我自己在网下也琢磨过,觉得做出来也不会太难,不过自己研究的与现在各公司在用的算法上可能会差一些,我只想了解一下现状。我初学时看到的网上的教程都说是做成大菱形的,不知道大菱形的优势究竟是什么?(个人觉得方形地图更具优势且制作难度并不比菱形大)。
我还是衷心向好心人讨教第二个问题,毕竟这个问题已经困扰我一年了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 09:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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