您好,欢迎访问三七文档
//MazeWindow主类importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.Hashtable;importjavax.swing.filechooser.*;publicclassMazeWindowextendsJFrameimplementsActionListener{Mazemaze;JMenuBarbar;//声明菜单条对象JMenumenuChoice,menuImage,hero;//声明菜单对象JMenuItemwallImage,roadImage,defaultImage,playerImage1,heroItem,heroclear;//声明菜单项对象FilemazeFile,wallImageFile,roadImageFile;JButtonrenew;//声明按钮对象Stringplayer=person.gif;ShowRecordshowRecord;//ShowRecord类创建一个类对象File英雄榜=newFile(英雄榜.txt);Filefile[]=null;staticString[]mazeName;staticStringcurrentMap;Hashtablehashtable=null;//哈希表MazeWindow(){wallImageFile=newFile(wall.gif);roadImageFile=newFile(road.jpg);bar=newJMenuBar();//创建菜单条对象menuChoice=newJMenu(选择迷宫);Filedir=newFile(.);file=dir.listFiles(newFilenameFilter(){publicbooleanaccept(Filedir,Stringname){returnname.endsWith(maze);}});mazeName=newString[file.length];for(inti=0;ifile.length;i++){mazeName[i]=file[i].getName().substring(0,file[i].getName().length()-5);//substring(截取的起始位置,截取的长度);}for(inti=0;imazeName.length;i++){JMenuItemitem=newJMenuItem(mazeName[i]);item.addActionListener(this);menuChoice.add(item);}mazeFile=newFile(file[0].getName());currentMap=mazeName[0];init();menuImage=newJMenu(选择墙和路的图像);wallImage=newJMenuItem(墙的图像);//创建菜单项对象roadImage=newJMenuItem(路的图像);playerImage1=newJMenuItem(玩家图像);defaultImage=newJMenuItem(墙和路的默认图像);menuImage.add(wallImage);//菜单项添加到菜单上,如图3-5menuImage.add(roadImage);menuImage.add(playerImage1);menuImage.add(defaultImage);hero=newJMenu(英雄榜);heroItem=newJMenuItem(查看英雄榜);heroclear=newJMenuItem(清空英雄榜);hero.add(heroItem);hero.add(heroclear);bar.add(menuChoice);bar.add(menuImage);//菜单添加到菜单条上,如图3-5bar.add(hero);setJMenuBar(bar);wallImage.addActionListener(this);//为菜单项添加监听器roadImage.addActionListener(this);playerImage1.addActionListener(this);defaultImage.addActionListener(this);heroItem.addActionListener(this);heroclear.addActionListener(this);renew=newJButton(newImageIcon(龙珠.gif));//为“重新开始”按钮添加监听器Fontfont=newFont(楷体,Font.BOLD,30);renew.setFont(font);renew.setVerticalAlignment(SwingConstants.TOP);renew.addActionListener(this);add(maze,BorderLayout.CENTER);//默认布局,如图3-7add(renew,BorderLayout.SOUTH);hashtable=newHashtable();for(inti=0;ifile.length;i++){hashtable.put(mazeName[i]+1,mazeName[i]+#+100+#匿名1);hashtable.put(mazeName[i]+2,mazeName[i]+#+100+#匿名2);hashtable.put(mazeName[i]+3,mazeName[i]+#+100+#匿名3);}if(!英雄榜.exists()){//英雄榜是File类对象;booleanexists()测试此抽象路径名表示的文件或目录是否存在。try{FileOutputStreamout=newFileOutputStream(英雄榜);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(hashtable);//voidwriteObject(Objectobj)将指定的对象写入ObjectOutputStream。objectOut.close();//voidclose()关闭流。out.close();//java.io类FileOutputStrea的方法voidclose()关闭此文件输出流并释放与此流有关的所有系统资源。}catch(IOExceptione){}}showRecord=newShowRecord(this,mazeName.length);setVisible(true);setBounds(60,60,1012,890);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*EXIT_ON_CLOSE:退出应用程序后的默认窗口关闭操作*/}publicvoidinit(){if(maze!=null){remove(maze);remove(maze.getHandleMove());}maze=newMaze();maze.setWallImage(wallImageFile);maze.setRoadImage(roadImageFile);maze.setMazeFile(mazeFile);maze.person.setImage(player);add(maze,BorderLayout.CENTER);add(maze.getHandleMove(),BorderLayout.NORTH);validate();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==roadImage){JFileChooserchooser=newJFileChooser();//文件对话框FileNameExtensionFilterfilter=newFileNameExtensionFilter(JPG&GIFImages,jpg,gif);chooser.setFileFilter(filter);intstate=chooser.showOpenDialog(null);Filefile=chooser.getSelectedFile();if(file!=null&&state==JFileChooser.APPROVE_OPTION){roadImageFile=file;maze.setRoadImage(roadImageFile);}}elseif(e.getSource()==wallImage){JFileChooserchooser=newJFileChooser();FileNameExtensionFilterfilter=newFileNameExtensionFilter(JPG&GIFImages,jpg,gif);chooser.setFileFilter(filter);intstate=chooser.showOpenDialog(null);Filefile=chooser.getSelectedFile();if(file!=null&&state==JFileChooser.APPROVE_OPTION){wallImageFile=file;maze.setWallImage(wallImageFile);}}elseif(e.getSource()==playerImage1){JFileChooserchooser=newJFileChooser();FileNameExtensionFilterfilter=newFileNameExtensionFilter(JPG&GIFImages,jpg,gif);chooser.setFileFilter(filter);intstate=chooser.showOpenDialog(null);Filefile=chooser.getSelectedFile();if(file!=null&&state==JFileChooser.APPROVE_OPTION){player=file.getName();maze.person.setImage(player);}}elseif(e.getSource()==defaultImage){wallImageFile=newFile(wall.gif);roadImageFile=newFile(road.jpg);maze.setWallImage(wallImageFile);maze.setRoadImage(roadImageFile);}elseif(e.getSource()==renew){init();}elseif(e.getSource()==heroItem)//点击英雄榜{showRecord.setMazeName(mazeName);showRecord.readAndShow(hashtable);showRecord.setVisible(true);}elseif(e.getSource()==heroclear){Filef=newFile(英雄榜.txt);f.delete();JFramet=newJFrame(提示!);t.setFont(newFont(楷体,Font.BOLD,30));t.setSize(300,215);t.setLocationRelativeTo(null);JPanelpan=newJPanel();t.setContentPane(pan);BorderLayoutbLayout=newBorderLayout(20,20);pan.setL
本文标题:JAVA实现走迷宫
链接地址:https://www.777doc.com/doc-6048881 .html