package { import flash.display.*; import flash.text.*; import flash.geom.Point; import flash.events.*; public class WordSearch extends MovieClip { // constants static const puzzleSize:uint = 15; static const spacing:Number = 24; static const outlineSize:Number = 20; static const offset:Point = new Point(15,15); static const letterFormat:TextFormat = new TextFormat("Arial",18,0x000000,true,false,false,null,null,TextFormatAlign.CENTER); // words and grid private var wordList:Array; private var usedWords:Array; private var grid:Array; // game state private var dragMode:String; private var startPoint,endPoint:Point; private var numFound:int; // sprites private var gameSprite:Sprite; private var outlineSprite:Sprite; private var oldOutlineSprite:Sprite; private var letterSprites:Sprite; private var wordsSprite:Sprite; public function startWordSearch() { // word list wordList = ("penny,nickel,quarter,dime,dollar,bills,coins,currency,change").split(","); // set up the sprites gameSprite = new Sprite(); addChild(gameSprite); oldOutlineSprite = new Sprite(); gameSprite.addChild(oldOutlineSprite); outlineSprite = new Sprite(); gameSprite.addChild(outlineSprite); letterSprites = new Sprite(); gameSprite.addChild(letterSprites); wordsSprite = new Sprite(); gameSprite.addChild(wordsSprite); // array of letters var letters:Array = placeLetters(); // array of sprites grid = new Array(); for(var x:int=0;x 0) { if (repeatTimes-- <= 0) break; // pick a random word, location and direction var wordNum:int = Math.floor(Math.random()*wordListCopy.length); var word:String = wordListCopy[wordNum].toUpperCase(); x = Math.floor(Math.random()*puzzleSize); y = Math.floor(Math.random()*puzzleSize); var dx:int = Math.floor(Math.random()*3)-1; var dy:int = Math.floor(Math.random()*3)-1; if ((dx == 0) && (dy == 0)) continue repeatLoop; // check each spot in grid to see if word fits letterLoop:for (var j:int=0;j= puzzleSize) || (y+dy*j >= puzzleSize)) continue repeatLoop; var thisLetter:String = letters[x+dx*j][y+dy*j]; if ((thisLetter != "*") && (thisLetter != word.charAt(j))) continue repeatLoop; } // insert word into grid insertLoop:for (j=0;j 0) x += i; var y = startPoint.y; if (dy < 0) y -= i; if (dy > 0) y += i; word += grid[x][y].getChildAt(0).text; } return word; } // check word against word list public function checkWord(word:String) { // loop through words for(var i:int=0;i