spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / javascript / column37


JavaScript and Frames, Part II (9)

Developer News
News Flash: Adobe Has iPhone Workaround
Adobe's Flash 10.1 Goes Mobile (Minus iPhone)
A Salute to Visionary CEOs

The Code

<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!--
pictures = new Array("hose.gif", "propellorairplane.gif",
  "motorcycle2034.gif", "thunderbird.gif",
  "jeep.gif", "z.gif", "wagon.gif", "clock.gif",
  "house.gif", "mustang.gif", "bike.gif", "antique.gif",
  "fuse.gif", "gargage.gif", "citroen.gif", "baloon.gif",
  "cabriolet.gif", "tractortrailer.gif", "housefly.gif", "tractor.gif",
  "doubledeckbus.gif", "boat.gif", "officechair.gif", "schoolbus.gif",
  "ferrari.gif", "plumbing.gif", "semitrailer.gif", "radio.gif",
  "unmbrella.gif", "vase.gif", "airplane.gif", "apple.gif"
);
var dim1 = 8;
var dim2 = 8;
var mixIteration = 500;
var source, target;
var rowFound, colFound;
var nowRevealed = false;
var revealedLocation, revealedRow, revealedCol;
var tobeRevealedLocation, tobeRevealedRow, tobeRevealedCol;
var tobeCoveredLocation, tobeCoveredRow, tobeCoveredCol;
var bingos = 0;
var leftBingos = 0;
var rightBingos = 0;
var attempts = 0;
var cover = "doc50x50.gif";
var blank = "blank.gif";
var coverPause = 1000;
var blockClicking = false;
var minPause = 4000;

boardLength = dim1 * dim2;
halfBoardLength = boardLength/2;
assignAr = new Array(boardLength);
var players = 0;
while (players < 1 || players > 2)
  players = prompt("Enter number of players (1 or 2)", 1);
if (players == 2) alert("Rule 1: The player on the left starts.
  Rule 2: The match maker gets to go next");
  // (The above two lines should be joined as one line.
  // They have been split for formatting purposes.)
var nowPlaying = "left";

function fillBoard() {
  for (var i = 0; i < halfBoardLength; i++) {
    assignAr[i] = i;
    assignAr[halfBoardLength + i] = i;
  }
}

function coverBoard() {
  for (var i = 0; i < dim1; i++) {
    for (var j = 0; j < dim2; j++) {
      top.frames[j].frames[i].document.images[0].src = cover;
    }
  }
}

function loadPictures() {
  for (var i = 0; i < dim1; i++) {
    for (var j = 0; j < dim2; j++) {
      var location = i * dim1 + j;
      top.frames[j].frames[i].document.images[0].src =
        pictures[assignAr[location]];
  // (The above two lines should be joined as one line.
  // They have been split for formatting purposes.)
    }
  }
}

function initialize() {
  fillBoard();
  loadPictures()
  setTimeout("coverBoard()", minPause);
  mix();
  revealedNow = "false";
  attempts = 0;
  bingos = 0;
  leftBingos = 0;
  rightBingos = 0;
  nowPlaying = "left";
  if (players == 1) top.status = "You have tried 0 times"
  else top.status =   "Left:0  Right:0";
}

function mix() {
  for (var j = 0; j <= mixIteration; j++) {
    source = Math.round(Math.random() * (boardLength-1));
    target = Math.round(Math.random() * (boardLength-1));
    temp = assignAr[source];
    assignAr[source] = assignAr[target];
    assignAr[target] = temp;
  }
}

function findClickedBox(boxObject) {
  for (var i = 0; i < dim1; i++) {
    for (var j = 0; j < dim2; j++) {
      if (boxObject == top.frames[i].frames[j]) {
        rowFound = j;
        colFound = i;
        if (blockClicking == false)
        if (top.frames[i].frames[j].document.images[0].src.indexOf(blank)
          == -1)
  // (The above two lines should be joined as one line.
  // They have been split for formatting purposes.)
            revealBox(rowFound, colFound);
        return;
      }
    }
  }
}

function revealBox(rowFound, colFound) {
  var newLocation = rowFound * dim1 + colFound;
  tobeRevealedLocation = newLocation;
  tobeRevealedRow = rowFound;
  tobeRevealedCol = colFound;
  revealNow();
  if (nowRevealed == false) {
    nowRevealed = true;
    revealedLocation = newLocation;
    revealedRow = rowFound;
    revealedCol = colFound;
  }
  else {
    if (newLocation == revealedLocation) return;
    blockClicking = true;
    if (assignAr[revealedLocation] == assignAr[newLocation]) {
      setTimeout("removeCards()", coverPause);
      bingos++;
      if (nowPlaying == "left") {
        leftBingos++;
      }
      else {
        rightBingos++;
      }
      if (players == 2) top.status = "Left: " + leftBingos + "
           Right: " + rightBingos;
  // (The above two lines should be joined as one line.
  // They have been split for formatting purposes.)
      if (bingos == halfBoardLength) {
        if (players == 2)
          alert("Congratulations! The " + nowPlaying + " won.
            Left Player: " + leftBingos + " Right Player: " + rightBingos);
  // (The above two lines should be joined as one line.
  // They have been split for formatting purposes.)
        else alert("Congratulations. You made it in " + attempts);
        initialize();
      }
    }
    else {
      attempts++;
      if (players == 1)
        if (attempts == 1) top.status = "You have tried one time"
        else top.status = "You have tried " + attempts + " times";
      setTimeout("coverNow()", coverPause);
    }
  }
}

function revealNow() {
top.frames[tobeRevealedCol].frames[tobeRevealedRow].document.
  images[0].src = pictures[assignAr[tobeRevealedLocation]];
  // (The above two lines should be joined as one line.
  // They have been split for formatting purposes.)
}

function coverNow() { top.frames[tobeRevealedCol].frames
  [tobeRevealedRow].document.images[0].src = cover; top.frames[revealedCol]
  .frames[revealedRow].document.images[0].src = cover;
  // (The above three lines should be joined as one line.
  // They have been split for formatting purposes.)
nowRevealed = false;
blockClicking = false;
if (nowPlaying == "left") nowPlaying = "right"
else nowPlaying = "left";
}

function removeCards() { top.frames[tobeRevealedCol].frames[tobeRevealedRow].
  document.images[0].src = blank; top.frames[revealedCol].frames[revealedRow]
  .document.images[0].src = blank;
  // (The above three lines should be joined as one line.
  // They have been split for formatting purposes.)
nowRevealed = false;
blockClicking = false;
}
onload = initialize;
// -->
</SCRIPT>
<TITLE> memory game board </TITLE>

</HEAD>
<FRAMESET COLS="50, 50, 50, 50, 50, 50, 50, 50" FRAMEBORDER="no"
  FRAMESPACING="1">
  <FRAME SRC="column3.html" NAME="column0" SCROLLING="no"
    MARGINHEIGHT="1" MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column1" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column2" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column3" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column4" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column5" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column6" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
  <FRAME SRC="column3.html" NAME="column7" SCROLLING="no" MARGINHEIGHT="1"
    MARGINWIDTH="1">
</FRAMESET>
</HTML>

http://www.internet.com

Produced by Yehuda Shiran and Tomer Shiran

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Building a Banking Application Home Page with OOP · Mixing Scripting Languages · Review: phpFox, a Social Networking CMS with all the Bells and Whistles
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Enterprise 2.0: Social Networking in the Cloud · BroadSoft Marketplace Hastens Pace of Telephony Innovation · Review: HTC Hero for Sprint


Created: April 5, 1999
Revised: April 5, 1999

URL: http://www.webreference.com/js/column37/initialize.html