認知心理学で有名な「ストループ効果」を体験できるJavaアプリケーションです。文字の意味と色の不一致により生じる反応時間の遅れを測定し、機敏性と集中力をテストします。
このゲームでは、画面に表示される色名(「赤」「黄」「緑」)の文字の色を判断し、対応するボタンをクリックします。文字の意味と色が異なる場合(例:「赤」という文字が緑色で表示される)、脳が混乱し、反応が遅れる現象が「ストループ効果」です。
特徴:
- 30秒間のタイムアタック形式
- 正解数、不正解数、反応時間を記録
- 正解率とスコアを自動計算
- OS: macOS
- 開発環境: Visual Studio Code
- Java: JDK 8以上
- VS Code拡張機能: Extension Pack for Java(Microsoft製)
-
Java開発環境の準備
# Javaがインストールされているか確認 java -version -
VS Codeの設定
- VS Codeを起動
- 拡張機能から「Extension Pack for Java」をインストール
- Java JDKのパスが正しく設定されていることを確認
-
プロジェクトの配置
# 任意のディレクトリに StroopTest.java を配置 mkdir ~/StroopTest cd ~/StroopTest # ここに StroopTest.java をコピー
-
実行方法
- VS Codeで
StroopTest.javaを開く - エディタ上の Run ボタン(
▶️ )をクリック - ゲームウィンドウが起動します
- VS Codeで
- スタート: 「スタート」ボタンをクリックしてゲーム開始
- 判断: 画面中央に表示される文字の色を判断
- 回答: 下部の色ボタン(赤・黄・緑)から対応する色をクリック
- 制限時間: 30秒以内にできるだけ多くの問題に正解する
- タイムアウト: 3秒以内に回答しないと自動的に不正解
- 正解: +100点(基本点)
- 反応時間ペナルティ: 平均反応時間 ÷ 10 を減点
- 最終スコア: (正解数 × 100) - (平均反応時間 ÷ 10)
例:
- 「赤」という文字が緑色で表示 → 緑ボタンを押す
- 「黄」という文字が赤色で表示 → 赤ボタンを押す
┌─────────────────────────────────┐
│ 残り時間: 30秒 │
│ 「文字の色」に対応するボタンを... │
│ 正解: 0 / 不正解: 0 │
├─────────────────────────────────┤
│ │
│ 赤 ← 色付き文字 │
│ │
├─────────────────────────────────┤
│ [赤] [黄] [緑] ← ボタン │
│ │
│ [スタート] │
└─────────────────────────────────┘
- マウスクリックのみで操作
- キーボード操作は不可
- 「スタート」ボタンをクリック
- 文字が表示される(0.5秒間隔)
- 文字の色に対応するボタンをクリック
- 結果がステータス欄に表示される
- 30秒経過で自動終了
- 結果ダイアログが表示される
- 総回答数: 制限時間内に回答した問題数
- 正解数: 正しく回答した問題数
- 不正解数: 誤答またはタイムアウトの数
- 正解率: (正解数 ÷ 総回答数) × 100
- 平均反応時間: 正解した問題の反応時間の平均(ミリ秒)
- 最終スコア: 正解数と反応速度を総合評価
このプログラムは、以下の3つのクラスで構成されています:
役割: ゲームの状態管理
- 正解数・不正解数の記録
- 反応時間の保存
- 残り時間の管理
- 統計計算(正解率、平均反応時間)
主要メソッド:
recordCorrectAnswer(long reactionTime) // 正解を記録
recordIncorrectAnswer() // 不正解を記録
calculateAverageReactionTime() // 平均反応時間を計算
calculateAccuracy() // 正解率を計算役割: スコア計算
- 正解数に基づく基本点の計算
- 反応時間に基づくペナルティの適用
- 最終スコアの算出
計算式:
スコア = (正解数 × 100) - (平均反応時間 ÷ 10)役割: UI管理とゲームロジック
主要コンポーネント:
stimulusLabel: 刺激(色付き文字)を表示redButton, yellowButton, greenButton: 回答用ボタンstartButton: ゲーム開始ボタンstatusLabel: ステータスメッセージ表示scoreLabel: スコア表示timerLabel: 残り時間表示
主要メソッド:
startGame() // ゲーム開始処理
showNextStimulus() // 次の刺激を表示
checkAnswer() // 回答の正誤判定
endGame() // ゲーム終了処理使用技術:
- GUI: Java Swing
- レイアウト: BorderLayout, GridLayout
- タイマー: javax.swing.Timer
- 乱数生成: java.util.Random
定数設定:
GAME_DURATION_SECONDS = 30 // ゲーム時間(秒)
STIMULUS_TIMEOUT_MS = 3000 // 刺激のタイムアウト(ミリ秒)
RESPONSE_DELAY_MS = 500 // 次の刺激までの遅延(ミリ秒)
SCORE_PER_CORRECT = 100 // 正解あたりの得点[ゲーム開始]
↓
[刺激表示] → ランダムな色・文字を選択
↓
[ユーザー回答] → 反応時間を計測
↓
[正誤判定] → GameStateに記録
↓
[次の刺激] または [ゲーム終了]
↓
[結果表示] → スコア計算・統計表示
このプログラムは教育目的で作成されています。自由に改変・再配布可能です。