| |
java写的英文打字练习的applet: game.java文件: ----------------------- import java.awt.*; import java.applet.*; import java.io.*; import begin; public class game extends applet{ string beginlabel=" 开 始 "; string quitlabel=" 退 出 "; label label= new label("b/s英文打字练习1.0版"); textarea context= new textarea(5,50); button beginbutton= new button(beginlabel); button quitbutton= new button(quitlabel); begin bb; public void init(){ context.settext("welcome to www.chinabs.net for java technicology."); setbackground(color.white); font f=new font("sansserif",font.bold,16); label.setfont(f); add("north",label); add("north",context); add("south",beginbutton); add("south",quitbutton); } public boolean action(event evt, object arg){ if(arg.equals(beginlabel)){ if (bb == null) bb=new begin(this,context.gettext()); else bb.settext(context.gettext()); bb.show(); return true; } else if(arg.equals(quitlabel)){ system.exit(0); return true; } else return false; } } begin.java文件: ----------------------- import java.applet.*; import java.awt.*; class coordinate{ public int x,y; public char name; public textfield tt; public coordinate(int x,int y,char na){ this.x=x; this.y=y; name= na; } } public class begin extends frame{ public applet parent; public int wrong=0; coordinate number[]; char key[]; char gst[]; string message= "~1234567890-=``qwertyuiop[]&&asdfghjkl:"```zxcvbnm,.?`|` "; string message2="~1234567890-=``qwertyuiop[]&&asdfghjkl:"```zxcvbnm,.?`|` "; string gamestring="welcome to my homepage.click any key to begin."; string quitlabel="返 回"; string clearlabel="重新开始"; public string yourrecord= null; int gst_length; int message_length; public textfield tt; public int changei=56; public int gstch=1; public fontmetrics font_m; public int string_x=100; public button clear1,close; int w= 0,h=0; public begin(applet parent,string m){ super("英文打字练习"); this.parent= parent; this.setbackground(color.white); gamestring= m; panel panel= new panel(); tt= new textfield(13); clear1= new button(clearlabel); close= new button(quitlabel); add("south",tt); panel.setlayout(new flowlayout()); panel.add(clear1); panel.add(close); message_length= message.length(); key= new char[message_length]; message.getchars(0,message_length,key,0); gst_length= gamestring.length(); gst= new char[gst_length]; gamestring.getchars(0,gst_length,gst,0); init(); add("north",panel); resize(600,450); h= 120; setresizable(false); show(); } public void settext(string tt){ gamestring= tt; gst_length= gamestring.length(); gst= new char[gst_length]; gamestring.getchars(0,gst_length,gst,0); gstch=1; wrong=0; graphics g= getgraphics(); string_x=100; repaint(); } public void init(){ setbackground(color.white); h=450/3; number= new coordinate[message_length+50]; for(int i=0;i<14;i++){ number[i]= new coordinate(62+i*30,h,key[i]); } for(int i=0;i<14;i++){ number[14+i]= new coordinate(64+i*30,h+30,key[14+i]); } for(int i=0;i<14;i++){ number[28+i]= new coordinate(66+i*30,h+60,key[28+i]); } for(int i=0;i<14;i++){ number[42+i]= new coordinate(68+i*30,h+90,key[42+i]); } number[56]= new coordinate(60,130+h,key[56]); } public void downboard(int i,graphics g){ int index=i; if(index!=56){ g.setcolor(color.lightgray); g.fillrect(number[index].x+3,number[index].y+4,23,21); for(int i1=0,j=1;i1<3;i1++,j+=2){ g.setcolor(color.white); g.fillrect(number[index].x+28-(i1+1),number[index].y+i1+1,1,28-(2*i1+1)-1); g.fillrect(number[index].x+i1,number[index].y+28-(i1+1),28-(2*i1),1); g.setcolor(color.gray); g.fillrect(number[index].x+i1,number[index].y+i1+1,28-(2*i1),1); g.fillrect(number[index].x+i1,number[index].y+i1+1,1,28-(2*i1+1)-1); } g.setcolor(color.black); g.drawchars(key,index,1,number[index].x+12,number[index].y+17); } else{ g.setcolor(color.lightgray); g.fillrect(number[index].x+53,number[index].y+4,303,21); for(int i1=0,j=1;i1<3;i1++,j+=2){ g.setcolor(color.white); g.fillrect(number[index].x+360-(i1+1),number[index].y+i1+1,1,28-(2*i1+1)-1); g.fillrect(number[index].x+i1+50,number[index].y+28-(i1+1),310-(2*i1),1); g.setcolor(color.gray); g.fillrect(number[index].x+i1+50,number[index].y+i1+1,310-(2*i1),1); g.fillrect(number[index].x+i1+50,number[index].y+i1+1,1,28-(2*i1+1)-1); } } } public void paintboard(int i,graphics g){ int index=i; if(index!=56){ for(int i1=0,j=1;i1<3;i1++,j+=2){ g.setcolor(color.gray); g.fillrect(number[index].x+28-(i1+1),number[index].y+i1+1,1,28-(2*i1+1)-1); g.fillrect(number[index].x+i1,number[index].y+28-(i1+1),28-(2*i1),1); g.setcolor(color.white); g.fillrect(number[index].x+i1,number[index].y+i1+1,28-(2*i1),1); g.fillrect(number[index].x+i1,number[index].y+i1+1,1,28-(2*i1+1)-1); } g.setcolor(color.black); g.drawchars(key,index,1,number[index].x+12,number[index].y+17); } else{ for(int i1=0,j=1;i1<3;i1++,j+=2){ g.setcolor(color.gray); g.fillrect(number[index].x+360-(i1+1),number[index].y+i1+1,1,28-(2*i1+1)-1); g.fillrect(number[index].x+i1+50,number[index].y+28-(i1+1),310-(2*i1),1); g.setcolor(color.white); g.fillrect(number[index].x+i1+50,number[index].y+i1+1,310-(2*i1),1); g.fillrect(number[index].x+i1+50,number[index].y+i1+1,1,28-(2*i1+1)-1); } } } public void paint(graphics g){ g.setcolor(color.lightgray); g.fillrect(0,0,600,450); for(int i=0;i<=56;i++) paintboard(i,g); g.drawstring(gamestring,string_x,100); } int ch = gst[gstch]; graphics g1=getgraphics(); record=message2.indexof(ch); if(record!=56){ g1.setcolor(color.blue); g1.fillrect(number[record].x+3,number[record].y+4,22,21); g1.setcolor(color.red); g1.drawchars(key,record,1,number[record].x+10,number[record].y+18); } else{ g1.setcolor(color.blue); g1.fillrect(number[record].x+53,number[record].y+4,303,21); } } public boolean keydown(event evt,int key){ int record2=0; graphics g= getgraphics(); if(key==8){ tt.settext("back space"); paintboard(changei,g); downboard(13,g); changei=13; gstch--; string_x=string_x-(font_m.charwidth(gst[gstch-1])); g.setcolor(color.white); g.drawchars(gst,gstch-1,1,string_x,100); return true; } search(); string aa=integer.tostring(key); record2=gamestring.indexof(key,gstch-1); font_m=g.getfontmetrics(); if(record2==(gstch-1)) g.setcolor(color.blue); else{
|
|