본문 바로가기

OM

타자게임


typing.mxml==========================================================================================

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="500" height="300" creationComplete="init()">
 <mx:Style>
  Application{
   backgroundColor : #ffffff;
   fontSize : 12;
  }
 </mx:Style>
 
 <mx:Script>
  <![CDATA[
   
   import mx.rpc.events.ResultEvent;  
   import flash.utils.*;
   import flash.events.*;
   
   private var totalTime:Number = 0;
   private var startTime:Number;
   
   private var success:int;
   private var fail:int;
   
   private var msg:Array;
   private var msgNum:int;
   
   private function textInfoResult(e:ResultEvent):void
   {
    var infoResult:XML = new XML(e.result);
    msg = new Array();
   
    var len:int = infoResult.msg.length();
   
    for(var i:int=0; i<len; i++)
    {
     msg[i] = infoResult.msg[i];
    }
   
    shuffle(msg);    
    txtQuestion.text = msg[msgNum++];
   
    txtInput.setFocus();
   }
   
   private function shuffle(_Arr:Array):void
   {
    var len:int = _Arr.length;
   
    for(var i:int=0; i<len; i++)
    {
     var x:int = i;
     var y:int = len*Math.random();
     var z:Object = _Arr[x];
     
     _Arr[x] = _Arr[y];
     _Arr[y] = z;
    }
   }
   
   private function changeHandler():void
   {
    if(txtInput.length == 1)
    {
     startTime = getTimer();
    }
   
    if(txtInput.text == txtQuestion.text.substr(0, txtInput.text.length))
    {
     txtInput.setStyle("color", "0x009900");
    }
    else{
     txtInput.setStyle("color", "0xff0000");
    }
   }
   
   private function init():void
   {
    textInfo.send();
   
    addEventListener(KeyboardEvent.KEY_DOWN, doKeyDown);
   }
   
   private function doKeyDown(e:KeyboardEvent):void
   {
    if(e.keyCode == 13)
    {
     var tempSuccess:int;
     var tempFail:int;
     
     for(var i:int=0; i<txtQuestion.length; i++)
     {
      if(txtInput.text.charAt(i) == txtQuestion.text.charAt(i))
      {
       tempSuccess++;
      }
      else{
       tempFail++;
      }
     }
     
     success += tempSuccess;
     fail += tempFail;
     
     totalTime += (getTimer() - startTime)/1000/60;
     
     txtSuccess.text = String(Math.round(success/(success + fail)*100));
     txtFail.text = String(Math.round(fail/(success + fail)*100));
     txtInstanceSpeed.text = String(Math.round(tempSuccess/(getTimer() - startTime)*1000*60));
     txtMeanSpeed.text = String(Math.round(success/totalTime));
     
     if(msgNum%msg.length == 0)
     {
      shuffle(msg);
     }
     
     txtQuestion.text = msg[(msgNum++)%msg.length];
     txtInput.text = "";
    }
   }
   
  ]]>
 </mx:Script>
 
 <mx:HTTPService id="textInfo" url="./text.xml" useProxy="false" resultFormat="xml" result="textInfoResult(event)"/>
 
 <mx:TextInput x="25" y="59" width="450" editable="false" id="txtQuestion"/>
 <mx:TextInput x="25" y="112" width="450" change="changeHandler()" id="txtInput"/>
 <mx:Label x="277" y="186" text="success :"/>
 <mx:Label x="308" y="214" text="fail :"/>
 <mx:Label x="281" y="242" text="current :"/>
 <mx:Label x="274" y="270" text="average :"/>
 <mx:Text x="348" y="186" text="0" textAlign="right" width="62" id="txtSuccess"/>
 <mx:Text x="348" y="214" text="0" textAlign="right" width="62" id="txtFail"/>
 <mx:Text x="348" y="242" text="0" textAlign="right" width="62" id="txtInstanceSpeed"/>
 <mx:Text x="348" y="270" text="0" textAlign="right" width="62" id="txtMeanSpeed"/>
 <mx:Label x="418" y="186" text="%"/>
 <mx:Label x="417" y="214" text="%"/>
 <mx:Label x="417" y="242" text="char/sec"/>
 <mx:Label x="417" y="270" text="char/sec"/>
</mx:Application>

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

text.xml==============================================================================================

<?xml version="1.0" encoding="utf-8"?>
<mssages>
 <msg>Flex2.0에서는 한글입력이 느립니다.</msg>
 <msg>나 태어날 때 나 울고 모두 웃었지만, 나 죽을 때 나 웃고 모두 울게 하리라.</msg>
 <msg>재미가 없다면 왜 그걸 하고 있는가?</msg>
 <msg>최고에 도달하려면 최저에서 시작하라.</msg>
 <msg>지식보다는 상상력이 더욱 중요하다.</msg>
 <msg>문제는 목적지에 얼마나 빨리 가느냐가 아니라 그 목적지가 어디냐는 것이다.</msg>
 <msg>친구는 기쁨을 배로 늘리고 슬픔은 반으로 줄인다.</msg>
 <msg>백권의 책에 쓰인 말보다 한 가지 성실한 마음이 더 크게 사람을 움직인다.</msg>
 <msg>겸손한 자만이 다스릴 것이요, 애써 일하는 자만이 가질 것이다.</msg>
 <msg>대안 없는 불평은 하지마라.</msg>
</mssages>

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

'OM' 카테고리의 다른 글

컬러 팔레트  (0) 2008.02.28
색칠공부  (4) 2008.02.23
영어 학습 컨텐츠  (0) 2008.02.22
keyUtil  (0) 2008.02.09
달력을 이용한 다이어리  (0) 2008.02.08
달력  (0) 2008.02.07
D-day 구하기 2  (0) 2008.02.07
D-day 구하기 1  (0) 2008.02.05
아날로그 시계  (0) 2008.02.04