본문 바로가기

OM

가위바위보 게임


RSP.as==============================================================================================

package code
{
 import flash.display.*;
 import flash.events.*;
 import flash.utils.*;
 import flash.net.*;
 
 public class RSP extends Sprite
 {  
  private var coins:int;
  private var gameMode:String;
 
  private var intervalObj:uint;
 
  public function RSP()
  {   
   coins = 5;
   coin.addCoinNum(coins);
   count_mc.live(this);
   
   rock_btn.buttonMode = true;
   scissor_btn.buttonMode = true;
   paper_btn.buttonMode = true;
   link_btn.buttonMode = true;
   
   rock_btn.addEventListener(MouseEvent.CLICK, clickHandler);
   scissor_btn.addEventListener(MouseEvent.CLICK, clickHandler);
   paper_btn.addEventListener(MouseEvent.CLICK, clickHandler);
   link_btn.addEventListener(MouseEvent.CLICK, clickHandler);
   
   startGame();
  }
 
  private function startGame():void
  {
   gameMode = "WAIT";
   dis_mc.play();
   initCoinHole();
  }
 
  public function addCoins(coinNum:int):void
  {   
   coins += coinNum;
   coin.addCoinNum(coins);
   startGame();
  }
 
  private function initCoinHole():void
  {
   coinHole_mc.gotoAndStop(1);
   
   if(coins > 0)
   {
    coinHole_mc.buttonMode = true;
    coinHole_mc.addEventListener(MouseEvent.ROLL_OVER, overHandler);
    coinHole_mc.addEventListener(MouseEvent.ROLL_OUT, outHandler);
    coinHole_mc.addEventListener(MouseEvent.CLICK, clickHandler);
   }  
  }
 
  private function resetCoinHole():void
  {
   coinHole_mc.buttonMode = false;
   coinHole_mc.removeEventListener(MouseEvent.ROLL_OVER, overHandler);
   coinHole_mc.removeEventListener(MouseEvent.ROLL_OUT, outHandler);
   coinHole_mc.removeEventListener(MouseEvent.CLICK, clickHandler);
  }
 
  private function overHandler(e:MouseEvent):void
  {
   var obj:Object = e.target;
   obj.gotoAndStop(2);
  }
 
  private function outHandler(e:MouseEvent):void
  {
   var obj:Object = e.target;
   obj.gotoAndStop(1);
  }
 
  private function selectHand(hand:String):void
  {
   if(gameMode == "READY" || gameMode == "RETRY")
   {
    if(gameMode == "READY")
    {
     var go:Go = new Go();
     go.play();
    }
    else{
     var reGo:ReGo = new ReGo();
     reGo.play();
    }   
   
    var match:int = dis_mc.getMatch(hand);
   
    switch(match)
    {
     case 0 :
      intervalObj = setInterval(playAgain, 500, "win");
      break;
     case 1 :
      intervalObj = setInterval(playAgain, 500, "lose");
      break;
     case 2 :
      intervalObj = setInterval(playAgain, 500, "draw");
      break;
    }
   
    gameMode = "RESULT";
   }  
  }
   
  private function playAgain(res:String):void
  {
   clearInterval(intervalObj);
   
   if(res == "win")
   {
    count_mc.winCount();
   }
   else if(res == "lose"){
    var lose:Lose = new Lose();
    lose.play();
   
    startGame();
   }
   else if(res == "draw"){
    var reReady:ReReady = new ReReady();
    reReady.play();
   
    dis_mc.play();
    gameMode = "RETRY";
   }
  }
 
  private function insertCoin():void
  {
   if(gameMode == "WAIT")
   {
    coinHole_mc.gotoAndStop(1);
    coins--;
    coin.removeCoinNum();
    resetCoinHole();
   
    var ready:Ready = new Ready();
    ready.play();
   
    gameMode = "READY";
   }
  }
 
  private function clickHandler(e:MouseEvent):void
  {
   var tObj:Object = e.currentTarget;
   
   switch(tObj)
   {
    case coinHole_mc :
     insertCoin();
     break;
    case rock_btn :
     selectHand("rock");
     break;
    case scissor_btn :
     selectHand("scissor");
     break;
    case paper_btn :
     selectHand("paper");
     break;
    case link_btn :
     navigateToURL(new URLRequest("http://shallaazm.tistory.com"));
     break;
   }
  }
 }
}

=====================================================================================================

Coin.as=============================================================================================

package code
{
 import flash.display.*;
 import flash.events.*;
 
 public class Coin extends MovieClip
 {
  private var targetFrame:int;
 
  public function Coin()
  {
   this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  }
 
  public function addCoinNum(targetFrame:int):void
  {   
   if(targetFrame > 0)
   {
    this.targetFrame = (targetFrame + 1);
    play();
   }
  }
 
  public function removeCoinNum():void
  {
   var tFrame:int = this.currentFrame;
   
   if(tFrame > 1)
   {
    this.gotoAndStop(tFrame - 1);
   }  
  }
 
  protected function enterFrameHandler(e:Event):void
  {
   if(this.currentFrame == targetFrame)
   {
    stop();
   }
  }
 }
}

=====================================================================================================

Dis.as===============================================================================================

package code
{
 import flash.display.*;
 import flash.events.*;
 
 public class Dis extends MovieClip
 {  
  public function getMatch(hand:String):int
  {
   this.stop();
   
   var match:int;
   
   switch(this.currentFrame)
   {
    case 1 :
     match = matchHand(hand, "rock");
     break;
    case 2 :
     match = matchHand(hand, "scissor");
     break;
    case 3 :
     match = matchHand(hand, "paper");
     break;
   }
   
   return match;
  }
 
  private function matchHand(user:String, com:String):int
  {
   var res:int;
   
   if(user == com)
   {
    res = 2;
   }
   else if(user == "rock"){
    if(com == "scissor")
    {
     res = 0;
    }
    else{
     res = 1;
    }
   }
   else if(user == "scissor"){
    if(com == "paper")
    {
     res = 0;
    }
    else{
     res = 1;
    }
   }
   else if(user == "paper"){
    if(com == "rock")
    {
     res = 0;
    }
    else{
     res = 1;
    }
   }
   
   return res;
  }
 }
}

=====================================================================================================

Count.as============================================================================================

package code
{
 import flash.display.*;
 import flash.events.*;
 import flash.utils.*;
 
 public class Count extends MovieClip
 {
  private var intervalObj:uint;
 
  private var owner;
 
  public function live(ref:*):void
  {
   this.owner = ref;
  }
 
  public function Count()
  {
   stop();
  }
 
  public function winCount():void
  {
   var viva:Viva = new Viva();
   viva.play();
   
   play();
   intervalObj = setInterval(setCoinsNum, 5000);
  }
 
  private function setCoinsNum():void
  {
   clearInterval(intervalObj);
   
   var stopPoint:int = Math.random()*11 + 2;
   
   gotoAndStop(stopPoint);
   setCoins();
  }
 
  private function setCoins():void
  {   
   var countNum:int = this.currentFrame;
   var coinsCount:int;
   
   switch(countNum)
   {
    case 1 :
     gotoAndStop(2);
    case 2 :
     coinsCount = 4;
     break;
    case 3 :
     coinsCount = 1;
     break;
    case 4 :
     coinsCount = 2;
     break;
    case 5 :
     coinsCount = 7;
     break;
    case 6 :
     coinsCount = 4;
     break;
    case 7 :
     coinsCount = 2;
     break;
    case 8 :
     coinsCount = 20;
     break;
    case 9 :
     coinsCount = 1;
     break;
    case 10 :
     coinsCount = 2;
     break;
    case 11 :
     coinsCount = 4;
     break;
    case 12 :
     coinsCount = 7;
     break;
    case 13 :
     coinsCount = 2;
     break;
   }
   
   owner.addCoins(coinsCount);
  }
 }
}

=====================================================================================================

** 가위, 주먹, 보자기 이미지, Sound는 검색중에 다운받은 fla에서 복사했습니다. 출처를 까먹어서..;;
    혹시 출처를 알게되면 출처 적겠습니다.

'OM' 카테고리의 다른 글

Card Match 2  (0) 2008.05.04
원 그리기 (MouseListener)  (0) 2008.05.02
디지털 시계  (0) 2008.05.02
숫자 야구 게임  (0) 2008.05.02
War zero  (0) 2008.04.14
동영상 플레이어 (FLVPlayback) 2  (0) 2008.04.10
동영상 플레이어 (FLVPlayback)  (0) 2008.04.10
3X3 Puz  (0) 2008.04.10
Card Match  (0) 2008.04.08