PDA

Volledige versie bekijken : Schuifpuzzel


Pimm
%Europe/Berlin %725 %2005, 18:25
Lo.
Ik ben begonnen aan een schuifpuzzel, echter ik heb vannacht weinig geslapen (omdat ik schuifpuzzels heb zitten spelen) en ik denk niet zo helder meer nade. Daardoor heb ik dus eigenlijk geen idee hoe ik de volgende code ga schrijven (de code die de stukjes verplaatst).
Als iemand er even met een frisse gedachtegang naar kan kijken en die magische paar regeltjes kan neerzetten ben ik verschrikkelijk blij.

Code die ik tot nu toe heb:function buildpuzzle(emptyspace) {
_root.emptyspace = emptyspace;
unuseddepth = 10;
for (y=1; y<5; y++) {
for (x=1; x<5; x++) {
if (String(x)+String(y)<>emptyspace) {
this.attachMovie("piece", "piece"+String(x)+String(y), unuseddepth);
unuseddepth++;
this["piece"+String(x)+String(y)].gotoAndStop(Number(x)+(Number(y-1)*4));
this["piece"+String(x)+String(y)].pieceholder.loadMovie("backs.swf");
}
}
}
}
function movepiece(to) {
empty_x = String(emptyspace).substr(0, 1);
empty_y = String(emptyspace).substr(1, 1);
// Uhm, ik ben nu wel begonnen met dit script
// maar ik heb eigenlijk geen idee hoe ik dit ga doen...
}
buildpuzzle(41);Even voor de duidelijkheid, die movepiece functie moet dit het lege blokje en een gevuld blokje eraan grenzend wisselen (maar dus moet hetgene dat op het gevulde blokje staat wel mee gaan). Als iemand zou kunnen maken dat hij alleen naar links kan ofzo zou dat al fijn zijn, dan kan ik de rest wel zelf.

Om het proberen voor jullie wat makkelijker te maken heb ik de source geupload.

Maar dus nog even voor de duidelijkheid: Als het blokje één rechtsboven staat en blokje twee daar links van, en ze ruilen om (en dus gaat blokje twee naar rechtsboven) moet blokje twee er nogsteeds hetzelfde uit zien als toen hij op die andere plaats stond (snap je?), anders was het heel erg makkelijk geweest en had ik het waarschijnlijk zelfs nu zelf kunnen maken...

Dauntless
%Europe/Berlin %828 %2005, 20:53
Ik zou het zo doen:

Je laad je image in. Dan maak je 9 mc's daarvan die telkens op de juiste plaats een mask hebben (kan je het setMask() doen). (En met de nieuwe flash kan je hem zelfs gewoon slicen! :cool:). De middelste sla je dan eventueel over zodat je een lege plaats hebt. Dan iets van:

tegel . click = functie
als ( legeplaats == buur)
verwissel x en y van lege plaats & tegel
stop als
stop clik

Pimm
%Europe/Berlin %892 %2005, 22:25
Hmmm... dank je Dauntless.
Ik heb mijn gedachte weder opgefrist en ik denk dat het me wel weder gaat lukken wegens de aanpassing aan de eerste function (namelijk:)function buildpuzzle(emptyspace) {
_root.emptyspace = emptyspace;
unuseddepth = 10;
for (y=1; y<5; y++) {
for (x=1; x<5; x++) {
if (String(x)+String(y)<>emptyspace) {
this.attachMovie("piece", "piece"+Number(unuseddepth-9), unuseddepth);
this["piece"+Number(unuseddepth-9)].pieceholder._x = 0-(x-1)*50;
this["piece"+Number(unuseddepth-9)]._x = (x-1)*50;
this["piece"+Number(unuseddepth-9)].pieceholder._y = 0-(y-1)*50;
this["piece"+Number(unuseddepth-9)]._y = (y-1)*50;
this["piece"+Number(unuseddepth-9)].pieceholder.loadMovie("backs.swf");
trace(this["piece"+Number(unuseddepth-9)]._name);
unuseddepth++;
}
}
}
}Nu weet ik wel weer hoe ik dat ga doen :)

Flashingback
%Europe/Berlin %905 %2005, 22:43
is het niet overzichtelijker op deze manier
dfunction buildpuzzle(emptyspace) {
_root.emptyspace = emptyspace;
unuseddepth = 10;
for (y=1; y<5; y++) {
for (x=1; x<5; x++) {
if (String(x)+String(y)<>emptyspace) {
var piece = this.attachMovie("piece", "piece"+Number(unuseddepth-9), unuseddepth);
piece.pieceholder._x = 0-(x-1)*50;
piece._x = (x-1)*50;
piece.pieceholder._y = 0-(y-1)*50;
piece._y = (y-1)*50;
piece.pieceholder.loadMovie("backs.swf");
trace(this["piece"+Number(unuseddepth-9)]._name);
unuseddepth++;
}
}
}
}

Pimm
%Europe/Berlin %920 %2005, 23:05
is het niet overzichtelijker op deze manier
dfunction buildpuzzle(emptyspace) {
_root.emptyspace = emptyspace;
unuseddepth = 10;
for (y=1; y<5; y++) {
for (x=1; x<5; x++) {
if (String(x)+String(y)<>emptyspace) {
var piece = this.attachMovie("piece", "piece"+Number(unuseddepth-9), unuseddepth);
piece.pieceholder._x = 0-(x-1)*50;
piece._x = (x-1)*50;
piece.pieceholder._y = 0-(y-1)*50;
piece._y = (y-1)*50;
piece.pieceholder.loadMovie("backs.swf");
trace(this["piece"+Number(unuseddepth-9)]._name);
unuseddepth++;
}
}
}
}Gaat niet werken, die zooi zit er niet voor niets achter. Er zijn 15 pieces en daar komt het kengetal achter.

Update: ik kan de pieces al bewegen!!één

vic76#1
%Europe/Berlin %539 %2006, 12:56
Hallo allemaal!

Is het al iemand gelukt om een werkende versie van een schuifpuzzel te bouwen?
Heb het zelf een hele tijd geleden ook eens geprobeerd, maar heb toen de hoop maar opgegeven :(
MVgr,

Vic.

Laiverd
%Europe/Berlin %543 %2006, 13:02
Dat is me ooit wel eens gelukt ja.