"use strict";

function Rnd( m )
{
	return( Math.floor( Math.random() * m ) );
}

window.onload = function()
{
	document.addEventListener( 'keydown', ( ev ) =>{	ev.preventDefault();	} );
	document.addEventListener( 'keyup'  , ( ev ) =>{	ev.preventDefault();	} );

	let	keyword = [ "abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked", "class", "const", "continue", "debugger", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit", "export", "extends", "extern", "false", "finally", "fixed", "float", "for", "foreach", "function", "goto", "if", "import", "implicit", "in", "int", "instanceof", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params", "private", "protected", "public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "super", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "using static", "virtual", "void", "volatile", "while", "add","alias","ascending","async","await","by","descending","dynamic","equals","from","get","global","group","into","join","let","nameof","on","orderby","partial","partial","remove","select","set","unmanaged","value","var","when","where","where", "yield", "auto", "array", "gcnew", "property", "get", "set", "typedef", "unsigned", "value", ];

	TUGames.GX.Init( "main", 640, 480 );	//	自身、ウィンドウサイズ横、縦を指定してライブラリ初期化
	TUGames.GX.SetFontSize( 32 );
	let	score = 0;		//	得点
	let	time = 30 * 60;	//	30秒
	let	str = "";
	for( let i = keyword.length - 1; i >= 0; i-- ){
		str += keyword[ Rnd( keyword.length ) ];
		if( i > 0 ){
			str += " ";
		}
	}
	TUGames.PF.StartLoop( 60,	//	fpsを指定してループを開始し、更新処理と描画処理を登録
	() =>{	//	更新処理
		if( time == 0 || str == "" ){
			return;
		}
		if( TUGames.PF.GetKey( 65 + str[ 0 ].charCodeAt() - 'a'.charCodeAt() ) == 1 ||
		    ( TUGames.PF.GetKey( 32 ) == 1 && str[ 0 ] == ' ' ) ){
			if( str.length > 1 ){
				str = str.substr( 1 );
			}else{
				str = "";
			}
			score++;
		}
		if( score > 0 && str.length > 0 ){
			time--;
		}
	},
	() =>{	//	描画処理
		TUGames.GX.Clear();	//	設定された背景色で画面初期化
		TUGames.GX.DrawASCII( "SCORE " + score, 50, 30, 0, 0xffffffff );
		TUGames.GX.DrawASCII( "TIME " + time, 350, 30, 0, 0xffffffff );
		TUGames.GX.DrawASCII( str.substr( 0, Math.min( 20, str.length ) ), 100, 220, 0, 0xffffffff );
		if( time == 0 ){
			TUGames.GX.DrawASCII( "GAME OVER", 200, 140, 0, 0xffffffff );
		}
		if( str == "" ){
			TUGames.GX.DrawASCII( "GAME CLEAR!", 200, 140, 0, 0xffffffff );
		}
		GL.flush();	//	描画内容を画面に反映
	} );
}


戻る戻る back