铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 1662|回复: 7

新手求助,主地图建筑的排序是用的什么方法啊,

[复制链接]
发表于 2010-10-21 22:01 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
新手求助,主地图建筑的排序是用的什么方法啊,谢谢
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-10-22 19:07 | 显示全部楼层
需要考虑到这个问题就不算是新手了阿

可以参考下复课版的源码,看作者是如何实现的。

这里附上lua版的词部分源码,作者是游泳的鱼

  1. // 主地图建筑排序
  2. // x,y 主角坐标
  3. // Mypic 主角贴图编号
  4. int BuildingSort(short x, short y, short Mypic)
  5. {

  6.     int rangex=g_ScreenW/(2*g_XScale)/2+1+g_MMapAddX;
  7.         int rangey=g_ScreenH/(2*g_YScale)/2+1;

  8.         int range=rangex+rangey+g_MMapAddY;

  9.         short bak=(short)JY_GetMMap(x,y,2);
  10.         short bakx=(short)JY_GetMMap(x,y,3);
  11.         short baky=(short)JY_GetMMap(x,y,4);
  12.    
  13.         int xmin=limitX(x-range,1,M_XMax-1);
  14.         int xmax=limitX(x+range,1,M_XMax-1);
  15.         int ymin=limitX(y-range,1,M_YMax-1);
  16.         int ymax=limitX(y+range,1,M_YMax-1);

  17.     int i,j,k,m;
  18.     int dy;
  19.         int repeat=0;
  20.         int p=0;

  21.         BuildingType tmpBuild;

  22.     JY_SetMMap(x,y,2,(short)(Mypic*2));
  23.     JY_SetMMap(x,y,3,x);
  24.     JY_SetMMap(x,y,4,y);

  25.         for(i=xmin;i<=xmax;i++){
  26.                 dy=ymin;
  27.                 for(j=ymin;j<=ymax;j++){
  28.                         int ij3=JY_GetMMap(i,j,3);
  29.                         int ij4=JY_GetMMap(i,j,4);
  30.                         if( (ij3!=0) && (ij4!=0)){
  31.                                 repeat=0;
  32.                                 for(k=0;k<p;k++){
  33.                                         if((Build[k].x ==ij3) && (Build[k].y==ij4)){
  34.                                                 repeat =1;
  35.                                                 if(k==p-1)
  36.                                                         break;

  37.                                                 for(m=j-1;m>=dy;m--){
  38.                                                         int im3=JY_GetMMap(i,m,3);
  39.                                                         int im4=JY_GetMMap(i,m,4);
  40.                                                         if( (im3!=0) && (im4!=0)){
  41.                                                                 if( (im3!=ij3) || (im4!=ij4)){
  42.                                                                     if( (im3!=Build[k].x) || (im4!=Build[k].y)){
  43.                                                                                 tmpBuild=Build[p-1];
  44.                                                                                 memmove(&Build[k+1],&Build[k],(p-2-k+1)*sizeof(BuildingType));
  45.                                                                                 Build[k]=tmpBuild;                                                                                 
  46.                                                                         }
  47.                                                                 }
  48.                                                         }
  49.                                                 }
  50.                                                 dy=j+1;
  51.                                                 break;
  52.                                         }
  53.                                 }

  54.                                 if(repeat==0){
  55.                                         Build[p].x =ij3;
  56.                                         Build[p].y =ij4;
  57.                                         Build[p].num =JY_GetMMap(Build[p].x,Build[p].y,2);
  58.                                         p++;
  59.                                 }
  60.                         }
  61.                 }
  62.         }

  63.     BuildNumber=p;

  64.     JY_SetMMap(x,y,2,bak);
  65.     JY_SetMMap(x,y,3,bakx);
  66.     JY_SetMMap(x,y,4,baky);   

  67.     return 0;
  68. }
复制代码
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-10-28 18:38 | 显示全部楼层
感觉这个复刻版排序有点不对,有时候人会在山上走

[发帖际遇]: aronzhou帮助流落破窑的孤儿杨过,得郭靖称赞,增加声望1。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-10-28 18:48 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-10-28 18:58 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-10-29 00:05 | 显示全部楼层
没弄错,复刻的本来就不对

[发帖际遇]: KA抓了很多毒物给阿紫练功,获奖赏银两27两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-10-29 10:20 | 显示全部楼层
恩  复刻版有的地方可以穿山,不知道是怎么回事,有大侠知道怎么解决么?

[发帖际遇]: aronzhou四处宣传左子穆为救自己孩子不惜绑架他人孩子的卑鄙无耻行径,被左子穆追杀,丢失银两银两16两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-10-29 10:22 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-22 11:43

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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