電流イライラ男 obanetty forked:5favorite:5lines:315license : All rights reserved modified : 2009-03-26 23:56:03 Embed Tweet package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.geom.Point; import flash.geom.Rectangle; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.ui.Keyboard; public class IrairaMan extends Sprite { private var MAP:Array = [ [1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], ]; private var BLOCK_SIZE:int; private var field:Sprite; private var man:Man; private var levelText:TextField; private var wallMap:Object; private var avx:Number = 0.3; private var vx:Number = 0; private var level:int = 1; private var speed:Number = 3; private var _rightKey:Boolean = false; private var _leftKey:Boolean = false; private var _upKey:Boolean = false; private var _downKey:Boolean = false; private var _spaceKey:Boolean = false; public function IrairaMan() { init(); prepareStart(); } private function init():void{ BLOCK_SIZE = stage.stageWidth / 10; man = new Man(); field = new Sprite(); var tmpX:int = 0; var tmpY:int = 0; wallMap = new Object(); for each (var line:Array in MAP){ for each(var wallNum:int in line){ var wall:Wall = new Wall(wallNum, BLOCK_SIZE, tmpX, tmpY); wall.x = tmpX * BLOCK_SIZE; wall.y = tmpY * BLOCK_SIZE; field.addChild(wall); wallMap[tmpX + "," + tmpY] = wall; tmpX += 1; } tmpX = 0; tmpY += 1; } stage.addChild(field); stage.addChild(man); levelText = new TextField(); levelText.autoSize = TextFieldAutoSize.LEFT; levelText.textColor = 0x000000; levelText.background = true; levelText.backgroundColor = 0xCCCCCC; levelText.selectable = false; levelText.x = 10; levelText.y = 10; updateLevel(); stage.addChild(levelText); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeydown); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyup); } private function updateLevel():void{ levelText.text = "Level: " + level; } private function prepareStart():void{ vx = 0; field.x = (stage.stageWidth - field.width) / 2; field.y = stage.stageHeight - field.height; man.x = stage.stageWidth / 2; man.y = stage.stageHeight - man.height / 2; man.redraw(man.NORMAL_COLOR); var confirm:TextField = makeMessage("スペースキーを押してください"); stage.addChild(confirm); addEventListener(Event.ENTER_FRAME, function(e:Event):void{ if(_spaceKey){ removeEventListener(Event.ENTER_FRAME, arguments.callee); stage.removeChild(confirm); start(); } } ); } private function start():void{ addEventListener(Event.ENTER_FRAME, walk); } private function gameOver():void{ removeEventListener(Event.ENTER_FRAME, walk); var message:TextField = makeMessage("GAME OVER\nスペースキーで再挑戦"); stage.addChild(message); //GAME OVER アニメーション man.redraw(man.SHOCKED_COLOR); addEventListener(Event.ENTER_FRAME, function(e:Event):void{ if(_spaceKey){ removeEventListener(Event.ENTER_FRAME, arguments.callee); stage.removeChild(message); prepareStart(); } } ); } private function gameClear():void{ removeEventListener(Event.ENTER_FRAME, walk); var message:TextField = makeMessage("お見事!!\nスペースキーでLevelアップ"); stage.addChild(message); addEventListener(Event.ENTER_FRAME, function(e:Event):void{ if(_spaceKey){ removeEventListener(Event.ENTER_FRAME, arguments.callee); stage.removeChild(message); speed *= 1.4; avx *= 1.4; level += 1; updateLevel(); prepareStart(); } } ); } private function makeMessage(str:String):TextField{ var message:TextField = new TextField(); message.textColor = 0xFFFFFF; message.autoSize = TextFieldAutoSize.CENTER; message.text = str; message.background = true; message.backgroundColor = 0x000000; message.x = (stage.stageWidth - message.width) / 2; message.y = stage.stageHeight / 2; return message; } private function onKeydown(e:KeyboardEvent):void{ keyCheck(e.keyCode, true); } private function onKeyup(e:KeyboardEvent):void{ keyCheck(e.keyCode, false); } private function keyCheck(keyCode:uint, bool:Boolean):void{ switch(keyCode){ case Keyboard.RIGHT: _rightKey = bool; break; case Keyboard.LEFT: _leftKey = bool; break; case Keyboard.UP: _upKey = bool; break; case Keyboard.DOWN: _downKey = bool; break; case Keyboard.SPACE: _spaceKey = bool; break; case 229: _spaceKey = bool; break; default: break; } } private function checkHit():Boolean{ var rect:Rectangle = man.getBounds(field); var topLeftWall:Wall = getWallFromPoint(rect.topLeft); var bottomRightWall:Wall = getWallFromPoint(rect.bottomRight); if(topLeftWall == null) topLeftWall = bottomRightWall; if(bottomRightWall == null) bottomRightWall = topLeftWall; if(topLeftWall != null || bottomRightWall != null){ for(var i:int = topLeftWall.indexX; i<=bottomRightWall.indexX; i++){ for(var j:int = topLeftWall.indexY; j<=bottomRightWall.indexY; j++){ var hit:Boolean = Wall(wallMap[i + "," + j]).hitTestObject(man); if(hit) return true; } } } return false; } private function getWallFromPoint(p:Point):Wall{ var indexX:int = p.x / BLOCK_SIZE; var indexY:int = p.y / BLOCK_SIZE; return wallMap[indexX + "," + indexY]; } private function walk(e:Event):void{ if(_rightKey){ vx += avx; } if(_leftKey){ vx -= avx; } if(_upKey){ man.scaleX = man.scaleY *= 1.1; man.y = stage.stageHeight - man.height / 2; } if(_downKey && man.scaleX > 0.2){ man.scaleX = man.scaleY /= 1.1; man.y = stage.stageHeight - man.height / 2; } man.x += vx; field.y += speed; if(checkHit()){ gameOver(); }else if(field.y > stage.stageHeight){ gameClear(); } } } } import flash.display.Sprite; class Man extends Sprite { public var NORMAL_COLOR:uint = 0x000000; public var SHOCKED_COLOR:uint = 0xFF0000; public function Man() { redraw(NORMAL_COLOR); } public function redraw(col:uint):void{ graphics.clear(); graphics.beginFill(col); graphics.drawCircle(0, -10, 5); graphics.drawRect(-2, -5, 4, 12); graphics.endFill(); graphics.moveTo(-5, -5); graphics.lineStyle(3, col); graphics.curveTo(0, 0, 5, -5); graphics.moveTo(-5, 10); graphics.curveTo(0, 0, 5, 10); } } class Wall extends Sprite { private var WALL_COLOR:uint = 0x333333; public var indexX:int; public var indexY:int; public function Wall(type:int, size:int, indexX:int, indexY:int) { this.indexX = indexX; this.indexY = indexY; switch(type){ case 0: break; case 1: graphics.beginFill(WALL_COLOR); graphics.drawRect(0, 0, size, size); graphics.endFill(); break; } } } Code Fullscreen Preview Fullscreen siouxcitizen.. homuncul sugyan haoukuma tenchiwang2 : fungame画像変形 fun game 画像変形 message KeyboardEvent.ENTER_FRAME removeEventListener type callee removeChild size Boolean scaleX height bottomRight keyCode getBounds hitTestObject KeyboardEvent scaleY TextFieldAutoSize.CENTER Keyboard.SPACE Keyboard.DOWN Keyboard.UP sort new page view favorite forked pv63 forked from: 電流イライラ男 magira555 forked:0 favorite:1lines:315 (diff:11) pv47 forked from: 電流イライラ男 sekikazuzu forked:0 favorite:0lines:315 (diff:1) pv233 forked from: OωO Sirochan forked:0 favorite:2lines:315 (diff:32) pv124 forked from: 電流イライラ男 ricolist forked:0 favorite:1lines:315 (diff:356) pv264 forked from: 電流イライラ男 aiuoe forked:2 favorite:0lines:315 (diff:356)