terça-feira, 24 de julho de 2012

Action Script Game

This code bellow you can see the basic commands in Action Script:

package
{
  import flash.display.MovieClip;
  import flash.events.MouseEvent;
  import flash.events.MouseEvent;
  import flash.geom.Rectangle;
 
   public class tabuleiro
 {
  private var _parent:MovieClip;
  private var _size:int = 90;//tamanho do tabuleiro
  private var _offsetx:int = 60;
  private var _offsety:int = 90;
  private var _pecas:Array = new Array();
  private var _init_col :int = 0;
  private var _init_lin:int = 1;
  private var _largura :int = 0;
  private var _altura:int = 1;
  private var _jogador:personagem;
  private var offsetpersonagemx=18;
  private var offsetpersonagemy=100;
 
  public function findPosition(col:int,lin:int):position
  {
   var p:position;
   for(var i:int;i<_pecas.length;i++){
    var tmp:position = _pecas[i];
    if(tmp.getCol()==col && tmp.getLinha() == lin){
     p= _pecas[i];
     break;
     }
   }
   return p;
  }
  public function explodir(obj:MovieClip):void{
   for(var i:int=0;i<_pecas.length;i++){
    var p:position = _pecas[i];//pode explodir o player???
    if(!p.isFree()){
     var alvo:MovieClip = p.Bloco;
     if(alvo.hitTestPoint(_parent.mouseX, _parent.mouseY, true))
      {
       p.setEstado(0);
       break;
      }
     }
       }
   obj.stopDrag();
   obj.visible = false;
   delete obj.prop;
  }
 
  public function tabuleiro(parent:MovieClip, tipopersonagem:int, largura:int,altura:int, size: int, offsetx: int, offsety: int):void{
   var col:int;
   var linha:int;
   var count:int=0;
   var estado:int=0.
   _parent = parent;
   _size = size;
   _offsetx = offsetx;
   _offsety = offsety;
   _largura = largura;
   _altura  =  altura ;
   _init_col = helper.randomNumber(0,_largura-2);
   _init_lin = helper.randomNumber(0,_altura-1);

   for(linha=0;linha    for(col=0;col     if((col==_init_col && linha ==_init_lin) || (col==_init_col+1 && linha == _init_lin)) //estado inicial do personagem
     {
      estado = 0;
     }else
     {
      estado = helper.randomNumber(0,1);
     }
     var p:position= new position(_parent,this,count,estado,col,linha,_size,_offsetx,_offsety);
     count++;
     _pecas.push(p);
     }
    }
   p  = findPosition(_init_col,_init_lin);
   _jogador = new personagem(_parent,tipopersonagem,p,offsetpersonagemx,offsetpersonagemy);
  } 
  public function RetanguloDrag(posAtual:position, orientacao:int):Rectangle{
  
   //vare as colunas livre a direita e esquerda
   var i:int=0;
   var posMin:position;
  
   if(orientacao==1){
    var posAcima:position = posAtual;
    var posAbaixo:position = posAtual;

    for(i=(posAtual.getLinha()-1);i>=0;i--){
     posMin = findPosition(posAtual.getCol(),i);
     if(!posMin.isFree())
      break;
     else
      posAcima = posMin;
    }
    for(i=(posAtual.getLinha()+1);i<=(_altura-1);i++){
     posMin = findPosition(posAtual.getCol(),i);
     if(!posMin.isFree())
      break;
     else
      posAbaixo = posMin;

    }
    return new Rectangle(posAcima.getX(),posAcima.getY(),0,(posAbaixo.getY()-posAcima.getY()));   
   }else
   {
    var posDireita:position = posAtual;
    var posEsquerda:position = posAtual;
    /*Acha posicao livre na horizontal*/
    for(i=(posAtual.getCol()-1);i>=0;i--){
     posMin = findPosition(i,posAtual.getLinha());
     if(!posMin.isFree())
      break;
     else
      posEsquerda = posMin;
    }
    for(i=(posAtual.getCol()+1);i<=(_largura-1);i++){
     posMin = findPosition(i,posAtual.getLinha());
     if(!posMin.isFree())
      break;
     else
      posDireita = posMin;

    }
    return new Rectangle(posEsquerda.getX(),posEsquerda.getY(),(posDireita.getX()-posEsquerda.getX()),0);   
   }
  }
  public function soltarPeca(newPosition:position):void{
   var encontrado:Boolean=false;
   for(var i:int=0;i<_pecas.length;i++){
    var p:position = _pecas[i];
     var alvo:MovieClip = p.Area;
     if(alvo.hitTestPoint(_parent.mouseX, _parent.mouseY, true))
     {
      if(p.isFree()){
       /*newPosition.Bloco.x=alvo.x;
       newPosition.Bloco.y=alvo.y;
       //oldPosition.Area.x=alvo.x;
       //oldPosition.Area.y=alvo.y;
       encontrado = true;
       trace("SOLTAR PECA22" , p.getCol(),p.getLinha());
       var idxOld:int;
       idxOld = newPosition.getID();
       trace("idxOld",idxOld,"idxNew",i);
       _pecas[i] = newPosition;
       _pecas[idxOld] = p;
       trace("tá livre??",p.isFree());
       newPosition.SwapPosition(p);*/
       }
      else
      {
       trace("hint deu certo, mas posicao ocupada!");
       }
      break;
     }
   
       }
    if(!encontrado){
     trace("hint nao deu certo!");
    // newPosition.backOri();
     }
  }
  public function reset():void{
   _init_col = helper.randomNumber(0,_largura-2);
   _init_lin = helper.randomNumber(0,_altura-1);
  
   for(var i=0;i<_pecas.length;i++){
    var obj:position = _pecas[i];
    obj.setEstadoAleatorio();   
    if((obj.getCol()==_init_col && obj.getLinha() ==_init_lin) || (obj.getCol()==(_init_col+1) && obj.getLinha() == _init_lin)) //estado inicial do personagem
    {
      obj.setEstado(0);
    }
   }
   var p:position = findPosition(_init_col,_init_lin);
   _jogador.reset(p);
  
  
  
  }
  public function imprime():void{
   trace("=================new Report Start==============");
   trace("larg:",_largura,"altura:",_altura)
   var oldlinha:int=0;
   for(var i=0;i<_pecas.length;i++){
    var obj:position = _pecas[i];
    if(obj.getLinha()!=oldlinha){
     trace("=================new line==============");
     }
    oldlinha = obj.getLinha();
    trace(i,"l=",obj.getLinha(),"c=",obj.getCol(),"isFree?",obj.isFree(),"ID:",obj.getID());
   }
   trace("=================new Report End==============");
  }
  

 }
}

Postar um comentário