/*********************
タイプした文字を表示

char型は97〜122
**********************/
//パッケージのインポート
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;

class MyFrame extends Frame implements KeyListener{
	
	//Font生成
	Font f = new Font("",Font.BOLD,50);
	Font f2 = new Font("",Font.PLAIN,30);
	//文字列を出題するLbale
	Label lb = new Label("",Label.CENTER);
	
	//表示する文字
	String out = "";
	String in = "";

	//問題の文字数
	int num;
	//charの文字コード
	int c;
	//答えあわせか問題送りかのflag 0:問題送り 1:答え合わせ
	int flag=0;
	
		
	MyFrame(String name){
		//スーパークラスのコンストラクタ呼び出し
		super(name);
		
		//Frameの諸設定
		setSize(600,200);
		setLocation(300,200);
		setLayout(new BorderLayout());
		
		//label設置
		add("North",lb);
		lb.setFont(f2);
		lb.setBackground(Color.yellow);
		
		//KeyListenerへ登録
		addKeyListener(this);
		
		//Frameの表示
		setVisible(true);
	}
	
	public void paint(Graphics g){
		g.setFont(f);
		g.drawString(in,15,150);
	}
	
	public void keyReleased(KeyEvent key){}
	public void keyPressed(KeyEvent key){
		
		if(key.getKeyCode()==10){
			if(flag==0){
				out = "";
				num = (int)(Math.random()*1000)%20+1;
				for(int i=0;i<num;i++){
					c = (int)(Math.random()*1000)%26+97;
					out = out+(char)c;
				}
				lb.setText(out);
				in = "";
				repaint();
				flag=1;
			}else if(flag==1){
				check();
				flag=0;
			}
		}
		
		if(key.getKeyCode()==8){
			back();
		}
		
		if(key.getKeyCode()>' ' && key.getKeyCode()<='~'){
			in =in + String.valueOf(key.getKeyChar());
			repaint();
		}
	}
	public void keyTyped(KeyEvent key){}
	
	public void back(){
		String tmp="";
		for(int i=0;i<in.length()-1;i++){
			tmp = tmp + String.valueOf(in.charAt(i));
		}
		in = tmp;
		repaint();
	}
	
	public void check(){
		if(out.equals(in)){
			lb.setText("正解！");
		}else{
			lb.setText("不正解！");
		}
	}
}

class Type_game{
	public static void main(String[] args){
		MyFrame mf = new MyFrame("Typing_game");		
	}
}
