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

後だしじゃんけんリベンジ、負けるが勝ちとは限らない

伊藤家の食卓やってた「後出しじゃんけん」は簡単すぎるとお嘆きのあなたへ!
今度はマジカルバナナでやっていた、「後出しじゃんけん」です。

そのつど、「勝って」、「負けて」、「あいこ」と指示が出ますので、
指示通りに勝ったり負けたりしてください。

ちなみに音声も出るようにしました。
音声合成はxpNavoを利用して作成しています。

ちょっと「もやもやっ」としています。

ソースは大した事してませんし、汚いですw
Get Adobe Flash player
by narutohyper 05 Mar 2010

    Talk

    narutohyper at 05 Mar 2010 17:27
    こっちの方が簡単だったかもwそのうち、スピードが徐々に早くなるVERにパワーアップするかも

    Tags

    Embed
/**
 * Copyright narutohyper ( http://wonderfl.net/user/narutohyper )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/asfB
 */

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

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

	import jp.progression.casts.CastDocument;
	import jp.progression.commands.lists.LoaderList;
	import jp.progression.commands.lists.SerialList;
	import jp.progression.commands.net.LoadBitmapData;
	import jp.progression.commands.net.LoadSound;
	import jp.progression.commands.net.LoadURL;
	import jp.progression.commands.Func
	import jp.progression.data.Resource;
	import jp.progression.data.getResourceById;


	/** 
	* 
	* 伊藤家の食卓やってた「後出しじゃんけん」は簡単すぎるとお嘆きのあなたへ!
	* 今度はマジカルバナナでやっていた、「後出しじゃんけん」です。
	* 
	* そのつど、「勝って」、「負けて」、「あいこ」と指示が出ますので、
	* 指示通りに勝ったり負けたりしてください。
	* 
	* ちなみに音声も出るようにしました。
	* 音声合成はxpNavoを利用して作成しています。
	* 
	* ちょっと「もやもやっ」としています。
	* 
	* ソースは大した事してませんし、汚いですw
	* 
	*/
	
	[SWF(backgroundColor = 0xffffff, frameRate = 40, width = 465, height = 465)]
	public class main extends Sprite
	{
		public var baseBmd:BitmapData;

		public var sound:Array

		public var text1:Sprite
		public var text2:Sprite
		public var text3:Sprite
		public var text4:Sprite

		public var spEn:Array
		public var spMy:Array

		public function main() {

			var imgUrl:String='http://marubayashi.net/archive/sample/magical/sample.jpg';
			sound=[];

			new SerialList(null,
				function():void {
					var cmd:LoaderList = new LoaderList();
					cmd.addCommand(
						new LoadBitmapData(new URLRequest(imgUrl),
							{
								context: new LoaderContext(true),
								catchError: function(target:Object, error:Error):void {
									target.executeComplete();
								}
							}
						)
					);
					for (var i:uint=1;i<5;i++) {
						cmd.addCommand(
							new LoadSound(new URLRequest('http://marubayashi.net/archive/sample/magical/voice_0'+i+'.mp3'),
								{
									context: new SoundLoaderContext(1000,true),
									catchError: function(target:Object, error:Error):void {
										target.executeComplete();
									}
								}
							)
						);
					}
					this.parent.insertCommand(cmd);
				}
				,
				function():void {
					baseBmd = getResourceById(imgUrl).toBitmapData();
					for (var i:uint=1;i<5;i++) {
						sound[i-1] = getResourceById('http://marubayashi.net/archive/sample/magical/voice_0'+i+'.mp3').toSound();
					}


					imgComplete()
				}
			).execute();


		}

		private function imgComplete():void {
			//じゃんけん画像の切り出し

			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')			
			guide.appendText('間違うとゲームオーバーです\nちなみにもやっとした音声も出るようにしました。')
			addChild(guide);
			
			format.size=14;
			format.align = "left"
			var guide2:TextField=setTextField(format,50,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

			format.align = "center"
			var guide4:TextField=setTextField(format,(464-150),50,120,100)
			guide4.text=''
			addChild(guide4);



			var bt:Button = new Button('START',150)
			bt.x = stage.stageWidth/2 - bt.width/2;
			bt.y = 300;
			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, 10)
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
			var result:uint=0;
			var counter:uint;
			var enType:uint;
			var myType:uint;
			var nextType:uint
			

			function init():void {
				bt2.visible=false
				bt3.visible=false
				guide3.visible=false
				guide4.visible=true
				result=0;
				guide2.text='';
				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) {
					//次の宣言
					var tempType:uint=Math.floor(Math.random()*6);
					if (tempType>=0 && tempType<2) {
						guide4.text='次は\n「勝って」下さい。';
						sound[0].play(700)
						nextType=0;
					} else if (tempType>=2 && tempType<5) {
						guide4.text='次は\n「負けて」下さい。';
						sound[1].play(700)
						nextType=1;						
					} else {
						guide4.text='次は\n「あいこ」の体で。';
						sound[2].play(700)
						nextType=2;						
					}

				} else if(counter==4) {
					sound[3].play(100)
					//じゃん
					text1.visible=true
				} else if(counter==5) {
					//けん
					text2.visible=true
				} else if(counter==6) {
					//ぽん
					text3.visible=true
					enType=Math.floor(Math.random()*3)
					spEn[enType].visible=true
				} else if(counter==7) {
					//ぽん
					text4.visible=true
				} else if(counter==9) {
					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 (nextType==0) {
						//勝ち勝負
						if ((enType==0&&myType==2)||(enType==1&&myType==0)||(enType==2&&myType==1)) {
							result++
							guide2.text='ただいま\n'+result+'連勝中'
							gameStart()
						} else {
							endGame()
						}
					} else if (nextType==1) {
						//負け勝負
						if ((enType==0&&myType==1)||(enType==1&&myType==2)||(enType==2&&myType==0)) {
							result++
							guide2.text='ただいま\n'+result+'連勝中'
							gameStart()
						} else {
							endGame()
						}
					} else if (nextType==2) {
						//あいこ勝負
						if (enType==myType) {
							result++
							guide2.text='ただいま\n'+result+'連勝中'
							gameStart()
						} else {
							endGame()
						}
					}

				}
			}

			function endGame():void{

				if (nextType==0) {
					if (enType==myType) {
						guide3.text='あいこですので、GameOverです'
					} else if ((enType==0&&myType==1)||(enType==1&&myType==2)||(enType==2&&myType==0)) {
						guide3.text='あなたが負けましたので、GameOverです'
					} else if(myType==3) {
						guide3.text='時間切れですので、GameOverです'
					}
				} else if (nextType==1) {
					if (enType==myType) {
						guide3.text='あいこですので、GameOverです'
					} else if ((enType==0&&myType==2)||(enType==1&&myType==0)||(enType==2&&myType==1)) {
						guide3.text='あなたが勝ちましたので、GameOverです'
					} else if(myType==3) {
						guide3.text='時間切れですので、GameOverです'
					}
				} else if (nextType==2) {
					if(myType==3) {
						guide3.text='時間切れですので、GameOverです'
					} else if ((enType==0&&myType==2)||(enType==1&&myType==0)||(enType==2&&myType==1)) {
						guide3.text='あなたが勝ちましたので、GameOverです'
					} else if ((enType==0&&myType==1)||(enType==1&&myType==2)||(enType==2&&myType==0)) {
						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/cijOAw %23wonderfl";
				st = "http://twitter.com/home?status="+escapeMultiByte(result+"回で終了。「後だしじゃんけんリベンジ、負けるが勝ちとは限らない!もやっとバージョン」") + thisURL;
				navigateToURL(new URLRequest(st));
			}



		}


		private function makeCard(bmd:BitmapData,_x:Number,_y:Number,_nx:Number,_ny:Number,_w:Number,_h:Number,_round:Number=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;
	}
}