actionscript3.0

테트리스 학습중 중간내용(백업용)

멋진꿈 2011. 8. 8. 23:36

package
{
 import flash.display.Shape;
 import flash.display.Sprite;
 import flash.events.*;
 import flash.events.Event;
 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
 import flash.text.TextField;
 import flash.text.TextFieldAutoSize;
 import flash.ui.Keyboard;
 import flash.ui.MouseCursor;
 import flash.utils.*;
 
 import flashx.textLayout.elements.InlineGraphicElement;
 
 import org.osmf.events.TimeEvent;

 [SWF(width=400, height=600,backgroundColor=0x000000)]
 public class tetris extends Sprite
 {
  
  private var startBtn:TextField = new TextField();
  
  //X 와 Y 의 배열의 사이즈 지정
  // 개발자가 컴파일 하기전에 x와 y의 갯수를 계산하여 입력해주세요
  private var stageXSize:Number = 20;
  private var stageYSize:Number = 30;
  
  //stage 의 총사이즈
  private var stageWidth:Number = 400;
  private var stageHeight:Number = 600;
  
  //stage에 출력될 BlockSize 정사각형
  private var BlockSize:Number = stageWidth/stageXSize;
  
  //backgroundStage
  private var backGroundStage:Sprite = new Sprite();
  
  
  
  private var terisStage:Sprite = new Sprite();
  
  //각블록의 배열
  private var rects:Array = new Array();
  
  //블록개산용 배열
  private var stageArray:Array = new Array();
  
  //블록출력용 배열
  private var stageViewArray:Array = new Array();
  
  //게임스피드 ex(1000~x):1초 = 1000
  private var gameSpeed:Number = 1000;
  
  //전체 게임시간 계산
  private var totalTime:Number = 0;
  
  
  //벽돌을 정의한 집합
  private static var list_brick:Array = new Array();
    
  //현재 벽돌의 위치
  private var nowXposition:Number=0;
  private var nowYposition:Number=0;
  
  /**
   * 현재 블록의 상태
   * stop => 현재 진행중이지 않은 상태
   * play => 진행중인상태
   */ 
  
  private var blockStage:String = "stop";
  
  
  
  //게임레벨
  private var gameLevel:Number = 1;
  
  public function tetris()
  {
   //기본 설정및 셋팅 초기화
   init();
    
   //background stage 그리기
   createGameStage();
   
   //타암아웃시작
   var intervalId:uint = setInterval(setTimeCheck, gameSpeed);

  
   
   
   
  }
  
  
  
  
  /**
   * 타임 체크
   */
  public function setTimeCheck():void
  {
   totalTime = totalTime + gameSpeed;
   
   
   //엔터이벤트
   keyEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN,true,false,40,40));
   
   //test 모디파이
   
   
   if(blockStage=="stop")
   {
   
    //핸덤 블럭생성
    makeBrock(randomRange(0,6).toString());
   }
   
   
   
  }
  
  /**
   * 테트리스 시작
   *
   */
  public function startEvent(e:MouseEvent):void
  {
   trace("start");
  }
  public function init():void
  {
   trace("init");
   
  }
  
  /**
   * 난수생성
   */
  public function randomRange(min:Number, max:Number):int
  {
   return min+Math.random()*(max-min);
  }
  
  
  
  
  
  /**
   *
   * 스테이지 그리기
   *
   */
  public function createGameStage():void
  {
   
   trace("createGameStage");
      
   
   
   
   //그래픽 그리기
   //X사이즈루핑
   for(var y:int = 0;y<stageYSize;y++)
   {
    stageArray.push(new Array());
    stageViewArray.push(new Array());
    //Y사이즈 루핑 
    for(var x:int = 0;x<stageXSize;x++)
    {
     //stageArray[y].push(new int(0));
     stageArray[y].push(new int(0));
     stageViewArray[y].push(new Sprite());
     
     
    }
    
    
   }
  
      
   //배열에 맞추어서 블록그리기
   drawBLOCK();
   
  
   //backGroundStage.addChild(rects["shape0_1"]);
   
   //keyboradEvent
   stage.addEventListener(KeyboardEvent.KEY_DOWN,keyEvent);
   //backGroundStage.addEventListener(MouseEvent.CLICK,moe);
   this.addChild(backGroundStage);
   //bakGroundStage.addChild();
  }
  
  /**
   * 화면그리기
   *
   **/
  public function drawBLOCK():void
  {
   stageArray[0][0] = 1;
   stageArray[0][1] = 1;
   stageArray[0][2] = 1;
   stageArray[0][3] = 1;
   
   
   stageArray[1][0] = 2;
   stageArray[1][1] = 2;
   stageArray[1][2] = 2;
   stageArray[1][3] = 2;
   
   stageArray[2][0] = 3;
   stageArray[2][1] = 3;
   stageArray[2][2] = 3;
   stageArray[2][3] = 3;
   
   stageArray[3][0] = 4;
   stageArray[3][1] = 4;
   stageArray[3][2] = 4;
   stageArray[3][3] = 4;
   
   stageArray[4][0] = 5;
   stageArray[4][1] = 5;
   stageArray[4][2] = 5;
   stageArray[4][3] = 5;
   
   stageArray[5][0] = 6;
   stageArray[5][1] = 6;
   stageArray[5][2] = 6;
   stageArray[5][3] = 6;
   
   
   
   for(var y:int=0;y<stageViewArray.length;y++)
   {
    for(var x:int=0;x<stageViewArray[y].length;x++)
    {
     var xposition:Number = BlockSize*x;
     var yposition:Number = BlockSize*y;
     
     //배경화면
     if(stageArray[y][x]==0)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0xFFFFFF,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();
     }
     //0xCCCCCC
     else if(stageArray[y][x]==1)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0xCCCCCC,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();
     }
     //0xFF00FF
     else if(stageArray[y][x]==2)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0xff00ff,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();
     }
     //0x00ff00
     else if(stageArray[y][x]==3)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0x00ff00,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();
     }
     //0x4b0082
     else if(stageArray[y][x]==4)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0x4b0082,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();
     }
     //0x4b0082
     else if(stageArray[y][x]==5)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0x000080,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();
     }
     else if(stageArray[y][x]==6)
     {
      stageViewArray[y][x].graphics.lineStyle(1);
      stageViewArray[y][x].graphics.beginFill(0x8a2be2,1);
      stageViewArray[y][x].graphics.drawRect(xposition,yposition,BlockSize,BlockSize);
      stageViewArray[y][x].graphics.endFill();

     }
     else
     {
      trace("err 지정되지 않는 블록이 발생되었습니다.");
     }
     
     backGroundStage.addChild(stageViewArray[y][x]);
     
     
    }
   }
  }
  
  
  /**
   *
   *
   *
   */
  public function createConfigStage():void
  {
   
  }
  
  /**
   * 전체 스테이지 지우기
   *
   */
  public function clearStage():void
  {
   
  }
  
  /**
   * 키보드 이벤트를 체크및 필요함수 실행
   */
  public function keyEvent(e:KeyboardEvent):void
  {
  
   
   switch(e.keyCode)
   {
    //left
    case 37:
     trace("left");
    break;
    
    //right
    case 39:
     trace("right");
    break;
    //up
    case 38:
     trace("up");
    break;
    
    //down
    case 40:
     trace("down");
    break;
    
    //enter
    case 13:
     trace("enter");
    break;
    
    //sp
    case 32:
     trace("sp");
    break;
    
    default:
     trace("==>"+e.keyCode);
    break;
     
     
   }
   
   //trace("Key Pressed: " + String.fromCharCode(e.charCode) +         " (character code: " + e.charCode + ")");

   
   
  }
  
  
  
  
  /**
   *
   *
   *
   *
   */
  public function makeBrock(brockType:String):void
  {
   
   
   //블록이 시작할시점
   
   nowXposition = int(stageXSize/2);
   nowYposition = int(stageYSize);
   
   
 
   var makeBlockArray:Array = new Array(
    new Array( new Array(0,1,0,0),
       new Array(0,1,0,0),
       new Array(0,1,0,0),
       new Array(0,1,0,0)),
    
    new Array(
       new Array(0,2,2,0),
       new Array(0,2,2,0),
       new Array(0,0,0,0),
       new Array(0,0,0,0)),
    
    new Array(
       new Array(3,0,0,0),
       new Array(3,3,0,0),
       new Array(0,3,0,0),
       new Array(0,0,0,0)),
    
    new Array(
       new Array(0,4,0,0),
       new Array(4,4,0,0),
       new Array(4,0,0,0),
       new Array(0,0,0,0)),
    
    new Array(
       new Array(0,5,0,0),
       new Array(5,5,0,0),
       new Array(0,5,0,0),
       new Array(0,0,0,0)),
    
    new Array(
       new Array(6,6,0,0),
       new Array(0,6,0,0),
       new Array(0,6,0,0),
       new Array(0,0,0,0)),
    
    new Array(
       new Array(7,7,0,0),
       new Array(7,0,0,0),
       new Array(7,0,0,0),
       new Array(0,0,0,0))
   );
   
   
   
   for(var i:int = 0; i<makeBlockArray[brockType].length;i++)
   {
    
    trace(makeBlockArray[brockType][i]);
    
   }
   
   
   
   //블록테이블
   blockStage ="play";
   
    
   
   
   
    
   
  }
  
  public function moe(e:MouseEvent):void
  {
   trace(e.localX+"/"+e.localY);
   
  }
 }
}