Changeset 14253

Show
Ignore:
Timestamp:
06/19/08 16:05:24 (5 years ago)
Author:
suztomo
Message:

lang/actionscript/FPazzle : implemented answer check.

Location:
lang/actionscript/FPazzle/trunk/src
Files:
2 added
3 modified

Legend:

Unmodified
Added
Removed
  • lang/actionscript/FPazzle/trunk/src/FPazzle.mxml

    r14240 r14253  
    1414                } 
    1515 
    16  
    1716                ]]> 
    1817        </mx:Script> 
  • lang/actionscript/FPazzle/trunk/src/net/suztomo/FPazzle/FBoard.as

    r14240 r14253  
    1212                private var x_num:uint, y_num:uint; 
    1313                private var p_width:Number, p_height:Number; 
     14                private static var answerDiff:Number =5; 
    1415 
    15                 public var pieces:Array; 
     16                public var pieces:PazzleMap; 
    1617 
    1718                public function FBoard(_x_num:uint, _y_num:uint) 
     
    2425                        super(); 
    2526                         
    26                         pieces = new Array(); 
     27                        pieces = new PazzleMap(x_num, y_num); 
    2728                } 
    2829                 
     
    4445                        } 
    4546                         
    46                         pieces.push(piece); 
     47                        pieces.setElement(_x_index, _y_index, piece); 
    4748                } 
    4849                 
     
    5051                { 
    5152                        var min_x:Number = p_width, min_y:Number = p_height; 
    52                         var range:Number = 600; 
     53                        var range:Number = 400; 
    5354                        for (var i:uint=0; i < x_num; i++) { 
    5455                                for (var j:uint=0; j < y_num; j++) { 
    55                                         putPiece(min_x + range*Math.random(), min_y + range*Math.random(), i, j); 
     56                                        putPiece(min_x + range*Math.random(), min_y + range*Math.random(), j, i); 
    5657                                } 
    5758                        } 
    5859                } 
    59                  
     60 
     61                public function isAnswer():Boolean 
     62                { 
     63                        var tmp1:FPiece, tmp2:FPiece; 
     64 
     65                        for (var i:uint = 0; i<y_num; i++) { 
     66                                for (var j:uint = 0; j<x_num; j++) { 
     67                                        tmp1 = pieces.getElement(j, i) as FPiece; 
     68                                        if (tmp1.rotation != 0) return false; 
     69                                         
     70                                        if (j != x_num-1) { 
     71                                                tmp2 = pieces.getElement(j+1, i) as FPiece; 
     72                                                if (Math.abs(tmp1.x + p_width - tmp2.x) > answerDiff 
     73                                                        || Math.abs(tmp1.y - tmp2.y) > answerDiff){ 
     74                                                                return false; 
     75                                                } 
     76                                        } 
     77                                         
     78                                        if (i != y_num-1) { 
     79                                                tmp2 = pieces.getElement(j, i+1) as FPiece; 
     80                                                if (Math.abs(tmp1.x - tmp2.x) > answerDiff 
     81                                                        || Math.abs(tmp1.y + p_height - tmp2.y) > answerDiff){ 
     82                                                        return false; 
     83                                                } 
     84                                        } 
     85                                } 
     86                        } 
     87                        return true; 
     88                } 
    6089        } 
    6190} 
  • lang/actionscript/FPazzle/trunk/src/net/suztomo/FPazzle/FPiece.as

    r14240 r14253  
    11package net.suztomo.FPazzle 
    22{ 
     3        import mx.controls.*; 
    34        import flash.display.*; 
    45        import flash.events.*; 
     
    1314                private var p_width:Number, p_height:Number; 
    1415                private var x_index:uint, y_index:uint; 
    15                  
     16                private var board:FBoard; 
    1617 
    1718                public function FPiece(_pieceImage:BitmapData, _p_width:Number, _p_height:Number, _x_index:uint = 0, _y_index:uint = 0) 
     
    2526                        y_index = _y_index; 
    2627 
    27                         this.addEventListener(MouseEvent.MOUSE_DOWN, onClick); 
    28                         this.addEventListener(MouseEvent.MOUSE_UP, onRelese); 
     28                        addEventListener(MouseEvent.MOUSE_DOWN, onClick); 
     29                        addEventListener(MouseEvent.MOUSE_UP, onRelese); 
     30                        addEventListener(Event.ADDED, onAdded); 
     31/* 
    2932                        graphics.beginFill(0x551199, 1); 
    30                         graphics.drawRect(- p_width/2, - p_height/2, p_width, p_height); 
     33                        graphics.drawRect(- p_width/2, - p_height/2, p_width, p_height);*/ 
    3134                        //addChild(new RotateController(this)); 
     35                        setPazzleImage(); 
    3236 
    33                         setPazzleImage(); 
    3437                } 
    3538 
     
    4851                } 
    4952 
     53                private function onAdded(event:Event):void 
     54                { 
     55                        board = parent as FBoard; 
     56                } 
     57                 
    5058                private function onClick(event:Event):void 
    5159                { 
     
    5765                        this.stopDrag(); 
    5866                        snap(); 
     67                        if (board.isAnswer()) { 
     68                                Alert.show("Completed"); 
     69                        } 
    5970                } 
    6071                 
     
    7182                        var y_snap:Number; 
    7283 
    73                         for (i=0; i<parent.numChildren; i++) { 
     84                        for (i=0; i<board.numChildren; i++) { 
    7485                                tmp = parent.getChildAt(i); 
    7586                                x_snap = 0;