java中拼图游戏怎么实现
导读:本文共3532.5字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 直接上效果图:1.所需技术java基础java的GUI相关技术2.具体实现2.1图片制作选择你喜欢的一张图片,(友情提示:图片尽量在400*600 范围内),然后通过网上的在线分割图片,或者你ps等其他软件,把图片分割为大小相等的12份.如下图所示推荐大家给小图片取名按照: 大图片的文件名-序号 这种方式命名,方便程序读取2.2创建项目使用idea或者是Ecli... ...
目录
(为您整理了一些要点),点击可以直达。直接上效果图:
1.所需技术
java基础
java的GUI相关技术
2.具体实现
2.1图片制作
选择你喜欢的一张图片,(友情提示:图片尽量在400*600 范围内),然后通过网上的在线分割图片,或者你ps等其他软件,把图片分割为大小相等的12份.如下图所示
推荐大家给小图片取名按照: 大图片的文件名-序号 这种方式命名,方便程序读取
2.2创建项目
使用idea或者是Eclipse创建一个java项目,小编使用的是idea,然后再项目下,创建一个image的目录,把上一步的图片复制到项目下的image目录下:
2.3编码实现
我们首先创建一个勇于描述游戏中显示的图片的实体类:Picture类,代码如下
publicclassPicture{privateStringalisa;//别名privateStringpicPath;//预览图片的路径privateString[]subPicPaths;//拼图区的切片图片路径//省略了setter/getter构造方法的代码}
这里我们就应用了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中拼图游戏怎么实现的详细内容,希望对您有所帮助,信息来源于网络。