home *** CD-ROM | disk | FTP | other *** search
- function buildPuzzle()
- {
- blockcount = 0;
- var startx = 0;
- var starty = 0;
- blocksize = 300 / puzzlesize;
- y = 0;
- while(y < puzzlesize)
- {
- x = 0;
- while(x < puzzlesize)
- {
- newname = "block" + y + x;
- duplicateMovieClip("block",newname,16384 + ++block_count);
- this[newname]._x = startx + blocksize * x;
- this[newname]._y = starty + blocksize * y;
- this[newname].x = x;
- this[newname].y = y;
- this[newname].photo.gotoAndStop(_parent.preview._currentframe);
- this[newname].photo._x = blocksize * x * -1;
- this[newname].photo._y = blocksize * y * -1;
- this[newname].gotoAndStop(puzzlesize - 2);
- x++;
- }
- y++;
- }
- this[newname]._alpha = 0;
- this[newname]._visible = false;
- blankblock = newname;
- }
- function checkPuzzle()
- {
- wrong = 0;
- y = 0;
- while(y < puzzlesize)
- {
- x = 0;
- while(x < puzzlesize)
- {
- if(puzzlearray[y][x] != "block" + y + x)
- {
- wrong++;
- }
- x++;
- }
- y++;
- }
- _parent.percentcompleted = Math.round(100 * ((puzzlesize * puzzlesize - wrong) / (puzzlesize * puzzlesize))) + "%";
- if(0 < wrong)
- {
- return false;
- }
- return true;
- }
- function reset()
- {
- y = 0;
- while(y < puzzlesize)
- {
- x = 0;
- while(x < puzzlesize)
- {
- this["block" + y + x].removeMovieClip();
- x++;
- }
- y++;
- }
- _parent.movecount = 0;
- _parent.percentcompleted = "";
- }
- function slide(b)
- {
- if(solved == true)
- {
- return undefined;
- }
- if(this[b].motion == true)
- {
- return undefined;
- }
- if(b == blankblock)
- {
- return undefined;
- }
- var cx = this[b].x;
- var cy = this[b].y;
- var bx = this[blankblock].x;
- var by = this[blankblock].y;
- if(cx == bx)
- {
- if(by < cy)
- {
- swapBlocks(0,1,b);
- }
- else if(cy < by)
- {
- swapBlocks(0,-1,b);
- }
- }
- else
- {
- if(cy != by)
- {
- return undefined;
- }
- if(bx < cx)
- {
- swapBlocks(1,0,b);
- }
- else if(cx < bx)
- {
- swapBlocks(-1,0,b);
- }
- }
- _parent.movecount = _parent.movecount + 1;
- if(checkPuzzle())
- {
- this[blankblock].reveal = true;
- solved = true;
- RevealPicture();
- _parent.sounds.gotoAndPlay("win");
- }
- }
- function RevealPicture()
- {
- y = 0;
- while(y < puzzlesize)
- {
- x = 0;
- while(x < puzzlesize)
- {
- this["block" + y + x].outline.gotoAndPlay("fade");
- x++;
- }
- y++;
- }
- }
- function swapBlocks(x, y, b)
- {
- var bx = this[blankblock].x;
- var by = this[blankblock].y;
- var swapblock = puzzlearray[by + y][bx + x];
- var tempx = this[blankblock]._x;
- var tempy = this[blankblock]._y;
- this[blankblock]._x = this[swapblock]._x;
- this[blankblock]._y = this[swapblock]._y;
- this[swapblock].newx = tempx;
- this[swapblock].newy = tempy;
- this[swapblock].x = bx;
- this[swapblock].y = by;
- this[swapblock].motion = true;
- this[swapblock].mx = x;
- this[swapblock].my = y;
- this[blankblock].x = bx + x;
- this[blankblock].y = by + y;
- puzzlearray[by][bx] = swapblock;
- puzzlearray[by + y][bx + x] = blankblock;
- if(swapblock != b)
- {
- swapBlocks(x,y,b);
- }
- }
- function shuffle()
- {
- shufflecomplete = false;
- j = 0;
- while(100 >= j)
- {
- bx = this[blankblock].x;
- by = this[blankblock].y;
- do
- {
- xory = random(2);
- if(xory == 0)
- {
- rx = bx;
- ry = random(2);
- if(ry == 0)
- {
- ry = by - 1;
- }
- else
- {
- ry = by + 1;
- }
- }
- else
- {
- ry = by;
- rx = random(2);
- if(rx == 0)
- {
- rx = bx - 1;
- }
- else
- {
- rx = bx + 1;
- }
- }
- }
- while(rx >= puzzlesize or rx < 0 or ry < 0 or ry >= puzzlesize);
-
- swapblock = puzzlearray[ry][rx];
- puzzlearray[ry][rx] = blankblock;
- this[blankblock].x = rx;
- this[blankblock].y = ry;
- puzzlearray[by][bx] = swapblock;
- this[swapblock].x = bx;
- this[swapblock].y = by;
- j++;
- }
- shufflecomplete = true;
- y = 0;
- while(y < puzzlesize)
- {
- x = 0;
- while(x < puzzlesize)
- {
- this[puzzlearray[y][x]]._x = blocksize * x;
- this[puzzlearray[y][x]]._y = blocksize * y;
- x++;
- }
- y++;
- }
- checkPuzzle();
- solved = false;
- _parent.timerclip.startTime = getTimer();
- _parent.timerclip.seconds = 0;
- _parent.timerclip.minutes = 0;
- }
- function BuildArray()
- {
- puzzlearray = new Array();
- y = 0;
- while(y < puzzlesize)
- {
- puzzlearray[y] = new Array();
- x = 0;
- while(x < puzzlesize)
- {
- thisblock = "block" + y + x;
- tx = this[thisblock].x;
- ty = this[thisblock].y;
- puzzlearray[ty][tx] = this[thisblock]._name;
- x++;
- }
- y++;
- }
- }
-