news 2026/7/20 16:10:03

Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践

项目一:小学生算术练习系统
1.1 需求分析
支持 + − × ÷ 四种运算,操作数涵盖整数、小数、分数
四种难度梯度:简单 → 中等 → 困难 → 专家
随机出题、按键提交、实时反馈、错题回顾
计时计分,进度条显示
1.2 架构设计
采用 CardLayout 实现三页切换(欢迎页 → 游戏页 → 结果页),避免多窗口跳转带来的状态同步问题。

核心类职责:

Fraction:封装分数的加减乘除与约分,支持带分数解析
Question:策略模式生成不同难度的题目
GameUI:界面与逻辑解耦,专注事件分发
ArithmeticGame:程序入口
1.3 程序界面
屏幕截图 2026-07-01 205846

屏幕截图 2026-07-01 205925

屏幕截图 2026-07-01 210215

1.4 完整代码
Fraction.java
import java.util.Objects;

/**

  • 分数类:支持加减乘除、约分、带分数/假分数转换
    */
    public class Fraction {
    private final int numerator;
    private final int denominator;

    public Fraction(int numerator, int denominator) {
    if (denominator == 0) {
    throw new IllegalArgumentException(“分母不能为零”);
    }
    if (denominator < 0) {
    numerator = -numerator;
    denominator = -denominator;
    }
    int gcd = gcd(Math.abs(numerator), Math.abs(denominator));
    this.numerator = numerator / gcd;
    this.denominator = denominator / gcd;
    }

    public Fraction(int whole) {
    this(whole, 1);
    }

    private int gcd(int a, int b) {
    while (b != 0) {
    int temp = b;
    b = a % b;
    a = temp;
    }
    return a;
    }

    public Fraction add(Fraction other) {
    int num = this.numerator * other.denominator + other.numerator * this.denominator;
    int den = this.denominator * other.denominator;
    return new Fraction(num, den);
    }

    public Fraction subtract(Fraction other) {
    int num = this.numerator * other.denominator - other.numerator * this.denominator;
    int den = this.denominator * other.denominator;
    return new Fraction(num, den);
    }

    public Fraction multiply(Fraction other) {
    return new Fraction(this.numerator * other.numerator, this.denominator * other.denominator);
    }

    public Fraction divide(Fraction other) {
    if (other.numerator == 0) throw new ArithmeticException(“除以零”);
    return new Fraction(this.numerator * other.denominator, this.denominator * other.numerator);
    }

    public double toDouble() {
    return (double) numerator / denominator;
    }

    @Override
    public String toString() {
    if (denominator == 1) return String.valueOf(numerator);
    if (Math.abs(numerator) > denominator) {
    int whole = numerator / denominator;
    int rem = Math.abs(numerator % denominator);
    if (rem == 0) return String.valueOf(whole);
    return whole + “'” + rem + “/” + denominator;
    }
    return numerator + “/” + denominator;
    }

    @Override
    public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Fraction)) return false;
    Fraction other = (Fraction) o;
    return this.numerator == other.numerator && this.denominator == other.denominator;
    }

    @Override
    public int hashCode() {
    return Objects.hash(numerator, denominator);
    }

    public int getNumerator() { return numerator; }
    public int getDenominator() { return denominator; }
    }

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 16:08:15

fakeLoader.js与CSS动画对比:何时选择jQuery插件而非纯CSS方案

fakeLoader.js与CSS动画对比&#xff1a;何时选择jQuery插件而非纯CSS方案 【免费下载链接】fakeLoader.js fakeLoader.js is a lightweight jQuery plugin that helps you create an animated spinner with a fullscreen loading mask to simulate the page preloading effect…

作者头像 李华
网站建设 2026/7/20 16:05:22

RAP2-DELOS终极指南:如何快速搭建企业级API管理平台

RAP2-DELOS终极指南&#xff1a;如何快速搭建企业级API管理平台 【免费下载链接】rap2-delos 阿里妈妈前端团队出品的开源接口管理工具RAP第二代 项目地址: https://gitcode.com/gh_mirrors/ra/rap2-delos RAP2-DELOS是阿里妈妈前端团队开发的开源接口管理工具的后端API…

作者头像 李华
网站建设 2026/7/20 16:02:06

计算机毕业设计之基于ASP.NET的图书管理系统的设计与实现

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;图书管理系统利用计算机网络实现信息化管理&#xff0c;使整个图书管理的发展和服务水平有显著提升。本文拟采用Visual Studio开发工具…

作者头像 李华
网站建设 2026/7/20 16:00:47

Unity TEngine框架实战:集成避坑指南与性能优化方案

1. 项目概述&#xff1a;为什么我们需要一份TEngine的FQA在Unity项目开发中&#xff0c;尤其是涉及复杂UI、资源管理和热更新等模块时&#xff0c;选择一个稳定、高效的框架是项目成功的关键。TEngine作为一款在社区中逐渐崭露头角的开源Unity游戏框架&#xff0c;以其模块化设…

作者头像 李华
网站建设 2026/7/20 15:59:06

plpgsql_check 与PostgreSQL 18+新特性:兼容性检查与最佳实践

plpgsql_check 与PostgreSQL 18新特性&#xff1a;兼容性检查与最佳实践 【免费下载链接】plpgsql_check plpgsql_check is a linter tool (does source code static analyze) for the PostgreSQL language plpgsql (the native language for PostgreSQL store procedures). …

作者头像 李华