//全てランダムで変化 import java.applet.*; import java.awt.*; import java.awt.event.*; import java.awt.Font; import java.util.*; import java.io.*; import java.net.*; public class Trust_2 extends Applet implements KeyListener{ int que,ansA,ansB,ansC,ansD,p; int r,rA,rB,rC,rD; int colnum,colAnum,colBnum,colCnum,colDnum; int mistake; int t; long avg,sum; long nt; long c; long pt[],b[]; char a,hantei; Color col[]; String qstr[]; Random rnd = new Random(100); Random rnd1 = new Random(200); Font f1,f2,f3; //TextField m; String delay; public void init(){ delay = ""; t = 0; mistake = 0; pt = new long[50]; b = new long[50]; f1 = new Font("TimesRoman", Font.BOLD, 36); f2 = new Font("ゴシック", Font.BOLD, 36); //フォント=ゴシック f3 = new Font("TimesRoman", Font.BOLD, 12); qstr = new String[] {"赤", "青", "黄", "緑"}; //配列の中身=赤、青、黄色、緑 col = new Color[] {Color.red, Color.blue, Color.yellow, Color.green}; newQuery(); nt = new Date().getTime(); //m = new TextField(20); //add(m); //Button go = new Button("Start"); //add(go); //go.addActionListener(this); addKeyListener(this); } /* //Startボタンを押したら public void actionPerformed(ActionEvent e){ Graphics g = getGraphics(); paintQuery(g); } */ //時間と最終的なスコアの表示。 public void paint(Graphics g){ g.setColor(Color.black); if(t == 32){ g.setFont(f2); g.drawString("YourScore: ミス=" + mistake + ",平均反応速度[ms]=" + (sum/t), 200, 200); System.out.println("平均反応速度[ms]=" + (sum/t)); }else{ paintQuery(g); } } //問題と回答部分の表示 public void paintQuery(Graphics g){ g.setFont(f2); p = rnd1.nextInt(4) % 3; que = rnd.nextInt(4) % 4; ansA = rnd.nextInt(4) % 4; ansB = rnd.nextInt(4) % 4; ansC = rnd.nextInt(4) % 4; ansD = rnd.nextInt(4) % 4; g.drawString("問題の色に該当する文字を回答から選ぶ。",200 ,600); //問題部分 if(p == 0){ if(que == 0){ g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); }else if(que == 1){ g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); }else if(que == 2){ g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); }else if(que == 3){ g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); } }else{ if(que == 0){ colnum = 0; g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); }else if(que == 1){ colnum = 1; g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); }else if(que == 2){ colnum = 2; g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); }else if(que == 3){ colnum = 3; g.setColor(col[colnum]); g.drawString(qstr[que], 300, 200); System.out.println("問題の文字 : " + qstr[que]); System.out.println("問題の色 : " + qstr[colnum]); } } //回答部分の表示(A:) if(p == 0){ if(ansA == 0){ colAnum = 0; g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); }else if(ansA == 1){ colAnum = 1; g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); }else if(ansA == 2){ colAnum = 2; g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); }else if(ansA == 3){ colAnum = 3; g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); } }else{ if(ansA == 0){ g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); }else if(ansA == 1){ g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); }else if(ansA == 2){ g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); }else if(ansA == 3){ g.setColor(col[colAnum]); g.drawString("1: " + qstr[ansA], 100, 300); System.out.println("回答(1)の文字 : " + qstr[ansA]); System.out.println("回答(1)の色 : " + qstr[colAnum]); } } //回答部分の表示(B:) while(ansB == ansA){ ansB = rnd.nextInt(4) % 4; } if(p == 0){ if(ansB == 0){ colBnum = 0; g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); }else if(ansB == 1){ colBnum = 1; g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); }else if(ansB == 2){ colBnum = 2; g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); }else if(ansB == 3){ colBnum = 3; g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); } }else{ if(ansB == 0){ g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); }else if(ansB == 1){ g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); }else if(ansB == 2){ g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); }else if(ansB == 3){ g.setColor(col[colBnum]); g.drawString("2: " + qstr[ansB], 100, 350); System.out.println("回答(2)の文字 : " + qstr[ansB]); System.out.println("回答(2)の色 : " + qstr[colBnum]); } } //回答部分の表示(C:) while(ansC == ansA || ansC == ansB){ ansC = rnd.nextInt(4) % 4; } if(p == 0){ if(ansC == 0){ colCnum = 0; g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); }else if(ansC == 1){ colCnum = 1; g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); }else if(ansC == 2){ colCnum = 2; g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); }else if(ansC == 3){ colCnum = 3; g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); } }else{ if(ansC == 0){ g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); }else if(ansC == 1){ g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); }else if(ansC == 2){ g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); }else if(ansC == 3){ g.setColor(col[colCnum]); g.drawString("3: " + qstr[ansC], 100, 400); System.out.println("回答(3)の文字 : " + qstr[ansC]); System.out.println("回答(3)の色 : " + qstr[colCnum]); } } //回答部分の表示(D:) while(ansD == ansA || ansD == ansB || ansD == ansC){ ansD = rnd.nextInt(4) % 4; } if(p == 0){ if(ansD == 0){ colDnum = 0; g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); }else if(ansD == 1){ colDnum = 1; g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); }else if(ansD == 2){ colDnum = 2; g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); }else if(ansD == 3){ colDnum = 3; g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); } }else{ if(ansD == 0){ g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); }else if(ansD == 1){ g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); }else if(ansD == 2){ g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); }else if(ansD == 3){ g.setColor(col[colDnum]); g.drawString("4: " + qstr[ansD], 100, 450); System.out.println("回答(4)の文字 : " + qstr[ansD]); System.out.println("回答(4)の色 : " + qstr[colDnum]); } } //正誤判定 if(colnum == ansA){ hantei = '1'; } if(colnum == ansB){ hantei = '2'; } if(colnum == ansC){ hantei = '3'; } if(colnum == ansD){ hantei = '4'; } g.setColor(Color.black); g.drawString("t: " + t,400,450); g.drawString("反応速度[ms]: " + b[t-1], 600, 550); g.drawString("miss: " + mistake, 200, 700); sum += b[t-1]; } //Keyを押したら public void keyTyped(KeyEvent r){ a = r.getKeyChar(); if(t < 32){ t++; } pt[t] = new Date().getTime(); if(a != hantei){ if(t < 32){ mistake++; } } repaint(); System.out.println("押したボタン : " + a); System.out.println("miss : " + mistake); if(t == 0){ pt[t] = 0; } else if(t == 1){ b[t] = pt[t] - nt; }else if(t < 32){ b[t] = pt[t] - pt[t-1]; } System.out.println(t + ": " + b[t]); System.out.println(); } public void keyPressed(KeyEvent e){ newQuery(); } public void keyReleased(KeyEvent e){ } //色を決めるための乱数の決定 public void newQuery(){ r = rnd.nextInt(4) % 4; rA = rnd.nextInt(4) % 4; rB = rnd.nextInt(4) % 4; rC = rnd.nextInt(4) % 4; rD = rnd.nextInt(4) % 4; if(r == 0){ colnum = 0; }else if(r == 1){ colnum = 1; }else if(r == 2){ colnum = 2; }else if(r == 3){ colnum = 3; } //回答部分の色決め(A:) if(rA == 0){ colAnum = 0; }else if(rA == 1){ colAnum = 1; }else if(rA == 2){ colAnum = 2; }else if(rA == 3){ colAnum = 3; } //回答部分の色決め(B:) while(rA == rB){ rB = rnd.nextInt(4) % 4; } if(rB == 0){ colBnum = 0; }else if(rB == 1){ colBnum = 1; }else if(rB == 2){ colBnum = 2; }else if(rB == 3){ colBnum = 3; } //回答部分の色決め(C:) while(rC == rA || rC == rB){ rC = rnd.nextInt(4) % 4; } if(rC == 0){ colCnum = 0; }else if(rC == 1){ colCnum = 1; }else if(rC == 2){ colCnum = 2; }else if(rC == 3){ colCnum = 3; } //回答部分の色決め(D:) while(rD == rA || rD == rB || rD == rC){ rD = rnd.nextInt(4) % 4; } if(rD == 0){ colDnum = 0; }else if(rD == 1){ colDnum = 1; }else if(rD == 2){ colDnum = 2; }else if(rD == 3){ colDnum = 3; } } }