gamemaker吧 关注:13,691贴子:95,762
  • 4回复贴,共1

[接着纠结...]汗...还是相邻检测的问题...

只看楼主收藏回复

纠结了三天...在某负责检测的obj中的弄了以下一坨代码...
其中obj_10和obj_100分别是面值为10和100的硬币的obj.
在所有对象的create事件中都设置了connact=false...
唉0.0测试结果电脑丝毫不采我...我检查了半天改了半天还是纹丝不变...看不出哪些环节是错的...纠结ing...
在create中:
checkx=224;
checky=16;
globalvar n_connact; //number of the coins which are connacted.
n_connact=0;
globalvar j;
globalvar i;
在step中:
do
{
check=instance_position(checkx,checky,obj_10);
if (check!=noone)
{
   check.connact=true;
   n_connact+=1;
   i=1;
   with(obj_10)
   {
     do
     {
       j=i;
       center=instance_position(x,y,obj_10);
       if (center.connact=true)
       {
         over=instance_position(x,y-32,obj_10);
         if (over!=noone){
         if (over.connact=false)
         {  
           over.connact=true;
           n_connact+=1;
           i+=1;
         }}
         under=instance_position(x,y+32,obj_10);
         if (under!=noone){
         if (under.connact=false)
         {
           under.connact=true;
           n_connact+=1;
           i+=1;
         }}
         left=instance_position(x-32,y,obj_10);
         if (left!=noone){
         if (left.connact=false)
         {
           left.connact=true;
           n_connact+=1;
           i+=1;
         }}
         right=instance_position(x+32,y,obj_10);
         if (right!=noone){
         if (right.connact=false)
         {
           right.connact=true;
           n_connact+=1;
           i+=1;
         }}
       }
     }
     until(j=i or n_connact>=10)
   }
}
if (n_connact<10)
{
   n_connact=0;
   checkx+=32;
   if (checkx=448)
   {
     checkx=224;
     checky+=32;
   }
}
else
{
   dx=224;
   dy=16;
   k=0;
   do
   {
     d=instance_position(dx,dy,obj_10)
     if (d!=noone){
     if (d.connact=true)
     {
       with (d)
       {
         global.createx=x;
         global.createy=y;
         instance_destroy()
       }
       k+=1;
     }}
     dx+=32;
     if (dx=448)
     {
       dx=224;
       dy+=32;
     }
   }
   until (i=10)
   n_connact=0;
   instance_create(global.createx,global.createy,obj_100);
}
}
until(checkx=224 and checky=464)
checky=16;


1楼2010-06-25 18:09回复
    哦哦出来啦!如果米人给你简单明了的答案,你就看这个!
    如果你能看明白咱画格子的步骤,这个问题1000%能解决哦
    http://tieba.baidu.com/f?kz=576731040
    但是如果有人给你针对性的答案,那就择优吧~~


    IP属地:四川2楼2010-06-25 18:53
    回复
      2025-11-27 03:25:42
      广告
      不感兴趣
      开通SVIP免广告
      0.0嗯```这篇我看过拉``只是有个问题是.寻路算法只是针对主角一个对象...可是相邻检测如果检测出四周都相邻那貌似四周的对象都要检测...然后那四个对象都检测完后万一周围又全都是那就又多了好多对象......貌似检测相邻的算法就是多了这个无法预知该检测的对象是谁的问题......


      3楼2010-06-25 19:55
      回复
        不是很了解判定方式,不过看起来就是如果最顶端中央有10元硬币,然后就上下左右看……似乎哪个地方会造成死循环,搞不大懂


        IP属地:广东4楼2010-06-25 21:43
        回复
          0.0额...我是想写成...从第一个格子开始检测...如果碰上对象正好是10元硬币.那就让所有硬币上下左右看...直到所有硬币周围都不再有连在一起的硬币...
          如果碰上不是那就再移到下一个格子...


          5楼2010-06-25 22:37
          回复