基于Java GUI实现的猜数字的小游戏

JAVA学习记录-two-2.创建带GUI的猜数游戏 java入门小练习-创建带GUI的猜数游戏 阅读详情

    今天在做学校里的java课程实验报告时遇到了这样的实验:

 这样的图形化界面我之前做过一次,之前是工作室考核时,要求我们用Swing图形化(窗口化)展示工作室小组成员的管理系统的相关面板。当时也是一个练手的项目吧。也正好接着这个报告再来回顾一下这个Swing的相关的一些操作。

首先先回顾一下我们的相关知识:

实验原理:

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。

实现功能不能缺少组件,主要包括以下的一些组件:窗口,弹窗,面板,文本框,列表框,按钮,图片,监听事件,鼠标,键盘事件

实验结果分析:

GUI设计提供了丰富的类库,这些类分别位于java.awt和javax.swing包中,简称为AWT和Swing。

Swing不仅实现了AWT中的所有功能,而且提供了更加丰富的组件和功能。

Swing组件的所有类都继承自Container类,然后根据GUI开发的功能扩展了两个主要分支:容器分支(包括Window窗口和Panel面板)和组件分支。

        容器分支:是为了实现图形用户界面窗口而设计的。

        组件分支:是为了实现向容器中填充数据、元素以及人机交互组件等功能。

Swing 提供了三个主要的顶级容器类:JFrame、JDialog和JApplet。

 JFrame和Frame一样是一个独立存在的顶级窗口,不能放置在其它容器之中,JFrame支持通用窗口所有的基本功能,例如窗口最小化、设定窗口大小等等。下面通过一个小案例来展示JFrame的使用效果。Swing组件不能单独存在,必须放置于容器中,而组件在容器中的位置和尺寸是由布局管理器来决定的。Swing工具在AWT的基础上提供了8中布局管理器,分别为 : BorderLayout(边界布局管理器)等等。1. 事件源(组件):事件发生的场所,通常就是产生事件的组件,例如窗口、按钮、菜单等

 事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作)

监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出响应处理的对象(对象中包含事件处理器) 。事件处理器:监听器对象对接收的事件对象进行相应处理的方法

在AWT中提供了丰富的事件,大致包括窗体事件、鼠标事件、键盘事件、动作事件等。

实验代码如下:

package com.csh.java;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;

public class GUI {

    static  int min=0,max=1000,count=1,a=new Random1().getone();
    public static void main(String[] args) {

        JFrame jFrame = new JFrame("猜数字游戏");//创建对象
        jFrame.setVisible(true);//窗口的可视化
        jFrame.setBounds(650, 150, 500, 600);//窗口的初始化
        jFrame.setResizable(false);
        Container container = jFrame.getContentPane();
        container.setBackground(Color.lightGray);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭事件
        container.setLayout(null);

        JTextField t =new JTextField();
        container.add(t);
        t.setBounds(120,510,200,20);
        JLabel jLabel2 = new JLabel("输入想猜的数字:");
        container.add(jLabel2);
        jLabel2.setBounds(20,505,100,30);

        JButton jButton = new JButton("猜一猜");
        container.add(jButton);
        jButton.setBounds(330,500,100,40);

        JTextArea jTextArea = new JTextArea();

        jTextArea.setLineWrap(true);    //设置自动换行,自动换行则不会出现横向的滚动条
        jTextArea.setEditable(true);
        JPanel jPanel = new JPanel();
        JScrollPane scroll=new JScrollPane(jTextArea);
        container.add(scroll);
        jTextArea.setBounds(0,0,500,500);
        scroll.setBounds(0,0,480,500);
        //初始化按钮信息
        //处理按钮的监听器
        jButton.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //获取到文本框中的值
                String text = t.getText();
                //这里需要一个随机数的生成工具
                int b= Integer.parseInt(text);
                if(a>b)
                {
                    String s="第"+(count++)+"次猜的数字在"+min+"到"+max+"之间"+b+"\n"+b+"猜小了,请重新第"+(count)+"次猜"+b+"和"+max+"之间"+"\n";
                    min=b;
                    jTextArea.append(s);
                }else if(a<b)
                {
                    String s="第"+(count++)+"次猜的数字在"+min+"到"+max+"之间"+b+"\n"+b+"猜大了,请重新第"+(count)+"次猜"+min+"和"+b+"之间"+"\n";
                    max=b;
                    jTextArea.append(s);
                }
                else
                {
                    String s="第"+(count++)+"次猜的数字在"+min+"到"+max+"之间"+b+"\n"+"恭喜你花了"+(--count)+"次猜对了!请退出";
                    jTextArea.append(s);
                    count=0;
                    min=0;
                    max=1000;
                    a=new Random1().getone();
                }
                if(count==11)
                {
                    String s="已用完,请退出"+"正确的数字是"+a+"\n";
                    jTextArea.append(s);
                    count=0;
                    min=0;
                    max=1000;
                    a=new Random1().getone();
                }
            }
        });

    }
}

运行结果:

 

Unity Spine GPU动画优化:从CPU蒙皮到GPU驱动的性能跃迁 在游戏开发中,骨骼动画是实现角色动作的核心技术,其传统CPU蒙皮方案通过逐顶点计算骨骼变换矩阵来实现动画效果。这一原理虽然灵活,但在处理大量同屏角色时,CPU计算与Draw Call数量会成为性能瓶颈。随着GPU通用计算能力的发展,将动画计算从CPU迁移至GPU成为重要的性能优化方向,其技术价值在于利用GPU的并行处理能力,一次性完成海量顶点的变换计算,并实现极致的网格合批,从而大幅提升渲染效率。这一技术尤其适用于横版动作、MMO等需要同屏大量角色的应用场景。本文聚焦于Spine 2D骨骼动画的GPU化实践 阅读详情

相关推荐

Java入门实战:10个经典小游戏项目带你从零掌握编程核心

面向对象编程(OOP)是Java语言的核心思想,它通过封装、继承和多态三大特性,将现实世界的事物抽象为类和对象,从而构建出结构清晰、易于维护的软件系统。其原理在于将数据与操作数据的方法绑定在一起,形成独立的模块,通过对象之间的交互完成复杂功能。掌握OOP不仅能提升代码的复用性和扩展性,更是理解现代软件工程的基础。在游戏开发领域,这一思想的价值尤为突出,例如在实现贪吃蛇、俄罗斯方块等经典游戏时,玩家、地图、方块等都可以被设计为独立的对象,通过事件驱动和状态管理完成交互。本文以Java Swing图形界面和事件

weixin_34101914的博客 264

Java GUI编程小练习——猜数字游戏

然后,我们使用FlowLayout布局管理器,将三个组件(一个输入框、一个按钮和一个输出框)添加到了JFrame对象上,并设置了输入框和输出框的尺寸。Java中的GUI开发采用的是Swing组件库,Swing是一种跨平台的图形用户界面(GUI)工具包,它是在Java SE的基础上开发的。首先,我们需要创建一个Java项目,并在项目中创建两个类,一个类用于实现GUI界面,一个类用于实现猜数字的逻辑。在initUI()方法中,我们首先创建了一个JFrame对象,设置了该对象的一些属性,比如标题、大小等。

qq_69877256的博客 1742

用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)

文章目录用python开发一个有趣的猜数字小游戏相关知识1、 python的GUI编程1.1 pythonGUI常用库对比1.2 tkinter组件1.2.1 tkinter组件列表1.2.1 tkinter组件共同标准属性1.2.1 tkinter组件位置管理方法1.3 tkinter.messagebox(消息弹窗显示)4、 游戏代码详细解释5、 tips(遇到的问题和规律总结)5.1、 随机...

weixin_42515907的博客 1万+

实现一个具有图形用户界面的猜数游戏

实现一个具有图形用户界面的猜数游戏

csdnVIP071210的博客 332

共享单车需求预测问题:建模篇

机器学习训练营——机器学习爱好者的自由交流空间(qq群号:696721295) 在上一篇里,我们使用可视化的方法分析了“共享单车”的数据集,理解了特征(变量)之间的关系。我们将在本篇建立几个模型预测单车的需求量,并比较它们的预测效果。 随机森林填充法 首先,导入必需的库、训练集和检验集。 import pylab import calendar import numpy as np impor...

wong2016的博客 1万+

Oracle集群管理-19.3升级19.18 opatchauto总结(java报错,resume oneoffs缺失目录)

t. (那个认为补丁已经打上了,但是oneoffs目录里面没有。将安装包文件的权限全部改成777.就继续执行了上述命令 ,此时使用opatch lsinv也是报错 ,在正常执行opatchauto apply。1 创建目录,存放补丁包,并赋予权限。于是使用如下命令对补丁进行回滚。

oradbm的博客 1414

Java_GUI_SWING_猜数字

GUI--猜数字

qq_60955261的博客 369

AI自动打游戏全攻略:从环境搭建到Agent训练实战

本文系统介绍了AI自动打游戏的技术实现方案,重点解析了强化学习(DQN算法)在贪吃蛇游戏中的应用。文章从技术选型入手,对比了强化学习与计算机视觉两种方案,详细说明了开发环境配置步骤,并深入讲解了DQN模型构建、游戏环境封装、训练优化等核心环节。通过经验回放和目标网络等技术,有效提升了AI的学习效率和稳定性。该方案具有通用性,只需调整参数即可应用于其他简单游戏场景,为开发者实现游戏AI提供了完整的技术路径。

milk416666的博客 4097

java面向对象基础(猜数字小游戏)

先想好小游戏需要实现的效果,由计算机随机生成一个1到100的整数,这个数是我们看不见的,而我们需要去猜这个数,如果猜错了会提示是猜大了还是猜小了,直到猜对了,游戏才会结束。需要用到的有Random来控制生成随机数。由Scanner来控制键盘输入。就可以实现这个效果。话不多说,接下来看代码。

h091616的博客 1458

自动驾驶必备:5分钟搞懂gPTP如何实现μs级时间同步(附开源代码)

本文深入解析了gPTP协议在自动驾驶系统中实现微秒级时间同步的核心机制与工程实践。针对多传感器融合与跨域协同的严苛需求,文章拆解了gPTP的频率同步、对等延迟测量与时间偏移校正三步流程,并提供了基于linuxptp和AVnu gPTP两大开源代码库的实战配置指南与性能评估方法,助力开发者构建高精度、高可靠的车载时间同步网络。

weixin_29211309的博客 167

同花顺PC端逆向解析:Hook注入与加密破解实战指南

在Windows客户端数据采集场景中,当常规HTTP爬虫失效时,内存级逆向分析成为获取实时行情数据的关键路径。其核心涉及进程注入、运行时解密、反调试绕过等底层技术,本质是理解PE加载机制、函数调用约定与内存保护策略的协同过程。同花顺作为典型加固客户端,采用ASPack加壳+自研解密+多线程校验三重防护,迫使开发者转向APC注入、动态密钥提取与XXTEA算法复刻等高阶手段。本文聚焦于DLL注入选型依据、解密函数定位方法及二进制Blob结构化解析,最终实现从内存读取到Pandas DataFrame的端到端数据

weixin_32234493的博客 1192

java实现计时器猜数字_一个猜数字的小游戏,要求添加计时器,下面是我的代码求大佬分析...

已结贴√问题点数:20回复次数:3 一个猜数字的小游戏,要求添加计时器,下面是我的代码求大佬分析package bianxie;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import jav...

weixin_28785069的博客 743

MATLAB MinGW-w64 C/C++ 编译器 手动安装配置

根据Matlab版本与MinGW版本对应关系,手动安装、配置并测试MinGW

zjh2883的博客 7339

JAVA-gui编程猜数字游戏

import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swin...

whatiwhere的博客 2411

UG二次开发GRIP刻字

UG二次开发GRIP刻字

qq285503851的博客 1137

若依框架二次开发——RuoYi-AI 本地部署流程

若依框架二次开发——RuoYi-AI 本地部署流程

bjzhang75的博客 1783

java猜数游戏图形界面_Java的带GUI界面猜数字游戏的实现示例

先导包import java.util.*;import javax.swing.*;再写主方法public static void main(String[] args) {}新声明一个Scanner和随机数public static void main(String[] args) {Scanner in = new Scanner(System.in);Random r = new Rand...

weixin_42500195的博客 637

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[源码和文档分享]基于Java的带GUI界面猜数字游戏

一 需求分析 完成一个猜数字的GUI游戏。 开始游戏后,产生一个没有重复数字的4位随机数,用户每猜一个数字,显示出“完全猜中的数字个数”和“猜中数字但位置错误的数字个数”,比如nAmB,数字n表示猜中的位置正确的数字个数,数字m表示数字正确而位置不对的数字个数。例如,正确答案为5234,如果用户猜5346,则显示:1A2B,数字1表示数字5及其位置猜对了,数字...

qq_38505075的博客 189

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java基于GUI完成的猜数字小游戏

猜数字小游戏 不废话想看看效果吧! 当我们答对后就会出现: 如果你实在急着想知道答案: 简要说明: 所猜测的数字为1~1000; 只能通过按确定输出答案,未设置Enter键直接输入的监控。 退出请直接点击叉叉无另外设置退出键。 代码段(许多解释已有注释) 设置一个类产生随机数,并可以通过其中的方法取得该随机数; package GUI; import java.util.Random; public class numberMannerge { private int rnum = 0;

m0_55847943的博客 4008

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

小玩意:猜数字小游戏(Java GUI)

猜数字小游戏(Java GUI) 又到了学期末,又到了交各种各样作业的时间。悉听闻面向对象的小作业,诶,课程设计四选一,还没写,得嘞,得写了。 找一天,开始写,放正文 游戏规则 游戏规则,顾名思义,游戏的规则, 该项课程设计,要求我们自行设计游戏规则,那么,规则如下: 开始游戏后,产生一个没有重复数字的4位随机数,用户每猜一个数字,显示出“完全猜中的数字个数”和“猜中数字但位置错误的数字个数”,用户根据游戏提示的信息继续猜,直到猜中为止。一次猜对得100分,多一次扣十分,多于五次得50分。 核心代码 在本游

小那猿同学的博客 3196

猜数字游戏详解_使用Java语言实现,并且带有GUI图形化界面

使用各种变量记录游戏状态,通过 Swing 创建图形用户界面,并根据用户的输入和游戏逻辑来更新界面和游戏状态。

猪肉炖粉条的博客 1513

python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...

文章目录用python开发一个有趣的猜数字小游戏用于字符串的格式化,通过 {} 和 : 来代替以前的 %1、 python的GUI编程1.1 pythonGUI常用库对比Python 提供了多个(GUI)图形开发界面的库,几个常用 Python GUI 库如下:Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 ,可良好地运行在绝大多数平台中。...

weixin_42634811的博客 2207

Java GUI程序示例

Java GUI程序示例:包括一、 Java猜数字游戏GUI版;二、 JAVA简单画图程序;三、GUI界面人机猜拳小程序;四、简单记事本。

cnds123的专栏 4993

基于Java Swing的猜数字小游戏(2)

本文介绍了一个基于Java Swing的猜数字小游戏设计。项目采用单一类封装所有功能,分为组件初始化、游戏数据初始化、事件监听和业务逻辑处理四大模块。界面布局采用边界布局、流式布局和网格布局组合,包含难度选择、输入框、提交按钮和历史记录显示等功能区域。核心算法包括随机数生成、猜测结果判断和历史记录拼接,确保了游戏逻辑的准确性和性能。测试结果表明程序能正确处理各类输入场景,功能完整且交互友好。关键代码展示了组件初始化、提交处理、历史更新和游戏重置等核心逻辑的实现细节。该设计充分体现了小型桌面应用"界

m0_66818464的博客 817

基于Java Swing的猜数字小游戏(1)

摘要:本文介绍了一款基于Java Swing开发的猜数字GUI游戏,兼容JDK8+环境。游戏具有随机数字生成、输入验证和结果提示等核心功能,支持三种难度等级选择(1-50/100/200范围)和猜测历史记录显示。项目采用面向对象设计,优化了用户交互体验,包括回车提交、错误自动清空输入框等功能。该游戏适合Java Swing初学者学习参考,仅需JDK内置库,无需额外依赖。(150字)

m0_66818464的博客 527
上一篇: 谷粒商城91p中用fegin调用另一服务失败
下一篇: python 爱心代码
jakeonil
博客等级 码龄5年 1万+粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jakeonil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值