/** * 漢字テスト「その他」 * **/ import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; import java.lang.Math; public class s extends Applet implements ActionListener{ TextField tf1, tf2, tf3, tf4, tf5, name, cw1, cw2, cw3, cw4, cw5; //ユーザの入力するTextfield TextArea ta1; // 採点後コメントのでるTextArea Button b1; //採点するときにユーザがおすボタン String Q1, Q2, Q3, Q4, Q5; //ユーザが入力した答えを代入する String answer1 = "はかどる"; //1問目の答えA String answer1b= "はかど"; //1問目の答えB String answer2 = "うな"; //2問目の答えA String answer2b= "うなされる";//2問目の答えB String answer3 = "えくぼ"; //3問目の答え String answer4 = "たてがみ"; //4問目の答え String answer5 = "ひょうきん"; //5問目の答え String secans = "ひょうけい"; //秘密の間違いの答え String msg = new String ("Correct!"); //「正解」の表示 String msg2= new String ("wrong!");//「はずれ」の表示 int s; //得点を代入する変数 // initメソッド:アプレットの初期化を行う public void init(){ setLayout(null); setBackground(Color.white); //ユーザが名前を入力するtextfield name = new TextField("",30); add(name); name.addActionListener(this); name.setBounds(285,15,100,30); tf1 = new TextField("",10); //一問目に使う解答用のtextfieldのコンストラクタ add(tf1); tf1.addActionListener(this); tf1.setBounds(220,70,125,30); tf2 = new TextField("",10); //2問目に使う解答用のtextfieldのコンストラクタ add(tf2); tf2.addActionListener(this); tf2.setBounds(220, 140, 125, 30); tf3 = new TextField("",10); //3問目に使う解答用のtextfieldのコンストラクタ add(tf3); tf3.addActionListener(this); tf3.setBounds(220, 200, 125, 30); tf4 = new TextField("",10); //4問目に使う解答用のtextfieldのコンストラクタ add(tf4); tf4.addActionListener(this); tf4.setBounds(220, 250, 125, 30); tf5 = new TextField("",10); //5問目に使う解答用のtextfieldのコンストラクタ add(tf5); tf5.addActionListener(this); tf5.setBounds(220, 310, 125, 30); Button b1= new Button("採点!"); //採点するときにユーザが押すボタンのコンストラクタ b1.setActionCommand("score"); //採点するときにボタンをおすと”score”commandが発動される b1.addActionListener(this); add(b1); b1.setBounds(200,340,50,30); ta1 = new TextArea("",120,20,TextArea.SCROLLBARS_HORIZONTAL_ONLY); //得点に対するコメントがかかれるtextarea。スクロールバーが下につく。 add(ta1); ta1.setBounds(125,400,200,40); /**回答の正誤の判定(correct!/wrong!)が現れるテキストフィールドのコンストラクター **/ cw1 = new TextField(null,10); add(cw1); cw2 = new TextField(null,10); add(cw2); cw3 = new TextField(null,10); add(cw3); cw4 = new TextField(null,10); add(cw4); cw5 = new TextField(null,10); add(cw5); int s =0; //得点を代入する変数。初期設定は0点。 } /**採点ボタンがおされたあとのActionEvent **/ public void actionPerformed(ActionEvent e){ System.out.println("actionP"); setLayout(null); String command = e.getActionCommand(); //コマンドをとる String msg4= new String(""+name.getText()+"みたいに中途半端に1問だけあってんのってサイテー。"); String msg3= new String("故人"+name.getText()+"は漢字は読めなくても、とてもやさしい子でした・・(泣)"); String msg5= new String("秘密暴露コーナー:私、"+name.getText()+"の趣味は連続コマネチ100回を寝起き直後にすることです。"); String msg6= new String(""+name.getText()+"〜、あんたってほんっっと相変わらず月並な人間よね"); String msg7= new String(""+name.getText()+"くん、本当にカンニングしてない?"); String msg8= new String(""+name.getText()+"殿、あなたの無駄に博識振りをここに賞します。"); String msg9= new String("ちょっと"+name.getText()+"、「ひょうけい」はないんじゃないの?「ひょうけい」は・・。"); /**採点ボタンが押されたら**/ if(command.equals("score")){ System.out.println("button pushed"); Q1 = tf1.getText(); //各テキストフィールドにユーザが入力した文字を取る Q2 = tf2.getText(); Q3 = tf3.getText(); Q4 = tf4.getText(); Q5 = tf5.getText(); //得点の初期設定。最初は0点。ユーザが解答を修正後に、前に採点してえた得点にさらに加算しない役割も果たす。 s = 0; /**第1問目**/ if(Q1.equals(answer1)){ //「はかどる」と答えたばあい。 System.out.println("1correct asw a"); cw1.setText(msg); cw1.setBounds(350,70,55,20); s = s + 20; //20点加算される } else if(Q1.equals(answer1b)){ //「はかど」と答えたばあい System.out.println("1correct asw b"); cw1.setText(msg); cw1.setBounds(350,70,55,20); s = s + 20; //20点加算される } else { //その他違う答えの場合。 System.out.println("1wrong asw"); cw1.setText(msg2); cw1.setBounds(350,70,55,20); } //以下も同型 /** 第2問目 **/ if(Q2.equals(answer2)){ //「うな」 System.out.println("2correct asw a"); cw2.setText(msg); cw2.setBounds(350,140,55,20); s = s + 20; } else if(Q2.equals(answer2b)){ //「うなされる」と答えたばあい System.out.println("2correct asw b"); cw2.setText(msg); cw2.setBounds(350,140,55,20); s = s + 20; //20点加算される } else{ System.out.println("2wrong asw"); cw2.setText(msg2); cw2.setBounds(350,140,55,20); } /**第三問目**/ if(Q3.equals(answer3)){ //「えくぼ」 System.out.println("3correct asw"); cw3.setText(msg); cw3.setBounds(350,200,55,20); s = s + 20; } else{ System.out.println("3wrong asw"); cw3.setText(msg2); cw3.setBounds(350,200,55,20); } /**第4問目**/ if(Q4.equals(answer4)){ //「たてがみ」 System.out.println("4correct asw"); cw4.setText(msg); cw4.setBounds(350,260,55,20); s = s + 20; } else{ System.out.println("4wrong asw"); cw4.setText(msg2); cw4.setBounds(350,260,55,20); } /**第5問目**/ if(Q5.equals(answer5)){ //「ひょうきん」 System.out.println("5correct asw"); cw5.setText(msg); cw5.setBounds(350,320,55,20); s = s + 20; } else if(Q5.equals(secans)){ //「秘密の間違い」 System.out.println("secret answer"); cw5.setText(msg2); cw5.setBounds(350,320,55,20); s = s -100000; } else{ System.out.println("5wrong asw"); cw5.setText(msg2); cw5.setBounds(350,320,55,20); } /** 点数別のリアクション**/ if(s == 0){ //0点の場合 System.out.println("msg0"); ta1.setText(msg3); //メッセージを書く setBackground(Color.gray); //背景色を変える。グレイ } if(s == 20){ System.out.println("msg20"); //20点の場合 ta1.setText(msg4); setBackground(Color.pink); } if(s == 40){ //40点の場合 System.out.println("msg40"); ta1.setText(msg5); setBackground(Color.white); } if(s == 60){ //60点の場合 System.out.println("msg60"); ta1.setText(msg6); setBackground(Color.orange); } if(s == 80){ //80点の場合 System.out.println("msg80"); ta1.setText(msg7); setBackground(Color.blue); } if(s == 100){ //100点の場合 System.out.println("msg100"); ta1.setText(msg8); setBackground(Color.red); } if(s <= -100000){ //裏技を使ったとき System.out.println("msg100000"); ta1.setText(msg9); setBackground(Color.black); } repaint(); } } public void paint(Graphics g){ Font font; setLayout(new FlowLayout(FlowLayout.LEFT)); g.setFont(new Font("impact",Font.ITALIC,20)); g.drawString("あなたの下の名前",100,30); g.setFont(new Font("impact",Font.BOLD,30)); //質問をコンストラクト g.drawString("捗る",100,85); g.drawString("魘される",100,160); g.drawString("靨",100,215); g.drawString("鬣",100,270); g.drawString("剽軽",100,325); g.setColor(Color.green); g.drawString("Your score is "+s+" !",100,390); //点を表示 } }