首页 > 编程语言 >学习记录23java拼图小游戏

学习记录23java拼图小游戏

时间:2022-10-30 20:56:50浏览次数:50  
标签:鼠标 拼图 代码 23java 小游戏 事件 按钮 监听 图片

拼图目标

GUI(Graphical User Interface,图形用户接口)

这是指采用图形化的方式显示操作界面,几乎所有的语言都有GUI的知识java中有两套完整的体系:

  • AWT包(出现的比较早,可能会有兼容性的问题,一些中文显示乱码)
  • Swing包(推荐)
    java主要是做服务器开发,我们平时使用的手机、看小说电影,这都属于是服务器传输到浏览器当中,浏览器等等只是做了一个展示的功能。用户是接触不到的,用户接触的是浏览器等等
    之前学习的东西目前在脑子里都是零散的,还不清楚在实际开发中如何去用,前面写的代码只能算是一个综合案例,称不上是项目
    这次的小游戏将是IT路上的第一个项目,用到的知识:
    封装、继承、多态、抽象类、接口、内部类、集合、字符串、数组、循环、判断等等

主界面分析

第一部分:最外层窗体JFrame
J代表java,Frame代表窗体、界面的意思,我们写的文字、图片都要放进这个窗体中去
第二部分:菜单
1.功能:更换图片、重新游戏、重新登陆、关闭游戏
2.关于我们:放公众号
菜单的名字叫做JMenBar,J代表java,Menu代表菜单,Bar代表条目
第三部分:JLabel(管理文字和图片的容器,不是图片;Label代表容器)
这三个部分有一个统一的名称,叫做组件,这包括图片、按钮、进度条等等都是组件

添加图片

这个图片不是一张而是十五张,将图片、文字放到JLable管理区;创建Imagelcon对象,可以对图片的宽高、位置进行设置;在把图片放到JLable的对象中;再把这个整体放到界面当中
指定图片位置以及宽高:
1.利用管理容器中的setBounds()方法进行设置,并且这个各步骤要在管理容器添加到界面之前
2.注意事项:游戏界面中被分为了三个区域上面的名字、名字下面的菜单、还有下面的一个容器;这个容器时用来存放组件的;隐藏容器不需要创建对象,通过getGontentPane()方法来获得这个容器;并将“图片默认设置在容器中央”这个设置取消掉,设置语句:setLayout(null);取消默认居中放置。
这个步骤,要在界面初始化前进行

随即图片

**定义整型二维数组,不产生重复、一次一遍历,打乱数组元素
**

事件

什么是事件?
事件是可以被识别的操作
当我们对组件做了某个操作之后,就会执行的代码
实际开发当中,事件大量被应用如,点击登录按钮之后,就会对用户的密码和用户名进行校验

事件源

  • 按钮、图片、窗体等等各组件
  • 对事件源进行的操作叫做事件,如,鼠标单击、鼠标划入、键盘操作等等
  • **绑定监听。当事件源上发生了某个事件,则执行某段代码,如,点击登录按钮之后,就会对用户的密码和用户名进行校验
    监听常包括:
    1.KeyListener键盘监听:通过键盘对组件进行操作,执行对应代码

2.MouseListener鼠标箭头:通过鼠标对组建的操作,执行对应代码

3.ActionListener动作监听:前两者的精简版(对于鼠标,之监听点击;对于键盘,只监听空格)**

  • 1.创建一个按钮对象 按钮类是JButton,括号内添加文本
    JButton jtb = new JButton("是兄弟来砍我");
  • 2.设置位置和宽高
    jtb.setBounds(0, 0, 100, 50);
  • 3.给按钮添加动作监听,jtb是组件对象,用点操作符引用出事件类型
    addActionListener,是动作监听,监听的时间有 鼠标左击、
    而括号内,传递的是,当监听到事件之后,所要执行的代码
    选中下面的方法ctrl+b查看源代码,得知这个方法是一个接口,所以我们要传递一个这个接口的实现类对象
    参数:事件触发后要执行的代码 一个实现类的对象 写一个对应的实现类 在实现类当中重写方法
    jtb.addActionListener(new MyAddActionListener());
    或者通过另一种方法:
    思想:监听,这在java中是一个行为,并且没有被抽取到父类当中,说明这是一个接口,类提供使用,只要对接这个接口,就可以使用它。那么我们现在需要适应这个接口,我们就让本类通过关键字implements与这个接口对接,而后重写所有抽象方法;在jtb.addActionListener()语句中,只用填写this即可;可以这样理解,我们对抽象类也好、接口也好的继承和实现,原因是这个类当中有相同操作但具体内容不同的行为,换句话说,就是这个类的对象需要进行有相同操作但具体内容不同的行为,所以,我们着重完成重写方法中的代码,至于形参需要传输的对象,不需要具体化,也就是说,不需要引用,只需要有个实例化即可,所以我们在括号内,只需要写this。我们有知道,this关键字就代表该类的一种对象,这就足以
    再来看方法重写中的代码,需要执行什么就写对应代码就行了;当多按钮时,可以对按钮对象名进行判断,进而执行相对应的代码;判断方法:形参名.getSource(),这用来获取调用重写方法的对象,并且用与之同类型的变量来接受它,再用if判断、分支即可
    这些步骤完成后,就可以执行相应操作了;之前看到的点不完的按钮,就是通过这个来实现的
  • 4.再把按钮添加到整个界面当中

MouseListener

ctionListener具有局限性,他只能监听鼠标单击和键盘空格,并且作用单一;当我们需要对鼠标的动作进行更为细致的划分时,我们就要是以哦那个MouseListener
这个监听分为四个过程:1.划入动作;2.按下动作;3.松开动作;4.划出动作;其中2与3统称为单击事件
思考:当我们需要监听一个按钮的单击事件时,有哪几种方式呢?
1.动作监听
2.鼠标键听中的单击事件
3.鼠标监听中的松开事件

MouseListener中的重写方法


绑定事件,this关键字调用本类对象

以上的监听方式的绑定(add监听名)、调用都是大致相同的,可以类比着去写代码
注意:
KeyListener有区别于其他两种的方法。它可以利用“形参名.getKeyCode()方法来获取每一个按键的编号(int类型),并且用整型变量来接收”
每一个按键都有一个编号与之对应,用于区分按键

总结
  • 1.将15张图片移动到界面的中央下方
    2.添加背景图片 细节:代码中,后添加的图片在前面图片的下方
    3.添加了图片的边框 利用语句jLabel.setBorder(new BevelBorder(BevelBorder.RAISED));直接实例化对象,有参构造;参数0(RAISED),让图片突起;参数1(LOWERED)让图片凹下去
    4.优化路径,相对路径、绝对路径

总结:

游戏打包exe

游戏打包exe要考虑的因素:
1.一定要包含图形化界面;之前写的学生管理系统、抽奖等等打包之后,也没有位置进行操作
2.打包代码;
3.游戏用到的图片
4.对方电脑的运行环境,所以jdk也要打包

游戏打包核心步骤

1.java代码打包成一个压缩包,是jar后缀的压包
2.把jar包转化为exe安装包(这里面只有代码,没有图片)
3.把第二步的exe、图片、JDK整合在一起,变成最终的exe安装包

标签:鼠标,拼图,代码,23java,小游戏,事件,按钮,监听,图片
From: https://www.cnblogs.com/hezhipeng/p/16831319.html

相关文章