package{ import flash.display.Sprite;import flash.text.TextField;import flash.text.TextFormat; public class TextTile extends Sprite{ var w=470,h=470,chars,fhit=true,temp,targets,lvl=0,gameOver=false; var timeout=10,wait=3000,tCtr=0,ins="Type in to start"; var area:Sprite,input:Sprite,fld:TextField,red:Sprite; public function TextTile() { loaderInfo.addEventListener("complete",init);} function draw(t,c,a,o) { t.graphics.beginFill(c,a); if(o.s=="c"){t.graphics.drawEllipse(0-(o.w/2),0 -(o.w/2),o.w,o.w);} else if(o.s=="r"){t.graphics.drawRect(0,0,o.w,o.h);} t.graphics.endFill(); } function init(e:*){ chars = "";targets=new Array(); mouseChildren = false; draw(this,0x000000,1,{w:w,h:h,s:"r"}); red=new Sprite();draw(red,0xFF0000,0.5,{w:w,h:2,s:"r"});addChild(red);uplvl(); area=new Sprite(); draw(area,0,0,{w:w,h:h,s:"r"}); addChild(area); input=new Sprite(); draw(input,0xFF9900,1,{w:w-40,h:50,s:"r"}); input.x=(w-(w-40))/2; input.y=h-50-10; addChild(input); fld=new TextField();input.addChild(fld);fld.border=true;fld.borderColor=0xFFFFFF;fld.width=w-40;fld.height=50; fld.selectable=false;fld.maxChars=12; var tf:TextFormat = new TextFormat("Comic Sans MS",30,0x000000,true); tf.align = "center"; fld.defaultTextFormat = tf; fld.text=ins; addEventListener("keyDown",keyh); addEventListener("enterFrame",enfra); stage.focus=this; create(); } function uplvl(){lvl++;red.y=(h-((lvl+1)*10))-50;} function hit(){return (h-((lvl+1)*10))-50} function keyh(e:*){ if( fhit == true ){fhit=false; fld.text="";} var ccode = e.charCode; if( ccode == 8) {//backspace temp=chars.split(""); temp.splice(temp.length-1,1);chars=""; for(var i=0;i<temp.length;i++)chars+=temp[i]; } else if(ccode==13||ccode==32){ //enter cmp();chars=""; } else if((ccode>=65&&ccode<=90)||(ccode>=97&&ccode<=122)) { chars+=String.fromCharCode(ccode); } fld.text=chars; } function mod(dvn:*,dvsr:*){return((dvn%dvsr)== 0);} function ri(i) {return Math.floor( Math.random() * i);} function rr(i,j){return Math.round(Math.random()*(j-i))+i;} function crfld(w,h,s,c,t){ var f=new TextField(); f.width=w;f.height=h; var tf=new TextFormat("Tahoma",s,c,true); tf.align="center";f.defaultTextFormat=tf;f.text=t; return f; } function rt(){ var l=rr(rr(3,5),rr(6,9)),s=""; for( var i=1;i<=l;i++){ var c=97+ri(25); s+=String.fromCharCode(c); } return s; } function cmp(){ for(var i=0;i<targets.length;i++){ var o=targets[i]; if(o.txt.toUpperCase()==chars.toUpperCase()){ area.removeChild(o.main); targets.splice(i,1); } } } function create(){ var o={}; o.main=new Sprite(); draw(o.main,0xFFFFFF,0.2,{w:100,h:30,s:"r"}); o.main.name ="target_" + ri(1000000) + "_" + targets.length; o.main.x=ri(470-100); o.main.y=-15; o.txt=rt(); o.main.addChild(crfld(100,30,18,0xFF9900, o.txt)); o.speed= rr(rr(1,2),rr(3,5))/rr(rr(2,4),5); targets.push(o); area.addChild(o.main); wait=(rr(rr(2,5),7))*300; return o; } function act(){ for( var i=0;i<targets.length;i++){ var o=targets[i]; o.main.y += o.speed; if(o.main.height+o.main.y>hit() ){ targets.splice(i,1); area.removeChild(o.main); uplvl();i--; } } } function enfra(e:*){ if( mod(tCtr,wait) ){ create(); } act(); tCtr+=timeout; if(tCtr>50000)tCtr=0; } } } phlashers2009-jopiruizen-textbased game