java中拼图游戏怎么实现(java,开发技术)

时间:2024-04-23 14:03:27 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    直接上效果图:

    java中拼图游戏怎么实现

    1.所需技术

    • java基础

    • java的GUI相关技术

    2.具体实现

    2.1图片制作

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

    java中拼图游戏怎么实现

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

    2.2创建项目

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

    java中拼图游戏怎么实现

    2.3编码实现

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

    publicclassPicture{privateStringalisa;//别名privateStringpicPath;//预览图片的路径privateString[]subPicPaths;//拼图区的切片图片路径//省略了setter/getter构造方法的代码}

    java中拼图游戏怎么实现

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

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

    publicclassMainFrameextendsJFrame{privateString[]items={"小熊","美女"};privateMap<String,Picture>picMap=newHashMap<>();//游戏中的图片privatestaticfinallongserialVersionUID=-3974891708686273202L;privateJComboBox<String>imgComboBox;//选择图片的下拉框privatePictureCanvasPanlecanvasPanle;//拼图区的面板privatePicturePreviewPanelpreviewPanle;//预览区的面板privateJTextFieldnameTxt;//显示图片名词的文本域publicstaticPictureselectedPicture;//被选中的图片privateJButtonstartBtn;//开始按钮publicstaticJTextFieldstepTxt;//显示步数的文本域//添加图片publicvoidsetMap(){for(inti=0;i<items.length;i++){String[]subPaths=newString[12];for(intj=0;j<subPaths.length;j++){subPaths[j]="image/"+(i+1)+"-"+(j+1)+".jpg";}Picturepic=newPicture(items[i],"image/"+(i+1)+".jpg",subPaths);picMap.put(pic.getAlisa(),pic);}}//无参构造方法,进行界面的初始化publicMainFrame(){setMap();//初始化init();//添加组件addComponent();//添加拼图和预览addPreview();//给组件添加事件addActionLisener();}//给界面上的组件绑定事件privatevoidaddActionLisener(){//给下拉框添加事件imgComboBox.addActionListener(newActionListener(){@SuppressWarnings("unchecked")@OverridepublicvoidactionPerformed(ActionEvente){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(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//把移动的步数清零canvasPanle.stepNum=0;stepTxt.setText("步数:"+canvasPanle.stepNum);//打乱拼图区的小方块canvasPanle.start();}});}//添加预览图片privatevoidaddPreview(){JPanelmainPanle=newJPanel();mainPanle.setLayout(newGridLayout(1,2));canvasPanle=newPictureCanvasPanle();previewPanle=newPicturePreviewPanel();mainPanle.add(canvasPanle,BorderLayout.WEST);mainPanle.add(previewPanle,BorderLayout.EAST);this.add(mainPanle,BorderLayout.CENTER);}privatevoidaddComponent(){//上部分的内容JPaneltopPanel=newJPanel();//设置布局器topPanel.setLayout(newGridLayout(1,2));//给上面板添加左右面板//左面板JPanelleftPanel=newJPanel();//设置背景颜色leftPanel.setBackground(Color.PINK);leftPanel.setBorder(newTitledBorder("游戏设置区"));//添加其他组件//设置左边的布局leftPanel.setLayout(newFlowLayout(FlowLayout.CENTER,10,10));//标签JLabelinfoLabel=newJLabel("选择图片:");leftPanel.add(infoLabel);//设置下拉框imgComboBox=newJComboBox<String>(items);imgComboBox.setBackground(Color.PINK);leftPanel.add(imgComboBox);//设置添加按钮startBtn=newJButton("Start");startBtn.setBackground(Color.PINK);leftPanel.add(startBtn);//添加topPanel.add(leftPanel,BorderLayout.WEST);//右面板JPanelrightPanle=newJPanel();rightPanle.setBackground(Color.PINK);rightPanle.setBorder(newTitledBorder("游戏状态区"));rightPanle.setLayout(newGridLayout(1,2));nameTxt=newJTextField("图片名称:小熊");nameTxt.setEditable(false);nameTxt.setBackground(Color.PINK);stepTxt=newJTextField("步数: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);}privatevoidinit(){//设置窗体的标题this.setTitle("拼图游戏");//设置窗体的大小this.setSize(1000,720);//设置窗体在屏幕居中this.setLocationRelativeTo(null);//设置固定大小this.setResizable(false);//设置窗口的默认关闭操作this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);selectedPicture=this.picMap.get(items[0]);}}

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

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:java中拼图游戏怎么实现的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:CSS中如何让div在div中居中下一篇:

    9 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18