Java 多线程程序:汉字识别游戏

本程序使用 Java 多线程实现了一个简单的汉字识别游戏。程序界面包含一个显示汉字的标签、一个开始按钮、一个输入框和一个得分框。用户需要根据标签显示的汉字输入对应字符,并通过正确输入来获得分数。

代码示例

// WordThread.java
import java.awt.*;
public class WordThread extends Thread
{
    char word;
    int k = 19968;
    Label com;
    WordThread(Label com)
    {
        this.com = com;
    }
    public void run()
    {
        k = 19968;
        while (true)
        {
            word = (char) k;
            com.setText(''+word);
            try {
                sleep(6000); // 调用sleep方法使得线程中断6000豪秒
            } catch (InterruptedException e) {}
            k++;
            if (k >= 29968) k = 19968;
        }
    }
}

// ThreadFrame.java
import java.awt.*;
import java.awt.event.*;
public class ThreadFrame extends Frame implements ActionListener
{
    Label wordLabel;
    Button button;
    TextField inputText, scoreText;
    WordThread giveWord; // 用WordThread声明一个giveWord对象
    int score = 0;
    ThreadFrame()
    {
        wordLabel = new Label(" ", Label.CENTER);
        wordLabel.setFont(new Font("", Font.BOLD, 72));
        button = new Button("开始");
        inputText = new TextField(3);
        scoreText = new TextField(5);
        scoreText.setEditable(false);
        giveWord = new WordThread(wordLabel); // 创建giveWord,将wordLabel传递给WordThread构造方法的参数
        button.addActionListener(this);
        inputText.addActionListener(this);
        add(button, BorderLayout.NORTH);
        add(wordLabel, BorderLayout.CENTER);
        Panel southP = new Panel();
        southP.add(new Label("输入标签所显示的汉字后回车:"));
        southP.add(inputText);
        southP.add(scoreText);
        add(southP, BorderLayout.SOUTH);
        setBounds(100, 100, 350, 180);
        setVisible(true);
        validate();
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
    }
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == button)
        {
            if (!(giveWord.isAlive())) // giveWord调用方法isAlive()
            {
                giveWord = new WordThread(wordLabel);
            }
            try
            {
                giveWord.start(); // giveWord调用方法start()
            } catch (Exception exe) {}
        }
        else if (e.getSource() == inputText)
        {
            if (inputText.getText().equals(wordLabel.getText()))
            {
                score++;
            }
            scoreText.setText("得分:" + score);
            inputText.setText(null);
        }
    }
}

// ThreadWordMainClass.java
public class ThreadWordMainClass
{
    public static void main(String args[])
    {
        new ThreadFrame();
    }
}

程序说明

  1. WordThread 类:

    • 该类继承自 Thread 类,代表一个线程。
    • run() 方法是线程的执行入口,它不断地随机生成一个汉字,并将其显示在标签上。
    • sleep(6000) 方法使线程休眠 6000 毫秒,以便用户有时间查看并输入汉字。
  2. ThreadFrame 类:

    • 该类继承自 Frame 类,代表程序的主窗口。
    • 初始化时创建了一个 WordThread 对象 giveWord,用于显示汉字。
    • actionPerformed() 方法处理按钮点击和输入框输入事件。
    • 当点击开始按钮时,启动 giveWord 线程,开始显示汉字。
    • 当用户在输入框中输入汉字并回车时,程序会判断输入是否正确,并更新得分。

运行结果

运行程序后,将出现一个窗口,包含一个显示汉字的标签、一个开始按钮、一个输入框和一个得分框。用户可以点击开始按钮,然后在输入框中输入标签显示的汉字,并通过正确输入来获得分数。

注意

  • 程序中使用了 Java 的 AWT 图形库,因此需要导入 java.awt.* 包。
  • 程序使用了多线程技术,因此需要熟悉线程的基本概念和使用方法。
  • 程序中的汉字范围是从 19968 到 29968,对应 Unicode 编码中的汉字字符。
  • 程序仅供学习和参考,您可以根据需要进行修改和扩展。
Java 多线程程序:汉字识别游戏

原文地址: https://www.cveoy.top/t/topic/AjH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录