泣いて馬謖を斬る 猛将伝

by hig_an
以前Forkして作った物を自分の力だけでつくり直してみた
そんなに変わってはいない
♥0 | Line 213 | Modified 2010-09-04 07:59:50 | MIT License
play

ActionScript3 source code

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

package {
	//以前Forkして作った物を自分の力だけでつくり直してみた
	//そんなに変わってはいない
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.*;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
    [SWF(backgroundColor = "#FFFFFF", width = "465", height = "465", frameRate = "30")]
	
	public class Main extends Sprite {
		
		private var message:TextField;
		
		private var gameField:TextField = new TextField();
		private var bushouArray:Array = new Array();
		private var bushou:String ="";
		private var killedNum:int = 0;
		private var killedNumRyuzen:int = 0;
		
		private var score:int = 0;
		
		private var killBtn:Button;
		private var releaseBtn:Button;
		private var easyBtn:Button;
		private var vEasyBtn:Button;
		private var eEasyBtn:Button;
		private var restartBtn:Button;
		private var tf:TextField = new TextField();
		private var tformG:TextFormat = new TextFormat();
		
		public function Main():void {
			addChild(tf);
			message = new TextField();
			message.autoSize = TextFieldAutoSize.CENTER;
			var tform:TextFormat = new TextFormat();
                        tform.size = 20;
			tformG.align = TextFormatAlign.CENTER;
			tform.align = TextFormatAlign.CENTER;
			message.defaultTextFormat = tform;
			gameField.autoSize = TextFieldAutoSize.CENTER;
			gameField.background = true;
			addChild(message);
			message.x = stage.stageWidth / 2 - message.textWidth / 2;
			message.y = 100;
			gameField.x = stage.stageWidth / 2 - message.textWidth / 2;
			gameField.y = 100;
			message.visible = false;
			addChild(gameField);
			gameField.visible = false;
			gameField.text = bushou;
			
			killBtn = new Button("泣いて斬る ←");
			releaseBtn = new Button("→ 斬らない");
			addChild(killBtn);
			addChild(releaseBtn);
			killBtn.visible = false;
			releaseBtn.visible = false;
			killBtn.x = 100;
			releaseBtn.x = stage.stageWidth - 100 - releaseBtn.width;
			killBtn.y = 300;
			releaseBtn.y = 300;
			
			easyBtn = new Button("Hard");
			vEasyBtn = new Button("Normal");
			eEasyBtn = new Button("Extreme Easy");
			addChild(easyBtn);
			addChild(vEasyBtn);
			addChild(eEasyBtn);
			easyBtn.visible	= false;
			vEasyBtn.visible = false;
			eEasyBtn.visible = false;
			easyBtn.x = stage.stageWidth / 2 - easyBtn.width / 2;
			vEasyBtn.x = stage.stageWidth / 2 - vEasyBtn.width / 2;
			eEasyBtn.x = stage.stageWidth / 2 - eEasyBtn.width / 2;
			easyBtn.y = stage.stageHeight - 200;
			vEasyBtn.y = stage.stageHeight - 200 + 30;
			eEasyBtn.y = stage.stageHeight - 200 + 60;
			
			
			restartBtn = new Button("Restart");
			addChild(restartBtn);
			restartBtn.x = stage.stageWidth / 2 - restartBtn.width / 2;
			restartBtn.y = 300;
			
			
			addEventListener(KeyboardEvent.KEY_UP, keyEventHandler);
			killBtn.addEventListener(MouseEvent.CLICK, kill);
			releaseBtn.addEventListener(MouseEvent.CLICK, release);
			restartBtn.addEventListener(MouseEvent.CLICK, restart);
			
			easyBtn.addEventListener(MouseEvent.CLICK, easy);
			vEasyBtn.addEventListener(MouseEvent.CLICK, vEasy);
			eEasyBtn.addEventListener(MouseEvent.CLICK, eEasy);
			
			init();
		}
		
		private function init():void {
			score = 0;
			tf.text = "Score = " + score;
			bushouArray = ["馬忠", "馬超", "馬岱", "馬良", "馬騰", "馬休", "馬鉄", "馬玩", "馬鈞", "馬茂"];
			bushouSelect(); 
			
			killedNum = 0;
			killedNumRyuzen = 0;
			
			message.text = "\n馬謖がまた失敗しました。\n馬謖を泣きながら斬ってください。";
			
			message.visible = true;
			gameField.visible = false;
			
			killBtn.visible = false;
			releaseBtn.visible = false;
			
			easyBtn.visible = true;
			vEasyBtn.visible = true;
			eEasyBtn.visible = true;
			
			restartBtn.visible = false;
		}
		
		private function gameMain():void {
			
			message.visible = false;
			gameField.visible = true;
			gameField.text = "\n" + bushou;
			
			killBtn.visible = true;
			releaseBtn.visible = true;
			
			easyBtn.visible = false;
			vEasyBtn.visible = false;
			eEasyBtn.visible = false
			
			restartBtn.visible = false;

		}
		
		private function kill(e:MouseEvent):void {
			killed();
		}
		
		private function release(e:MouseEvent):void {
			released();
		}
		private function restart(e:MouseEvent):void {
			init();
		}
		private function tweenCompleteHandler():void {
		}
		private function easy(e:MouseEvent):void {
			easySelect(10,easyBtn.y,3);
			gameMain();
		}
		private function vEasy(e:MouseEvent):void {
			easySelect(20,vEasyBtn.y,10);
			gameMain()
		}
		private function eEasy(e:MouseEvent):void {
			easySelect(30,eEasyBtn.y,1000);
			gameMain();
		}
		private function easySelect (numB:int,btnY:Number = 300,numR:int = 0):void {
			for (var i:int = 0; i < numB; i++) {
				bushouArray.push("馬謖")
			}
			for (i = 0; i < numR; i++) {
				bushouArray.push("劉禅")
			}
			tformG.size = numB;
			gameField.defaultTextFormat = tformG;
			killBtn.y = releaseBtn.y = restartBtn.y = btnY;
		}
		private function killed():void {
			if (bushou == "馬謖") {
				killedNum++;
				score += 100
				bushouSelect();
			}else if (bushou == "劉禅") {
				killedNumRyuzen++;
				score += 200;
				bushouSelect();
			}else {
				gameover(bushou);
			}
		}
		private function released():void {
			if (bushou != "馬謖" && bushou != "劉禅") {
				score += 10;
				bushouSelect();
			}else {
				gameover(bushou);
			}
		}
		private function keyEventHandler(e:KeyboardEvent):void {
			switch(e.keyCode) {
				case Keyboard.LEFT:
					killed();
					break;
				case Keyboard.RIGHT:
					released();
					break;
			}
		}
		private function bushouSelect():void {
			bushou = bushouArray[Math.floor(bushouArray.length * Math.random())];
			gameField.text = "\n" + bushou;
			tf.text = "Score = " + score;
		}
		
		private function gameover(name:String):void {
			if (bushou != "馬謖" && bushou != "劉禅") {
				message.text = "\n何故、"+bushou+" を斬ったのですか\n危うく計略が失敗するところでした\n\nちなみに "+killedNum+" 人の馬謖を斬り、\nついうっかり "+killedNumRyuzen+" 人の劉禅を斬りました。";
			}else {
				message.text = "\n何故、 "+bushou+" を斬らなかったのですか\n危うく計略が失敗するところでした\n\nちなみに "+killedNum+" 人の馬謖を斬り、\nついうっかり "+killedNumRyuzen+" 人の劉禅を斬りました。";
			}
			message.visible = true;
			gameField.visible = false;
			
			killBtn.visible = false;
			releaseBtn.visible = false;
			restartBtn.visible = true;
			//for (var i:int = 0; i < bushouArray.length;i++){
			//	bushouArray.pop();
			//}
			//訂正、よく考えたら間違えに気づきました
			while (bushouArray.length > 0) {
				bushouArray.pop();
			}
		}
	}
}


import flash.display.Sprite;
import flash.text.TextField;
class Button extends Sprite {
	public function Button(label:String):void {	
		graphics.lineStyle(1, 0xBBBBBB);
		graphics.beginFill(0xEEEEEE);
		graphics.drawRoundRect(0, 0, 100, 20, 10, 10);
		graphics.endFill();
		mouseChildren = false;
		buttonMode = true;
		
		var myField:TextField = new TextField();
		myField.height = 20;
		myField.width = 100;
		myField.htmlText = "<p align='center'><font face='_sans'>" + label + "</span></p>";
		
		addChild(myField);
		
	}
}

Forked