返回顶部
首页 > 资讯 > 后端开发 > Python >java基础教程之拼图游戏的实现
  • 916
分享到

java基础教程之拼图游戏的实现

2024-04-02 19:04:59 916人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言废话不多说,直接上效果图:1.所需技术2.具体实现2.1 图片制作 2.2 创建项目 2.3 编码实现总结前言 大家在初学j

前言

大家在初学java的时候,大部分的代码都是在控制台上运行的.可能大家辛辛苦苦写了几十行代码,最终就只是在控制台输出一个字符,这个时候,心里肯定是拔凉拔凉的,心中那一朵编程的火花,就马上给扑灭了.我们都知道兴趣是最好的老师.为了拯救大家快要熄灭的小火花,小编在这里给大家带来使用java做个小游戏,并且通过做这个游戏,好好收悉一下面向对象的实际使用.

废话不多说,直接上效果图:

1.所需技术

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<String,Picture> picMap = new HashMap<>(); //游戏中的图片
    private static final long serialVersionUID = -3974891708686273202L;
    private JComboBox<String> 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<String> cbx = (JComboBox<String>) 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<String>(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]);
    }
    
}

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

由于篇幅有限,游戏拼图区和游戏预览区的代码我们在下一篇文章给各位看官老爷展示,各位看官老爷也可以自己思考一下,后面的代码的实现思路,并尝试自己动手.俗话说:"纸上得来终觉浅,绝知此事要躬行&quot;.

总结

到此这篇关于java基础教程之拼图游戏实现的文章就介绍到这了,更多相关java拼图游戏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java基础教程之拼图游戏的实现

本文链接: https://lsjlt.com/news/163569.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java基础教程之拼图游戏的实现
    目录前言废话不多说,直接上效果图:1.所需技术2.具体实现2.1 图片制作 2.2 创建项目 2.3 编码实现总结前言 大家在初学j...
    99+
    2024-04-02
  • java实现简单的拼图游戏
    用Java来实现简单的拼图游戏,供大家参考,具体内容如下 首先我们看一下这个拼图小游戏的效果图: 创建一个名称为MedleyGame的类,该类继承了JFrame类;然后在该类中分别...
    99+
    2024-04-02
  • java控制台实现拼图游戏
    本文实例为大家分享了java控制台实现拼图游戏的具体代码,供大家参考,具体内容如下 1、首先对原始的拼图进行多次无规律的移动,将拼图打乱 2、然后进行游戏,在游戏移动同时对拼图顺序进...
    99+
    2024-04-02
  • java实现九宫格拼图游戏
    本文实例为大家分享了java实现九宫格拼图游戏的具体代码,供大家参考,具体内容如下 设计步骤:  先将框架构思出来,首先将拼图游戏的雏形实现,即一个界面,九个按钮,按钮上的...
    99+
    2024-04-02
  • Java如何实现Android拼图游戏
    这篇文章主要介绍“Java如何实现Android拼图游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何实现Android拼图游戏”文章能帮助大家解决问题。1.项目介绍这是一款基于 Jav...
    99+
    2023-06-29
  • java中拼图游戏怎么实现
    这篇文章主要介绍了java中拼图游戏怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。直接上效果图:1.所需技术java基础java的GUI相关技术2.具体实现2.1&n...
    99+
    2023-06-29
  • C#实现拼图游戏
    本文实例为大家分享了C#实现拼图游戏的具体代码,供大家参考,具体内容如下 (一)需求:(这个需求书写较为简单) 图片:有图 切割:拼图不是一个图,我们需要把一个整图...
    99+
    2024-04-02
  • Android实现拼图游戏
    本文实例为大家分享了Android实现拼图游戏的具体代码,供大家参考,具体内容如下 本人是用 android studio 完成的 源码 package packageName; ...
    99+
    2024-04-02
  • C++基于EasyX库实现拼图小游戏
    用C++的EasyX库做的拼图小游戏,供大家参考,具体内容如下   记录一下自己做的第一个项目,还有一些改进空间QWQ,可以支持难度升级,但是通关判断似乎有点...
    99+
    2024-04-02
  • 基于Python实现自制拼图小游戏
    咱们Python 集中营有一个专题就是分享一些有意思的东西,今天大概看了一下pygame的这个非标准库就想着使用它来做个小游戏-拼图。 通过加入自己定义的图片,对这个图片完成一定数...
    99+
    2022-11-13
    Python拼图游戏 Python拼图
  • iOS实现拼图小游戏
    本文实例为大家分享了iOS实现拼图小游戏的具体代码,供大家参考,具体内容如下 首先找到这8张图片,还需要一张空白的图片,自己随便剪一张吧。 定义三个属性:button可变数组,图片...
    99+
    2024-04-02
  • Java实现Android拼图游戏设计过程解析
    目录1.项目介绍2.项目原理3.项目设计4.项目实现5.获取布局6.准备图片7.初始化 item8.游戏图片的切换9.游戏胜利的判断10.游戏封面1.项目介绍 这是一款基于 Java...
    99+
    2024-04-02
  • 微信小程序实现拼图游戏
    本文实例为大家分享了微信小程序实现拼图游戏的具体代码,供大家参考,具体内容如下 页面展示 项目链接 微信小程序实现拼图游戏 项目设计 首页面 wxml <!--inde...
    99+
    2024-04-02
  • C++小游戏教程之猜数游戏的实现
    目录0. 引言1. 用户猜数1-1. 设置答案数与猜测数1-2. 系统说明要求与读入数字1-3. 累计猜测次数与判断数字1-4. 输出猜测次数2. 系统猜数,但是是进化史2-1. 代...
    99+
    2022-11-13
    C++猜数游戏 C++猜数
  • Opencv开发实现拼图游戏
    本文实例为大家分享了Opencv开发实现拼图游戏的具体代码,供大家参考,具体内容如下 一、代码 #include<opencv2/opencv.hpp> #inclu...
    99+
    2024-04-02
  • js实现拖拽拼图游戏
    本文实例为大家分享了js实现拖拽拼图游戏的具体代码,供大家参考,具体内容如下 该游戏主要使用了一些拖拽事件,以及对数据传递的应用,直接上代码,感兴趣的可以参考 html:代码 ...
    99+
    2024-04-02
  • android实现简单拼图游戏
    本文实例为大家分享了android实现简单拼图游戏的具体代码,供大家参考,具体内容如下 1. 2. //使用回调接口,首先初始化pintuview并绑定,实现回调接口的方法    ...
    99+
    2024-04-02
  • 用js实现拼图小游戏
    本文实例为大家分享了js实现拼图小游戏的具体代码,供大家参考,具体内容如下 一、js拼图是什么? 用js做得小游戏 二、使用步骤 1、先创建div盒子 <style>...
    99+
    2024-04-02
  • C#怎么实现拼图游戏
    这篇文章主要介绍“C#怎么实现拼图游戏”,在日常操作中,相信很多人在C#怎么实现拼图游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#怎么实现拼图游戏”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!本文...
    99+
    2023-06-20
  • js实现简单拼图游戏
    本文实例为大家分享了js实现简单拼图游戏的具体代码,供大家参考,具体内容如下 HTML仅有一个id为game的div,并且没有编写css样式,只需要在img文件夹中放置一个图片文件就...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作