Java学习之三(拼图游戏)

拼图小游戏(练手项目)(GUI)

主界面

组件

JFrame 最外层窗体

JMenu  最上层菜单

JLabel   管理文字和图片的容器

练习

答案

创建文件

ui   表示界面

用到了JFrame包

package com.itheima.ui;

import javax.swing.*;

public class Test {
    public static void main(String[] args) {
        //1.创建一个游戏的主界面
        JFrame gameJframe = new JFrame();
        gameJframe.setSize(603, 680);//默认创建界面不显示,所以需要更改
        gameJframe.setVisible(true);
        //2.创建一个登录界面
        JFrame loginJframe = new JFrame();
        loginJframe.setSize(488, 430);
        loginJframe.setVisible(true);
        //3.创建一个注册界面
        JFrame regionJframe = new JFrame();
        regionJframe.setSize(488, 500);
        regionJframe.setVisible(true);
    }
}

  表示当前方法已过时

补充知识

构造方法

在Java中,当在类中定义一个方法的方法名与类名相同的时候,这个方法就被称为构造方法。

构造方法用于创建对象并初始化对象的状态。它会在对象创建时自动调用,并且只会被调用一次

构造方法的方法名必须与类名完全相同,不能有返回值,也不能声明为static。构造方法可以有多个,根据参数的不同来区分。

通常情况下,我们在类中定义构造方法是为了方便对象的创建和初始化。当我们使用new关键字创建一个对象时,就会自动调用该类的构造方法来初始化对象的状态。

菜单制作

  1. 创建JMenuBar
  2. 创建Jmenu
  3. 在创建JMenuItem
  4. 把JMenuItem放到Jmenu里面
  5. 把Jmenu放到JMenuBar中
  6. 最后把JMenuBar添加到整个Jframe中
练习

   private void initJmenuBar() {
        //初始化菜单
        //创建整个菜单对象
        JMenuBar jMenuBar = new JMenuBar();
        //创建菜单上两个选项的对象(功能 关于我们)
        JMenu functionMenu = new JMenu("功能");
        JMenu aboutJMenu = new JMenu("关于我们");

        //创建选项下的条目对象
        JMenuItem replayItem = new JMenuItem("重新游戏");
        JMenuItem reLoginItem = new JMenuItem("重新登陆");
        JMenuItem closeItem = new JMenuItem("关闭游戏");


        JMenuItem accountItem = new JMenuItem("公众号");

        //将每一个选项的条目添加到选项中
        functionMenu.add(replayItem);
        functionMenu.add(reLoginItem);
        functionMenu.add(closeItem);

        aboutJMenu.add(accountItem);

        //将菜单里面的两个选项添加到菜单中
        jMenuBar.add(functionMenu);
        jMenuBar.add(aboutJMenu);

        //给整个界面设置菜单
        this.setJMenuBar(jMenuBar);
    }

补充知识

CTRL alt M 快速创建方法


添加图片

Jlabel 管理区域

ImageIcon

组件

  private void initImage() {
        int number = 1;
        //外循环--表示在把内循环重复执行4次
        for (int i = 0; i < 4; i++) {
        //内循环-- 表示在一行添加4张图片
            for (int j = 0; j < 4; j++) {
                //创建JLable的对象(管理容器)
                JLabel jLabel = new JLabel(new ImageIcon("D:\\GoWorks\\JavaWorks\\puzzlegame\\image\\animal\\animal3\\"+number+".jpg"));
                //指定图片位置
                jLabel.setBounds(105 * j, 105 * i, 105, 105);
                //把容器添加到界面中
                this.getContentPane().add(jLabel);
                number++;
            }
        }

打乱图片顺序

二维数组

练习

    private void initData() {
        int[] tempArr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
        Random r = new Random();
        for (int i = 0; i < tempArr.length; i++) {
            //获取随机索引
            int index = r.nextInt(tempArr.length);
            //拿着遍历的每个数据,跟索引上的数据进行交换
            int temp = tempArr[i];
            tempArr[i] = tempArr[index];
            tempArr[index] = temp;
        }
        for (int i = 0; i < tempArr.length; i++) {
            data[i/4][i%4] = tempArr[i];
        }
}

补充知识

事件

  • 事件源:按钮 图片 窗口
  • 事件: 某些操作 如:鼠标单击 鼠标划入
  • 绑定监听:当事件源上发生了某件事,则执行某段代码

        KeyListener  键盘监听         MouseListener  鼠标监听    ActionListener  动作监听

设置事件

第一种:

直接在一个文件中实现接口

package Test;

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

public class Testified {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        //设置界面的宽高
        jFrame.setSize(603, 680);//默认创建界面不显示,所以需要更改
        //设置界面的标题
        jFrame.setTitle("拼图单机版 v1.0");
        //设置界面置顶
        jFrame.setAlwaysOnTop(true);
        //设置界面居中
        jFrame.setLocationRelativeTo(null);
        //设置关闭模式
        jFrame.setDefaultCloseOperation(3);

        //取消默认的居中放置,只有取消了才会按照XY轴形式添加组件
        jFrame.setLayout(null);
        //创建按钮对象
        JButton jtb = new JButton("点我啊");
        //设置位置宽高
        jtb.setBounds(0, 0, 100, 50);
        //给按钮添加监听
       //jtb:组件对象表示要给哪个组件添加事件
       //addActionListener:表示我要给组件添加那个事件监听(监听动作包括鼠标左击点击,空格)
        //参数:表示事件被触发后要执行的代码
      jtb.addActionListener(new MyAcctionListener());
   

        //把按钮添加到界面中
        jFrame.getContentPane().add(jtb);


        jFrame.setVisible(true);
    }
}

第二种:利用匿名内部类实现方法

美化界面

移动图片

查看完整图片

作弊码

判断胜利

计步功能

重新开始

关闭游戏

关于我们

切换图片

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值