December 21, 2011
0
Having implemented the 15-game in Java, I thought I would attempt the same with Flash + AS3. And the same was done swiftly and I have presented the output and the code here. This is the same as the applet version, you will have to use your arrow keys to play.










package{
 //----
 //IMPORT
 //
 import flash.display.*;
 import flash.events.*;
 import flash.text.*;
 import flash.ui.Keyboard;
 import flash.media.Sound;
 import flash.system.System;

 //Class creation
 public class Main extends MovieClip {
   
  private var SIZE:int;
  private var panelSize:int = 400;
  private var panelArray:Array = new Array(SIZE, SIZE);
   
  private var parentStage:Stage;
  private var baseClip:MovieClip;
   
  private var music:Sound = new BubbleSound();
   
  public function Main(stage, bClip, difficulty):void {
   SIZE = difficulty;
   parentStage = stage;
   baseClip = bClip;
   stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
   layout_in_grid();
    
   for(var i:int=0;i<SIZE*100;i++){//RANDOMIZE MOVES
    handleKeyPress(Math.floor(Math.random()*4) + 37);
   }
  }
   
  private function layout_in_grid():void{
   addChild(getGamePanel(SIZE));
  }
   
  private function keyPressed(e:KeyboardEvent):void{
   handleKeyPress(e.keyCode);
   music.play();
   if(areThingsInPlace()){
    baseClip.gotoAndStop(3,"Scene 1");
    stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
    this.parent.removeChild(this);
    var victory:Sound = new VictorySound();
    victory.play();
    return;
   }
  }
   
  private function handleKeyPress(keyCode:int):void{
   var emptyIndex:int = findEmptyIndex();
   var x:int = emptyIndex/SIZE;
   var y:int = emptyIndex%SIZE;
     
   switch (keyCode) {
    case Keyboard.LEFT://LEFT KEY
     if(y==SIZE-1) return;
     doSwap(x,y,x,y+1);
     break;
    case Keyboard.UP://UP KEY
     if(x==SIZE-1) return;
     doSwap(x,y,x+1,y);
     break;
    case Keyboard.RIGHT://RIGHT KEY
     if(y==0) return;
     doSwap(x,y,x,y-1);
     break;
    case Keyboard.DOWN://DOWN KEY
     if(x==0) return;
     doSwap(x,y,x-1,y);
     break;
   }
  }
   
  private function findEmptyIndex():int {
   for(var i:int=0;i<SIZE;i++){
    for (var j:int=0;j<SIZE;j++){
     if(panelArray[i][j].num_txt.text == '0'){
      return i*SIZE + j;
     }
    }
   }
   return 0;
  }
   
  private function doSwap(x:int, y:int, x1:int, y1:int):void{
   var temp:int;
   temp = panelArray[x][y].num_txt;
   panelArray[x][y].num_txt.text = panelArray[x1][y1].num_txt.text;
   panelArray[x1][y1].num_txt.text = temp;
    
   if(panelArray[x][y].num_txt.text == '0'){
    panelArray[x][y].alpha = 0;
    panelArray[x1][y1].alpha = 1;
   }else{
    panelArray[x][y].alpha = 1;
    panelArray[x1][y1].alpha = 0;
   }
     
  }
   
  private function getGamePanel(difficulty:int):MovieClip {
   var gridLayout:GridLayout = new GridLayout(SIZE, panelSize);
     
   var componentsList:Array = getRandomizedList(difficulty);
   var index:int = 0;
   for(var i:int=0;i<difficulty;i++){
    panelArray[i] = new Array(difficulty);
    for(var j:int=0;j<difficulty;j++){
     panelArray[i][j] = componentsList[index++];
     gridLayout.add(panelArray[i][j]);
    }
   }
   gridLayout.x = (parentStage.stageWidth / 2) - (gridLayout.width / 2);
     gridLayout.y = (parentStage.stageHeight / 2) - (gridLayout.height / 2);

   return gridLayout;
  }
   
  private function areThingsInPlace():Boolean{
   for(var i:int=0;i<SIZE*SIZE-1;i++){
    if(Number(panelArray[Math.floor(i/SIZE)][i%SIZE].num_txt.text) != (i+1)){
     return false;
    }
   }
   return true;
  }
   
  private function getRandomizedList(difficulty:int):Array  {
   var componentSet:Array = new Array(SIZE*SIZE);
   for(var i:int=0;i<difficulty*difficulty-1;i++){
    var square:SquareClip = new SquareClip();
    square.num_txt.text = (i+1).toString(10);
    componentSet[i] = square;
   }
   var emptyClip:SquareClip = new SquareClip();
   emptyClip.num_txt.text = (0).toString(10);
   componentSet[i] = emptyClip;
   return componentSet;
  }
 }
}



The Layout grid file which I wrote


 on my own to simulate an 


exact Grid Layout similar to the one in Java.



package{
 //----
 //IMPORT
 //
 import flash.display.*;
 import flash.events.*;
 import flash.text.*;
  
 //Class creation
 public class GridLayout extends MovieClip{
   
  private var _size:int;
  private var _size_of_grid:int;
  private var _gap:int;
  private var _itemCount:int;
  private var _totalFilled:int;
   
  public function GridLayout(size, size_of_grid):void {
   _size = size;
   _size_of_grid = size_of_grid;
   _totalFilled = 0;
  }
   
  public function add(object):int{
   if(_totalFilled == (_size*_size )){
       trace("GRID IS FULL");
     return 0;  
   }
   object.x = ( (_totalFilled % _size) ) * (_size_of_grid/_size)  ;
   object.y =  Math.floor(_totalFilled / _size) * (_size_of_grid/_size) ;
   _totalFilled++;
   addChild(object);
   return 1;
  }
   
 }
}



USEFUL LINKS 
1.www.tricksnew.blogspot.com 
2.www.freeminiproject.blogspot.com 
3.www.freeplacementpaper.blogspot.com 
4.www.annaunivquestionbanks.blogspot.com

USEFUL LINKS 
1.www.tricksnew.blogspot.com 
2.www.freeminiproject.blogspot.com 
3.www.freeplacementpaper.blogspot.com 
4.www.annaunivquestionbanks.blogspot.com

Labels

INTERNET (141) HACKING TRICKS AND TIPS (129) SYSTEM TRICKS (104) OTHERS (93) HOW TO (88) GPRS TRICKS (84) AIRTEL TRICKS (68) FREE GPRS (61) 4SHARED TRICKS (60) MOBILE TRICKS (56) HOT TRICKS (52) 3G TRICKS (50) TRICKSNEW (50) WINDOWS TRICKS (45) MOBILE HACKS (44) SOFTWARE (41) HACKING TRICKS (40) CALL TRICKS (38) MINI PROJECTS (35) FUN TRICKS (33) IEEE PROJECTS (31) FACEBOOK TRICKS (30) AIRCEL TRICKS (29) Mobile Tips (28) DOWNLOAD (27) COMPUTER TRICKS (26) AIRTEL 3G HACK(100%) WORKING (25) ALL NETWORK TRICKS (25) DOCOMO TRICKS (25) FREE SMS HACKS (23) PASSWORD HAKING (23) LEARN-HACKING TRICKS (22) OTHER PROJECTS (22) FREE CALL TRICKS (20) NOTEPAD (20) gmail (19) HACKERS (18) RELIANCE TRICKS (18) ANTI-VIRUS (16) TATA DOCOMO TRICKS (16) VIRUS (16) AIRCEL 3G HACK(100%) WORKING (15) IDEA TRICKS (15) BROWSING TRICKS (14) SMS TRICKS (14) account (14) FREE SMS WEBSITES (13) VODAFONE TRICKS (13) FREE FAKE MAIL (12) MOBILE SOFTWARE (12) secret code (12) E-MAIL (11) FREE SMS CRICKET ALERT (11) OPERA HACK (11) ACKING TRICKS (10) CRACKING TRICKS (10) INDIA MATCH LIVE STREAMING ONLINE FREE (10) BSNL TRICKS (9) E-MAIL BOMBERS (9) FREE FAKE CALLS (9) SERIALS (9) SMS BOMBERS (9) premium account (9) ALL RESULTS (8) CHEAT CODES (8) GAMES DESIGN PROJECT (8) HOTFILE TRICKS (8) MINI PROJECTS-CSE (8) MINI PROJECTS-MCA (8) MOBILE APPLICATIONS (8) MOBILE TV (8) SEND SMS NOW (8) SOURCE CODES (8) portable application software (8) CHINA MOBILE (7) FREE MOBILE TV (7) PAYPAL ACCOUNT HACK (7) TUTORIAL (7) TV ONLINE (7) BALANCE TRICKS (6) CHATTING TIPS (6) Free SMS Websites (6) GOOGLE+ (6) INTERVIEW (6) PLACEMENT TIPS (6) UNINOR TRICKS (6) WATCH TV FREE (6) YOU TUBE TRICKS (6) avoid hacking (6) MEMORY CARD (5) PAPER PRESENTATION (5) RESULTS (5) VOIP CALLS (5) command prompt (5) BLUETOOTH TIPS (4) EXAM DATES (4) LEARN-HACKING (4) MOST NEEDED TRICKS (4) SOURCECODE (4) TORRENTS (4) WEB PROJECTS (4) Amazon (3) E-BOOKS (3) FIREFOX (3) FREE CRICKET MATCH 2011 LIVE STREAMING (3) JOBS (3) MODEM (3) RECHARGE TRICKS (3) VIDEOCON TRICKS (3) VIRGIN TRICKS (3) ANDROID (2) BOMBERS (2) C#.NET (2) CRICKET LIVE STREAMING (2) FREE MOVIE DOWNLOAD (2) HR ROUND (2) IPHONE TRICKS (2) IPL MATCH FIXING (2) Inspirational Success Stories - Zero to Hero (2) JAVA CODE (2) MTNL (2) MTS TRICKS (2) Mobile Number Portability (2) ONLINE-FREE SHOPPING (2) PROJECTS (2) TATA INDICOM (2) YAHOO (2) Cashback (1) DCE (1) DOWNLOAD MENU (1) DTH TRICKS (1) FREE SUBSCRIPTION ALERTS (1) GRAMMAR (1) IMAGE TRICKS (1) LINUX (1) MATLAB PROJECTS (1) MICROCONTROLLER PROJECTS (1) MOTOROLA (1) Most Common Interview Mistakes to Avoid (1) NANOPARTICLES IN THE DRUG DELIVERY (1) ONLINE EARNING (1) PEN DRIVE (1) PHISHERS (1) RAPIDSHARE TRICKS (1) Swiggy (1) TECHNICAL JOKES (1) TOLL FREE CONTACT NUMBER LIST (1) UBUNTU (1) WHATSAPP HACK (1) Wi-Fi (1) Zomato (1)