home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 February / Chip_2002-02_cd1.bin / tema / mgedata / hra.swf / scripts / frame_1 / DoAction.as
Text File  |  2001-09-18  |  3KB  |  144 lines

  1. function PieceX(col)
  2. {
  3.    return xBase + col * xSpace;
  4. }
  5. function PieceY(row)
  6. {
  7.    return yBase + row * ySpace;
  8. }
  9. function Initialize()
  10. {
  11.    Congratulations.stop();
  12.    numRows = 4;
  13.    numCols = 4;
  14.    numCells = numRows * numCols;
  15.    xBase = p0._x;
  16.    yBase = p0._y;
  17.    xSpace = p0._width * 1.07;
  18.    ySpace = p0._height * 1.07;
  19.    var c = 1;
  20.    var r = 0;
  21.    var i = 1;
  22.    while(i < numCells - 1)
  23.    {
  24.       var name = "p" + i;
  25.       p0.duplicateMovieClip(name,i);
  26.       var newPiece = eval(name);
  27.       newPiece._x = PieceX(c);
  28.       newPiece._y = PieceY(r);
  29.       newPiece.PieceNumber = i + 1;
  30.       if(++c >= numCols)
  31.       {
  32.          c = 0;
  33.          r++;
  34.       }
  35.       i++;
  36.    }
  37.    posArray = [];
  38.    i = 0;
  39.    while(i < numCells - 1)
  40.    {
  41.       posArray[i] = i;
  42.       i++;
  43.    }
  44.    empty = numCells - 1;
  45. }
  46. function isWinner()
  47. {
  48.    var i = 0;
  49.    while(i < numCells - 1)
  50.    {
  51.       if(posArray[i] != i)
  52.       {
  53.          return false;
  54.       }
  55.       i++;
  56.    }
  57.    return true;
  58. }
  59. function Click(clicked)
  60. {
  61.    clicked--;
  62.    if(isWinner())
  63.    {
  64.       shuffle();
  65.       Congratulations.gotoAndStop(1);
  66.    }
  67.    else
  68.    {
  69.       pos = posArray[clicked];
  70.       emptyRow = Math.floor(empty / numCols);
  71.       emptyCol = empty - emptyRow * numCols;
  72.       clickedRow = Math.floor(pos / numCols);
  73.       clickedCol = pos - clickedRow * numCols;
  74.       rowDiff = Math.abs(clickedRow - emptyRow);
  75.       colDiff = Math.abs(clickedCol - emptyCol);
  76.       adjacent = rowDiff + colDiff == 1;
  77.       if(adjacent)
  78.       {
  79.          var piece = eval("/p" + clicked);
  80.          piece._x = PieceX(emptyCol);
  81.          piece._y = PieceY(emptyRow);
  82.          posArray[clicked] = empty;
  83.          empty = pos;
  84.          if(isWinner())
  85.          {
  86.             Congratulations.play();
  87.          }
  88.       }
  89.    }
  90. }
  91. function Shuffle()
  92. {
  93.    var cf = function(x, y)
  94.    {
  95.       if(x[1] < y[1])
  96.       {
  97.          return -1;
  98.       }
  99.       if(y[1] < x[1])
  100.       {
  101.          return 1;
  102.       }
  103.       return 0;
  104.    };
  105.    var i;
  106.    var cell = [];
  107.    i = 0;
  108.    while(i < numCells)
  109.    {
  110.       cell.push([i,Math.random()]);
  111.       i++;
  112.    }
  113.    cell.sort(cf);
  114.    var r = 0;
  115.    var c = 0;
  116.    i = 0;
  117.    while(i < numCells)
  118.    {
  119.       var piece = cell[i][0];
  120.       if(piece == numCells - 1)
  121.       {
  122.          empty = i;
  123.       }
  124.       else
  125.       {
  126.          posArray[piece] = i;
  127.          var p = eval("/p" + piece);
  128.          p._x = PieceX(c);
  129.          p._y = PieceY(r);
  130.       }
  131.       if(++c >= numCols)
  132.       {
  133.          c = 0;
  134.          r++;
  135.       }
  136.       i++;
  137.    }
  138. }
  139. if(!initialized)
  140. {
  141.    Initialize();
  142.    initialized = true;
  143. }
  144.