[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 : http://www.freelists.org/archives/ascoders/
>>Optionen : http://www.freelists.org/list/ascoders
>>------------------------------------------------------
>>
>
> ------------------------------------------------------
> Archiv : http://www.freelists.org/archives/ascoders/
> Optionen : http://www.freelists.org/list/ascoders
> ------------------------------------------------------
>
> ------------------------------------------------------
> Archiv : http://www.freelists.org/archives/ascoders/
> Optionen : http://www.freelists.org/list/ascoders
> ------------------------------------------------------
>
--
Ralf Bokelberg
Progammierer
0221 530 15 35
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- References:
- [ascoders] Re: tilebasiertes game, rekursives wirrwar
- From: Ralf Bokelberg
Other related posts:
- » [ascoders] tilebasiertes game, rekursives wirrwar
- » [ascoders] Re: tilebasiertes game, rekursives wirrwar
- » [ascoders] Re: tilebasiertes game, rekursives wirrwar
- » [ascoders] Re: tilebasiertes game, rekursives wirrwar
- » [ascoders] Re: tilebasiertes game, rekursives wirrwar
- [ascoders] Re: tilebasiertes game, rekursives wirrwar
- From: Ralf Bokelberg