千家信息网

java中拼图游戏怎么实现

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要介绍了java中拼图游戏怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。直接上效果图:1.所需技术java基础jav
千家信息网最后更新 2025年02月09日java中拼图游戏怎么实现

这篇文章主要介绍了java中拼图游戏怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    直接上效果图:

    1.所需技术

    • java基础

    • java的GUI相关技术

    2.具体实现

    2.1 图片制作

    选择你喜欢的一张图片,(友情提示:图片尽量在400*600 范围内),然后通过网上的在线分割图片,或者你ps等其他软件,把图片分割为大小相等的12份.如下图所示

    推荐大家给小图片取名按照: 大图片的文件名-序号 这种方式命名,方便程序读取

    2.2 创建项目

    使用idea或者是Eclipse创建一个java项目,小编使用的是idea,然后再项目下,创建一个image的目录,把上一步的图片复制到项目下的image目录下:

    2.3 编码实现

    我们首先创建一个勇于描述游戏中显示的图片的实体类:Picture类,代码如下

    public class Picture {    private String alisa;//别名    private String picPath;//预览图片的路径    private String[] subPicPaths;//拼图区的切片图片路径    //省略了setter/getter 构造方法的代码}

    这里我们就应用了java的OOP思想,把游戏中的一个拼图抽象成一个Picture类, 上图左边的小图片对应Picture类的subPicPaths属性, 右边的预览图对应Picture类的picPath属性,以及我们给这个拼图取了一个名称,对应Picture的alisa属性.

    我们已经封装好了Picture类,接下来我们需要编写我们的游戏主界面类 MainFrame,我们现在的程序不是运行在控制台,而是运行一个界面窗口,所有我们的主界面类必须实现Swing包下的JFrame类,JFrame简单的理解就是一个游戏窗口.

    public class MainFrame extends JFrame{    private String[] items = {"小熊","美女"};    private Map picMap = new HashMap<>(); //游戏中的图片    private static final long serialVersionUID = -3974891708686273202L;    private JComboBox imgComboBox; //选择图片的下拉框    private PictureCanvasPanle canvasPanle; //拼图区的面板    private PicturePreviewPanel previewPanle; //预览区的面板    private JTextField nameTxt; //显示图片名词的文本域    public static Picture selectedPicture;  //被选中的图片    private JButton startBtn;  //开始按钮    public static JTextField stepTxt; //显示步数的文本域     //添加图片    public void setMap(){        for(int i = 0; i < items.length;i++){            String[] subPaths = new String[12];            for(int j = 0; j < subPaths.length; j++){                subPaths[j] = "image/" +(i+1)+"-"+(j+1)+".jpg";            }            Picture pic = new Picture(items[i], "image/" +(i+1)+".jpg", subPaths);            picMap.put(pic.getAlisa(), pic);        }    }     //无参构造方法,进行界面的初始化    public MainFrame(){        setMap();        //初始化        init();         //添加组件        addComponent();        //添加拼图和预览        addPreview();        //给组件添加事件        addActionLisener();    }     //给界面上的组件绑定事件    private void addActionLisener() {        //给下拉框添加事件        imgComboBox.addActionListener(new ActionListener() {            @SuppressWarnings("unchecked")            @Override            public void actionPerformed(ActionEvent e) {                JComboBox cbx = (JComboBox) e.getSource();                selectedPicture = picMap.get(cbx.getSelectedItem());                previewPanle.setPath(selectedPicture.getPicPath());                nameTxt.setText("图片名称:"+cbx.getSelectedItem());                canvasPanle.changePictureCell();                previewPanle.repaint();            }        });                //给开始按钮添加事件监听        startBtn.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                //把移动的步数清零                canvasPanle.stepNum = 0;                stepTxt.setText("步数:"+canvasPanle.stepNum);                //打乱拼图区的小方块                canvasPanle.start();            }        });     }     //添加预览图片    private void addPreview() {        JPanel mainPanle = new JPanel();        mainPanle.setLayout(new GridLayout(1,2));        canvasPanle = new PictureCanvasPanle();        previewPanle = new PicturePreviewPanel();        mainPanle.add(canvasPanle,BorderLayout.WEST);        mainPanle.add(previewPanle,BorderLayout.EAST);                this.add(mainPanle,BorderLayout.CENTER);    }     private void addComponent() {        //上部分的内容        JPanel topPanel = new JPanel();        //设置布局器        topPanel.setLayout(new GridLayout(1,2));        //给上面板添加左右面板        //左面板        JPanel leftPanel = new JPanel();        //设置背景颜色        leftPanel.setBackground(Color.PINK);        leftPanel.setBorder(new TitledBorder("游戏设置区"));        //添加其他组件        //设置左边的布局        leftPanel.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));                //标签        JLabel infoLabel = new JLabel("选择图片: ");        leftPanel.add(infoLabel);        //设置下拉框        imgComboBox = new JComboBox(items);        imgComboBox.setBackground(Color.PINK);        leftPanel.add(imgComboBox);                //设置添加按钮        startBtn = new JButton("Start");        startBtn.setBackground(Color.PINK);        leftPanel.add(startBtn);                //添加        topPanel.add(leftPanel, BorderLayout.WEST);                        //右面板        JPanel rightPanle = new JPanel();        rightPanle.setBackground(Color.PINK);        rightPanle.setBorder(new TitledBorder("游戏状态区"));        rightPanle.setLayout(new GridLayout(1,2));                nameTxt = new JTextField("图片名称:小熊");        nameTxt.setEditable(false);        nameTxt.setBackground(Color.PINK);                stepTxt = new JTextField("步数:0");        stepTxt.setEditable(false);        stepTxt.setBackground(Color.PINK);        rightPanle.add(nameTxt,BorderLayout.WEST);        rightPanle.add(stepTxt,BorderLayout.EAST);                topPanel.add(rightPanle, BorderLayout.EAST);        //把这个面板添加到窗口        this.add(topPanel,BorderLayout.NORTH);    }     private void init() {        //设置窗体的标题        this.setTitle("拼图游戏");        //设置窗体的大小        this.setSize(1000, 720);        //设置窗体在屏幕居中        this.setLocationRelativeTo(null);        //设置固定大小        this.setResizable(false);        //设置窗口的默认关闭操作        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        selectedPicture = this.picMap.get(items[0]);    }    }

    此时,我们已经把游戏的主界面给搭建好了,但是这个主界面的游戏拼图区和游戏预览区的代码还没有实现.并且我们还需要把游戏拼图区中每一小块的拼图片也抽象成一个类,并且需要给每一个拼图片绑定鼠标事件.

    感谢你能够认真阅读完这篇文章,希望小编分享的"java中拼图游戏怎么实现"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

    图片 界面 面板 事件 篇文章 组件 项目 代码 名称 大小 属性 按钮 步数 窗体 下拉 选择 布局 技术 方法 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 怎么快速知道数据库中有无数据 土木金华软件开发 梦幻西游刚转区能不能预定服务器 网络安全研究的目的意义及现状 网络安全宣传周个人总结部队 对数据库增删改查必须大写吗 网络安全拓展经理 合一网络技术有限公司 优酷 网吧无盘服务器可以挖矿吗 免费服务器代理ip 网络安全监管有哪些部门 研报 软件开发公司 南阳哪里学计算机网络技术 宁波塔式服务器哪家好 linux备份数据库脚本 网络安全后勤 网络安全黑板怎么设置 软件开发者怎么在云端开发 陌陌交友软件开发多少钱 使用模板创建数据库的步骤 为什么学数据库 武装突袭3国人的服务器 软件开发一般能做到几岁 江苏国武网络技术工程公司 两个不同网络访问服务器 国家食品药品监督总局数据库 请使用代理服务器上互联网 护苗网络安全教育片3 软件工程在软件开发第几阶段 tp5是服务器开发框架
    0