[ascoders] Re: tilebasiertes game, rekursives wirrwar

  • From: <mail@xxxxxxxxxxxx>
  • To: <ascoders@xxxxxxxxxxxxx>
  • Date: Sun, 24 Oct 2004 17:20:06 +0100

Ok,

        if(map[surroundingTiles[0].y][surroundingTiles[0].x][0])
        {
             return
this.findNearestFreeTileToOccupiedOne(surroundingTiles[0].x, xTileFrom,
surroundingTiles[0].y, yTileFrom, map);
        }


Das hats gebracht...

So richtig verstehen tu ich?s noch immer net...
Muss ja nicht alles verstehen

-----Original Message-----
From: ascoders-bounce@xxxxxxxxxxxxx [mailto:ascoders-bounce@xxxxxxxxxxxxx]
On Behalf Of Ralf Bokelberg
Sent: Sonntag, 24. Oktober 2004 13:33
To: ascoders@xxxxxxxxxxxxx
Subject: [ascoders] Re: tilebasiertes game, rekursives wirrwar

Vielleicht mit return? Schon probiert?

mfg. r

mail@xxxxxxxxxxxx schrieb:

> Wie könnte ich denn diese situation möglichst elegant auflösen?
> 
> Gr,
> benjamin
> 
> -----Original Message-----
> From: ascoders-bounce@xxxxxxxxxxxxx [mailto:ascoders-bounce@xxxxxxxxxxxxx]
> On Behalf Of Ralf Bokelberg
> Sent: Sonntag, 24. Oktober 2004 11:13
> To: ascoders@xxxxxxxxxxxxx
> Subject: [ascoders] Re: tilebasiertes game, rekursives wirrwar
> 
> Genau,
> der geht verloren, weil du das Ergebnis deines
> rekursiven Aufruf nicht returnst.
> mfg r.
> 
> mail@xxxxxxxxxxxx schrieb:
> 
> 
>>Hallo list,
>>
>>ich hab nen kleines problem mit nem rekursiven funktionsaufruf innerhalb
>>eines anderen funktionsaufrufes innerhalb einer klasse.
>>
>>Prinzipiell rufe ich eine funktion auf, welche eine andere aufruft, die
>>rekursiv versucht ein freies tile in einem tilebasierten spiel zu finden.
>>
>>Das sieht dann im quelltext so aus,
>>
>>die funktion " searchForFreeTiles" wird vorher wo aufgerufen....
>>
>>*code*
>>
>>public function searchForFreeTiles(xTileTo:Number, xTileFrom:Number,
>>yTileTo:Number, yTileFrom:Number, aktDistanceToGoal:Number,
>>map:Array):Object
>>    {
>>            var tile = this.findNearestFreeTileToOccupiedOne(xTileTo,
>>xTileFrom, yTileTo, yTileFrom, map);
>>            trace("return2: "+[tile.x, tile.y, tile.distance]);
>>            return tile;
>>    }
>>
>>    public function findNearestFreeTileToOccupiedOne(xTileTo:Number,
>>xTileFrom:Number, yTileTo:Number, yTileFrom:Number, map:Array):Object
>>    {
>>        var p1 = {};
>>        var p2 = {};
>>        var p3 = {};
>>        var p4 = {};
>>        var p5 = {};
>>        var p6 = {};
>>        var p7 = {};
>>        var p8 = {};
>>
>>        var surroundingTiles = [];
>>
>>          //upper left
>>        p1.x   = xTileTo-1;
>>        p1.y   = yTileTo-1;
>>        p1.distance = this.calculateEuclideanDistance(xTileFrom, p1.x,
>>yTileFrom, p1.y);
>>        surroundingTiles.push(p1);
>>
>>        //up
>>        p2.x   = xTileTo;
>>        p2.y   = yTileTo-1;
>>        p2.distance = this.calculateEuclideanDistance(xTileFrom, p2.x,
>>yTileFrom, p2.y);
>>        surroundingTiles.push(p2);
>>
>>        //upper right
>>        p3.x   = xTileTo+1;
>>        p3.y   = yTileTo-1;
>>        p3.distance = this.calculateEuclideanDistance(xTileFrom, p3.x,
>>yTileFrom, p3.y);
>>        surroundingTiles.push(p3);
>>
>>        //left
>>        p4.x   = xTileTo-1;
>>        p4.y   = yTileTo;
>>        p4.distance = this.calculateEuclideanDistance(xTileFrom, p4.x,
>>yTileFrom, p4.y);
>>        surroundingTiles.push(p4);
>>
>>        //right
>>        p5.x   = xTileTo+1;
>>        p5.y   = yTileTo;
>>        p5.distance = this.calculateEuclideanDistance(xTileFrom, p5.x,
>>yTileFrom, p5.y);
>>        surroundingTiles.push(p5);
>>
>>        //upper left
>>        p6.x   = xTileTo-1;
>>        p6.y   = yTileTo+1;
>>        p6.distance = this.calculateEuclideanDistance(xTileFrom, p6.x,
>>yTileFrom, p6.y);
>>        surroundingTiles.push(p6);
>>
>>        //down
>>        p7.x   = xTileTo;
>>        p7.y   = yTileTo+1;
>>        p7.distance = this.calculateEuclideanDistance(xTileFrom, p7.x,
>>yTileFrom, p7.y);
>>        surroundingTiles.push(p7);
>>
>>        //down right
>>        p8.x   = xTileTo+1;
>>        p8.y   = yTileTo+1;
>>        p8.distance = this.calculateEuclideanDistance(xTileFrom, p8.x,
>>yTileFrom, p8.y);
>>        surroundingTiles.push(p8);
>>
>>        //sort on distance
>>        surroundingTiles.sortOn( "distance", 16 );
>>              //if the tile is occupied, search for a new one...
>>        if(map[surroundingTiles[0].y][surroundingTiles[0].x][0])
>>        {
>>             this.findNearestFreeTileToOccupiedOne(surroundingTiles[0].x,
>>xTileFrom, surroundingTiles[0].y, yTileFrom, map);
>>        }
>>        else
>>        {
>>            var tile = surroundingTiles[0];
>>            trace("return1: "+[tile.x, tile.y, tile.distance]);
>>            return tile;
>>        }
>>    }
>>
>>*code*
>>
>>Interesant ist der trace, der folgendes ausspuckt:
>>"
>>return1: 24,4,20
>>return2: undefined,undefined,undefined
>>"
>>
>>Irgendwie scheint mir der rückgabewert der function "
>>findNearestFreeTileToOccupiedOne" verloren zu gehen.
>>
>>Es muss was ganz einfaches sein, ich rall es warscheinlich grad nur nicht
>>:-)
>>
>>Jeder input wär willkommen...
>>
>>Danke!
>>
>>benjamin
>>
>>
>>
>>------------------------------------------------------
>>Archiv   : //www.freelists.org/archives/ascoders/
>>Optionen : //www.freelists.org/list/ascoders
>>------------------------------------------------------
>>
> 
> ------------------------------------------------------
> Archiv   : //www.freelists.org/archives/ascoders/
> Optionen : //www.freelists.org/list/ascoders
> ------------------------------------------------------
> 
> ------------------------------------------------------
> Archiv   : //www.freelists.org/archives/ascoders/
> Optionen : //www.freelists.org/list/ascoders
> ------------------------------------------------------
> 

-- 
Ralf Bokelberg
Progammierer
0221 530 15 35
------------------------------------------------------
Archiv   : //www.freelists.org/archives/ascoders/
Optionen : //www.freelists.org/list/ascoders
------------------------------------------------------

------------------------------------------------------
Archiv   : //www.freelists.org/archives/ascoders/
Optionen : //www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: