質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

0回答

945閲覧

タイピングゲームを作成

O11n11a11ga

総合スコア4

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/11/18 15:40

タイピングゲームを作成

ルール
・下記の定数配列をclassブロックで宣言し,出題として使用すること。
・出題はランダムにでるものとする。
・startから開始し,10単語入力が終わった時点で終了とする。(startは含まない)
・入力は1文字ずつ(char)なので,正しく入力された文字は消去していく
final String[] words = { "extends", "implements", "this",
"break", "for" , "switch" , "while", "if", "public", "private",
"java", "int", "import", "label" , "double", "char", "case", "protected",
"swing", "print", "system", "set", "get", "static", "main", "new",
"equals" };

開始画面「start」から「s」入力・・・「tart」に変更し,最後の1文字「t」が入力されたら, 次の単語をランダムに出題。
startを除く10単語入力する。
10単語入力後にラベルの表示をミスタイプの回数を表示する。 例では,通常の文字色を「青」とし,ミスタイプが行われた場合に文字色を赤に変える。 (入力が一致した場合には青に戻す) ただし,色は任意とします ※ 可能であればよく使用する処理をモジュール化(メソッド化)し,呼び出して使用してください

ご教授よろしくお願いいたします。

発生している問題・エラーメッセージ

処理した後ミスタイプの回数が増えていく、それと10単語が何度もう繰り返えして終わらない

該当のソースコード

Java

1import java.awt.BorderLayout; 2import java.awt.Color; 3import java.awt.Font; 4import java.awt.event.KeyEvent; 5import java.awt.event.KeyListener; 6import java.util.Random; 7 8import javax.swing.JFrame; 9import javax.swing.JLabel; 10public class KeyTyping extends JFrame implements KeyListener { 11 static int count2=0; 12 static int number=0; 13 static int count3=0; 14 final String[] words = { "extends", "implements", "this", 15"break", "for" , "switch" , "while", "if", "public", "private", 16"java", "int", "import", "label" , "double", "char", "case", "protected", 17"swing", "print", "system", "set", "get", "static", "main", "new", 18"equals" }; 19 JLabel jl; 20 21 public static void main(String[] args) { 22 // TODO 自動生成されたメソッド・スタブ 23 new KeyTyping(); 24 } 25 26 KeyTyping(){ 27 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 28 this.setSize(500,300); 29 this.setTitle("KeyTyping"); 30 jl=new JLabel("start"); 31 this.getContentPane().add(BorderLayout.CENTER,jl); 32 jl.setFont(new Font(null,Font.BOLD,40)); 33 jl.setHorizontalAlignment(JLabel.CENTER); 34 35 36 this.addKeyListener(this); 37 38 this.setVisible(true); 39 } 40 41 42 43 @Override 44 public void keyTyped(KeyEvent e) { 45 // TODO 自動生成されたメソッド・スタブ 46 String str = jl.getText(); 47 int length = str.length(); 48 int count1=0; 49 char input=e.getKeyChar(); 50 char firstText = str.charAt(count1); 51 52 if (firstText == input) { 53 54 jl.setForeground(Color.BLUE); 55 count1++; 56 57 jl.setText(str.substring(count1)); 58 } else { 59 60 jl.setForeground(Color.RED); 61 count2++; 62 }  63         /*if(length==count1){ 64          for(int i=0;i<words.length;i++) { 65 jl.setText(OrderString()); 66 } 67 }*/ 68 69 70 if(length==count1) { 71 72 jl.setText(OrderString()); 73 count3++; 74 75 }else if(count3==words.length) { 76 jl.setText("ミスタイプは"+count2+"回でした"); 77 } 78 79 } 80 @Override 81 public void keyPressed(KeyEvent e) { 82 // TODO 自動生成されたメソッド・スタブ 83 84 } 85 86 @Override 87 public void keyReleased(KeyEvent e) { 88 // TODO 自動生成されたメソッド・スタブ 89 90 } 91 public String OrderString() { 92 93 94 Random ran = new Random(); 95 number = ran.nextInt(words.length); 96 97 return words[number]; 98 99 } 100 101} 102

試したこと

for文を使って、10回だけ繰り返しをさせたかったんですけど何も変わりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問