In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

이천십일년십월구일의번쩍임

오늘은 한글날
Get Adobe Flash player
by codeonwort 09 Oct 2011
    Embed
/**
 * Copyright codeonwort ( http://wonderfl.net/user/codeonwort )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ovWF
 */

package {
    
    import flash.text.TextField
    import flash.display.Sprite
    import flash.utils.setTimeout
    
    public class Hanguel extends Sprite {
        
        private var 질문:글자칸, 답:글자칸, 알림:글자칸
        private var 점수:int = 0, 목숨:int = 5
        
        public function Hanguel() {
            var 설명:글자칸 = 새로운글자칸
            설명.스스로크기바꿈 = 가운데
            설명.내용 = "글자에 해당하는 유니코드를 입력하고 엔터를 누르세요"
            설명.가로곳 = (무대가로길이 - 설명.가로길이) / 2
            설명.세로곳 = 10
            넣는다(설명)
            
            질문 = 새로운글자칸
            질문.스스로크기바꿈 = 가운데
            질문.가로곳 = (무대가로길이 - 질문.가로길이) / 2
            질문.세로곳 = (무대세로길이 - 질문.세로길이) / 2
            넣는다(질문)
            
            답 = 새로운글자칸
            답.내용 = ""
            답.가로길이 = 200
            답.세로길이 = 22
            답.용도 = 입력용
            답.테두리 = 보인다
            답.가로곳 = (무대가로길이 - 답.가로길이) / 2
            답.세로곳 = (무대세로길이 - 답.세로길이) / 1.5
            넣는다(답)
            
            알림 = 새로운글자칸
            알림.스스로크기바꿈 = 가운데
            알림.내용 = ""
            알림.가로곳 = (무대가로길이 - 알림.가로길이) / 2
            알림.세로곳 = (무대세로길이 - 알림.세로길이) / 4
            알림.보임 = 아니다
            넣는다(알림)
            
            새질문()
            무대사건보기(키누름, 키누를때)
        }
        
        private function 새질문():void {
            //var min:int = "ㄱ".charCodeAt(0)
            //var max:int = "힣".charCodeAt(0)
            var 새문제:String = 문자로( 사이값(0xAC00, 0xD7AF) )
            질문.내용 = 새문제
            답.내용 = ""
        }
        
        private function 사이값(바닥:int, 천장:int):int {
            return 바닥 + (천장 - 바닥 + 하나) * Math.random()
        }
        
        private function 키누를때(사건:Object):void {
            if(사건.keyCode == 줄바꿈){
                if(숫자로(답.내용) == 0) 알림창('유니코드 숫자를 입력하세요')
                else if(질문.국제부호 == 숫자로(답.내용)){
                    점수 ++
                    알림창('정답입니다')
                    새질문()
                }else{
                    알림창('틀렸습니다. ' + 질문.내용 + "의 유니코드는 " + 질문.국제부호 + "입니다.")
                    목숨 --
                    if(목숨 == 0){
                        // game over
                        무대사건안보기("키누름", 키누를때)
                        모두없앤다
                        넣는다(알림)
                        알림창('놀이가 끝났습니다. 당신의 점수는 ' + 점수 + '점 입니다', 2000)
                    }else 새질문()
                }
            }
        }
        
        private function 알림창(정보:String, 기간:uint=1000):void {
            알림.내용 = 정보
            알림.보임 = 그렇다
            setTimeout(function():void{알림.보임=아니다}, 기간)
        }
        
        private function get 무대가로길이():Number { return stage.stageWidth }
        private function get 무대세로길이():Number { return stage.stageHeight }
        private function 넣는다(칸:글자칸):void { addChild(칸) }
        private function get 새로운글자칸():글자칸 { return new 글자칸 }
        private function get 모두없앤다():int { while(numChildren) removeChildAt(0) ; return 0 }
        private function 숫자로(문자:String):int { return int(문자) }
        private function 무대사건보기(사건종류:String, 다루기:Function):void { stage.addEventListener(사건종류, 다루기) }
        private function 무대사건안보기(사건종류:String, 다루기:Function):void { stage.removeEventListener(사건종류, 다루기) }
        private function 문자로(국제부호:int):String { return String.fromCharCode(국제부호) }
        
    }
    
}

import flash.ui.Keyboard
const 줄바꿈:int = Keyboard.ENTER
const 가운데:String = "center"
const 아니다:Boolean = false
const 그렇다:Boolean = true
const 보인다:Boolean = true
const 입력용:String = "input"
const 하나:int = 1
const 키누름:String = "keyDown"

import flash.text.TextField
class 글자칸 extends TextField {
    public function get 가로곳():Number { return x }
    public function set 가로곳(새값:Number):void { x = 새값 }
    public function get 세로곳():Number { return y }
    public function set 세로곳(새값:Number):void { y = 새값 }
    public function get 가로길이():Number { return width }
    public function set 가로길이(새값:Number):void { width = 새값 }
    public function get 세로길이():Number { return height }
    public function set 세로길이(새값:Number):void { height = 새값 }
    public function get 내용():String { return text }
    public function set 내용(새값:String):void { text = 새값 }
    public function set 스스로크기바꿈(새값:String):void { autoSize = 새값 }
    public function set 보임(새값:Boolean):void { visible = 새값 }
    public function set 테두리(새값:Boolean):void { border = 새값 }
    public function set 용도(새값:String):void { type = 새값 }
    public function get 국제부호():uint { return 내용.charCodeAt(0) }
}