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

forked from: 後だしじゃんけん、負けるが勝ち!

**キーボード入力対応**
(フォーカスを確実に得るため、ゲームスタート時だけは
[START]ボタンをクリックする必要があります)
Z or LEFT .... グー
X or DOWN .... チョキ
C or RIGHT ... パー
ENTER ........ リトライ
T ............ スコアを twitter にポスト
/**
 * Copyright matacat ( http://wonderfl.net/user/matacat )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/86OH
 */

// forked from narutohyper's 後だしじゃんけん、負けるが勝ち!

//  **キーボード入力対応**
//   (フォーカスを確実に得るため、ゲームスタート時だけは
//    [START]ボタンをクリックする必要があります)
//  Z or LEFT .... グー
//  X or DOWN .... チョキ
//  C or RIGHT ... パー
//  ENTER ........ リトライ
//  T ............ スコアを twitter にポスト

package  
{
	import flash.display.Sprite;
	import flash.display.Loader;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.BlendMode;
	import flash.text.*;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.events.Event;
	import flash.utils.Timer;
	import flash.system.LoaderContext;
	import flash.geom.Point;
	import flash.geom.Rectangle;

	import flash.net.*;
	import flash.utils.escapeMultiByte;
	import flash.system.Security;
	import flash.net.URLRequest; 

	/** 
	* ちょっと前に伊藤家の食卓やってた「後だしじゃんけん」です。
	* じゃんけんぽん・ぽんのタイミングで、後だしして
	* 必ず「負け」てください。
	* 「勝つかあいこ」でゲームオーバーです
	* 
	* ちなみにDS脳とれにも入っていたそうなので、脳のトレーニングになる?かもです
	*/
	
	[SWF(backgroundColor = 0xffffff, frameRate = 40, width = 465, height = 465)]
	public class main extends Sprite
	{
		public var img:Loader;

		private var text1:Sprite
		private var text2:Sprite
		private var text3:Sprite
		private var text4:Sprite
		private var spEn:Array
		private var spMy:Array

		public function main() {
			img=new Loader();
			img.load(new URLRequest('http://assets.wonderfl.net/images/related_images/3/32/3234/32342af13f8a39ccd57db593c896e2d7bd6512c0m'), new LoaderContext(true)); 
			img.contentLoaderInfo.addEventListener(Event.COMPLETE, imgComplete);

		}

		private function imgComplete(e:Event):void {

			//じゃんけん画像の切り出し
			var baseBmd:BitmapData = new BitmapData(200,200,false,0xFFFFFFFF)
			baseBmd.draw(img);

			spEn=[]
			spMy=[]

			spEn[0]=makeCard(baseBmd,465/2, 80,  0,  0,100,100,180)
			spEn[1]=makeCard(baseBmd,465/2, 80,100,  0,100,100,180)
			spEn[2]=makeCard(baseBmd,465/2, 80,  0,100,100,100,180)

			spMy[0]=makeCard(baseBmd,465/2-120,350,  0,  0,100,100)
			spMy[1]=makeCard(baseBmd,465/2,    350,100,  0,100,100)
			spMy[2]=makeCard(baseBmd,465/2+120,350,  0,100,100,100)

			text1=makeCard(baseBmd,465/2-10, 465/2-50,100,100,100,25)
			text1.rotation=-10
			text2=makeCard(baseBmd,465/2+30, 465/2-20,100,125,100,25)
			text2.rotation=20
			text3=makeCard(baseBmd,120,   140,100,150,100,25)
			text3.rotation=10
			text3.scaleX=1*1.5
			text3.scaleY=1.5*1.5
			text4=makeCard(baseBmd,485-120, 200,100,175,100,25)
			text4.rotation=-10
			text4.scaleX=1*1.5
			text4.scaleY=1.5*1.5

			var format:TextFormat=new TextFormat();
			format.color=0x000000
			format.size=13;
			format.font='_等幅';
			format.leading = 10;
			format.align = "center"
			format.bold=true;
			var guide:TextField=setTextField(format,(464-100)/2,100,100,18)
			guide.appendText('ちょっと前に伊藤家の食卓やってた\n「後出しじゃんけん」です。\n')
			guide.appendText('じゃんけんぽん・ぽんのタイミングで、後出しして\n')
			guide.appendText('必ず「負け」てください。\n')
			guide.appendText('「勝ち、あいこ」でゲームオーバーです\n')
			addChild(guide);

			format.size=14;
			format.align = "left"
			var guide2:TextField=setTextField(format,30,50,100,100,1)
			guide2.text=''
			addChild(guide2);

			format.align = "center"
			var guide3:TextField=setTextField(format,(464-100)/2,200,100,100)
			guide3.text=''
			addChild(guide3);
			guide3.visible=false


			var bt:Button = new Button('START',150)
			bt.x = stage.stageWidth/2 - bt.width/2;
			bt.y = 250;
			bt.addEventListener(MouseEvent.CLICK, init);
			addChild(bt);

			var bt2:Button = new Button('もう一度',150)
			bt2.x = stage.stageWidth/2 - bt.width/2 +100;
			bt2.y = 380;
			bt2.addEventListener(MouseEvent.CLICK, init);
			addChild(bt2);
			bt2.visible=false

			var bt3:Button = new Button('結果をTwitterに投稿する',150)
			bt3.x = stage.stageWidth/2 - bt.width/2 -100;
			bt3.y = 380;
			bt3.addEventListener(MouseEvent.CLICK, post);
			addChild(bt3);
			bt3.visible=false

			var timer:Timer=new Timer(600, 6)
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
			var result:uint=0;
			var counter:uint;
			var enType:uint;
			var myType:uint;
			
			var me:MouseEvent = new MouseEvent(MouseEvent.CLICK);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void
			{
				switch (e.keyCode) {
					case 90: // Z
					case 37: // LEFT
						spMy[0].dispatchEvent(me);
						break;
					case 88: // X
					case 40: // DOWN
						spMy[1].dispatchEvent(me);
						break;
					case 67:  // C
					case 39:  // RIGHT
						spMy[2].dispatchEvent(me);
						break;
					case 13: // ENTER
						if(bt2.visible) bt2.dispatchEvent(me);
						break;
					case 84: // T
						if(bt3.visible) bt3.dispatchEvent(me);
				}
			});


			function init():void {
				bt2.visible=false
				bt3.visible=false
				guide3.visible=false
				result=0;
				gameStart()
			}


			function gameStart():void {
				guide.visible=false
				bt.visible=false
				timer.start()
				counter=0;

				text1.visible=false
				text2.visible=false
				text3.visible=false
				text4.visible=false

				for(var i:uint=0;i<3;i++) {
					spEn[i].visible=false
					spMy[i].visible=true
					spMy[i].y=350
					spMy[i].alpha=0.5
					spMy[i].addEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
					spMy[i].addEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
					spMy[i].addEventListener(MouseEvent.CLICK, mouseHandler);
				}
			}

			function timerHandler(e:TimerEvent):void{
				counter++;
				if(counter==1) {
					//じゃん
					text1.visible=true
				} else if(counter==2) {
					//けん
					text2.visible=true
				} else if(counter==3) {
					//ぽん
					text3.visible=true
					enType=Math.floor(Math.random()*3)
					spEn[enType].visible=true
				} else if(counter==4) {
					//ぽん
					text4.visible=true
				} else if(counter==5) {
				} else {
					myType=3
					for(var i:uint=0;i<3;i++) {
						if (spMy[i].y==300) {
							myType=i
						}
						spMy[i].removeEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
						spMy[i].removeEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
						spMy[i].removeEventListener(MouseEvent.CLICK, mouseHandler);
					}
					//判定
					timer.stop()
					timer.reset()
					if ((enType==0&&myType==1)||(enType==1&&myType==2)||(enType==2&&myType==0)) {
						result++
						guide2.text='ただいま\n'+result+'連敗中'
						gameStart()
					} else {
						endGame()
					}
				}
			}

			function endGame():void{

				if ((enType==myType)||(enType==myType)||(enType==myType)) {
					guide3.text='あいこですので、GameOverです'
				} else if(myType==3) {
					guide3.text='時間切れですので、GameOverです'
				} else {
					guide3.text='あなたが勝ちましたので、GameOverです'
				}

				text1.visible=false
				text2.visible=false
				text3.visible=false
				text4.visible=false

				guide3.visible=true

				bt2.visible=true
				bt3.visible=true
			}


			function mouseHandler(e:MouseEvent):void {
				if (e.type==MouseEvent.MOUSE_OVER) {
						e.target.alpha=1
				} else if (e.type==MouseEvent.MOUSE_OUT) {
						e.target.alpha=0.5
				} else if (e.type==MouseEvent.CLICK) {
						//e.target.alpha=50
					e.target.alpha=1
					e.target.y=300

					for(var i:uint=0;i<3;i++) {
						spMy[i].removeEventListener(MouseEvent.MOUSE_OVER, mouseHandler);
						spMy[i].removeEventListener(MouseEvent.MOUSE_OUT, mouseHandler);
						spMy[i].removeEventListener(MouseEvent.CLICK, mouseHandler);
					}
				}
			}



			function post(evt:MouseEvent):void {
				var st:String;
				var thisURL:String = " http://bit.ly/9ALcM1 %23wonderfl";
				if (result) {
					st = "http://twitter.com/home?status="+escapeMultiByte(result+"敗で終了。「後だしじゃんけん、負けるが勝ちよ!」") + thisURL;
				} else {
					st = "http://twitter.com/home?status="+escapeMultiByte("一度も負け無いで終了。「後だしじゃんけん、負けるが勝ちよ!」") + thisURL;
				}
				navigateToURL(new URLRequest(st));
			}



		}


		private function makeCard(bmd:BitmapData,_x:Number,_y:Number,_nx:Number,_ny:Number,_w:Number,_h:Number,_round:uint=0):Sprite {
			var tempBmd:BitmapData=new BitmapData(_w,_h,false,0xFFFFFFFF)
			var tempBm:Bitmap=new Bitmap(tempBmd,'auto',true)
			var tempSp:Sprite=new Sprite()

			tempBmd.copyPixels(bmd,new Rectangle(_nx,_ny,_w,_h),new Point(0,0))
			tempSp.addChild(tempBm)
			tempBm.scaleY=1.4
			tempBm.x=-tempBm.width/2
			tempBm.y=-tempBm.height/2
			tempSp.x=_x
			tempSp.y=_y
			tempSp.blendMode=BlendMode.MULTIPLY

			tempSp.rotation=_round
			addChild(tempSp)
			tempSp.visible=false

			return tempSp
		}


		private function setTextField(_format:TextFormat,_x:uint=0,_y:uint=0,_w:uint=100,_h:uint=40,_type:uint=0):TextField {

			var tbox:TextField=new TextField()
			tbox.x=_x;
			tbox.y=_y;
			tbox.width=_w;
			tbox.height=_h;
		
			if (_type) {
				tbox.autoSize=TextFieldAutoSize.LEFT
			} else {
				tbox.autoSize=TextFieldAutoSize.CENTER
			}
				tbox.selectable=false;
				tbox.mouseEnabled=false;
				_format.color=0x000000


			tbox.defaultTextFormat=_format

			return tbox;
		}


	}


}


import flash.display.*;
import flash.text.*;
class Button extends SimpleButton
{

	public function Button(label:String, width:int = 0):void
	{
		var up:Sprite = _buildImage(label, 0xCCCCCC, width);
		var over:Sprite = _buildImage(label, 0xFFCCCC, width);
		var down:Sprite = _buildImage(label, 0xCC9999, width);
		down.y = 1;
		super(up, over, down, up);
	}

	private static function _buildImage(label:String, color:int, width:int = 0):Sprite
	{
		var text:TextField = new TextField();
		text.defaultTextFormat = new TextFormat('Verdana', 10, 0x000000, true, null, null, null, null, TextFormatAlign.CENTER);
		text.autoSize = TextFieldAutoSize.CENTER;
		text.selectable = false;
		text.text = label;
		text.x = (width - text.width) >> 1;
		text.y = 5;
		var base:Shape = new Shape();
		var g:Graphics = base.graphics;
		g.beginFill(color);
		g.drawRect(0, 0, width, text.height + 10);
		g.endFill();
		var sp:Sprite = new Sprite();
		sp.addChild(base);
		sp.addChild(text);
		return sp;
	}
}