走迷宫游戏的java完成指南_第1页
走迷宫游戏的java完成指南_第2页
走迷宫游戏的java完成指南_第3页
走迷宫游戏的java完成指南_第4页
走迷宫游戏的java完成指南_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、走迷宫游戏的java 完成 指南 /MazeWindow.javaimport java.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.filechooser.*;public class MazeWindow extends JFrame implements ActionListenerMaze maze;JMenuBar bar;JMenu menuChoice,menuImage;JMenuItem wallImage,roadImage,defaultImag

2、e;File mazeFile,wallImageFile,roadImageFile;JButton renew;MazeWindow()wallImageFile=new File(wall.jpg);roadImageFile=new File(road.jpg);bar=new JMenuBar();menuChoice=new JMenu(选择迷宫);File dir=new File(.);File file=dir.listFiles(new FilenameFilter()public boolean accept(File dir,String name)return nam

3、e.endsWith(maze);)for(int i=0;ifile.length;i+)JMenuItem item=new JMenuItem(filei.getName();item.addActionListener(this);menuChoice.add(item);mazeFile=new File(file0.getName();init();menuImage=new JMenu(选择墙和路的图像(JPG,GIF); TOC o 1-5 h z wallImage=new JMenuItem( 墙的图像);roadImage=new JMenuItem( 路的图像);def

4、aultImage=new JMenuItem( 墙和路的默认图像);menuImage.add(wallImage);menuImage.add(roadImage);menuImage.add(defaultImage);bar.add(menuChoice);bar.add(menuImage);setJMenuBar(bar);wallImage.addActionListener(this);roadImage.addActionListener(this);defaultImage.addActionListener(this);renew=new JButton( 重新开始);r

5、enew.addActionListener(this);add(maze,BorderLayout.CENTER);add(renew,BorderLayout.SOUTH);setVisible(true);setBounds(60,60,510,480);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void init()if(maze!=null)remove(maze);remove(maze.getHandleMove();maze=new Maze();maze.setWallImage(wall

6、ImageFile);maze.setRoadImage(roadImageFile);maze.setMazeFile(mazeFile);add(maze,BorderLayout.CENTER);add(maze.getHandleMove(),BorderLayout.NORTH);validate();public void actionPerformed(ActionEvent e)if(e.getSource()=roadImage)JFileChooser chooser=new JFileChooser();FileNameExtensionFilter filter=new

7、 FileNameExtensionFilter(JPG & GIF Images,jpg,gif);chooser.setFileFilter(filter);int state=chooser.showOpenDialog(null);File file=chooser.getSelectedFile();if(file!=null&state=JFileChooser.APPROVE_OPTION)roadImageFile=file;maze.setRoadImage(roadImageFile);else if(e.getSource()=wallImage)JFileChooser

8、 chooser=new JFileChooser();FileNameExtensionFilter filter=new FileNameExtensionFilter(JPG & GIF Images,jpg,gif);chooser.setFileFilter(filter);int state=chooser.showOpenDialog(null);File file=chooser.getSelectedFile();if(file!=null&state=JFileChooser.APPROVE_OPTION)wallImageFile=file;maze.setWallIma

9、ge(wallImageFile);else if(e.getSource()=defaultImage)wallImageFile=new File(wall.jpg);roadImageFile=new File(road.jpg);maze.setWallImage(wallImageFile);maze.setRoadImage(roadImageFile);else if(e.getSource()=renew)init();else JMenuItem item=(JMenuItem)e.getSource();mazeFile=new File(item.getText();in

10、it();public static void main(String args)new MazeWindow(); /Maze.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class Maze extends JLayeredPaneFile mazeFile;MazePoint mazePoint;WallOrRoad wallOrRoad;PersonInMaze person;HandleMove handleMove;File wallImage,

11、roadImage;int distance=26,m=0,n=0;public Maze()setLayout(null);wallImage=new File(wall.jpg);roadImage=new File(road.jpg);person=new PersonInMaze();handleMove=new HandleMove();handleMove.initSpendTime();person.addKeyListener(handleMove);setLayer(person,JLayeredPane.DRAG_LAYER);public void setMazeFile

12、(File f)mazeFile=f;char a;RandomAccessFile in=null;String lineWord=null;tryin=new RandomAccessFile(mazeFile,r);long length=in.length();long position=0;in.seek(position);while(position=n)n=str.length();position=in.getFilePointer();m+;a=new charmn;position=0;in.seek(position);m=0;while(positionlength)

13、String str=in.readLine();am=str.toCharArray();position=in.getFilePointer();m+;in.close();wallOrRoad=new WallOrRoadmn;for(int i=0;im;i+)for(int j=0;jn;j+)wallOrRoadij=new WallOrRoad();if(aij=1)wallOrRoadij.setIsWall(true);wallOrRoadij.setWallImage(wallImage);wallOrRoadij.repaint();else if(aij=0)wallO

14、rRoadij.setIsRoad(true);wallOrRoadij.setRoadImage(roadImage);wallOrRoadij.repaint();else if(aij=*)wall0rRoadij.setIsEnter(true);wall0rRoadij.setIsRoad(true);wall0rRoadij.repaint();else if(aij=#)wallOrRoadij.setIsOut(true);wallOrRoadij.setIsRoad(true);wallOrRoadij.repaint();mazePoint=new MazePointmn;

15、int Hspace=distance,Vspace=distance;for(int i=0;im;i+)for(int j=0;jm;j+)mazePointij=new MazePoint(Hspace,Vspace);Hspace=Hspace+distance;Hspace=distance;Vspace=Vspace+distance;for(int i=0;im;i+)for(int j=0;jn;j+)add(wallOrRoadij);wallOrRoadij.setSize(distance,distance);wallOrRoadij.setLocation(mazePo

16、intij.getX(),mazePointij.getY();wallOrRoadij.setAtMazePoint(mazePointij);mazePointij.setWallOrRoad(wallOrRoadij);mazePointij.setIsWallOrRoad(true);if(wallOrRoadij.getIsEnter()person.setAtMazePoint(mazePointij);add(person);person.setSize(distance,distance);person.setLocation(mazePointij.getX(),mazePo

17、intij.getY();person.requestFocus();person.repaint();handleMove.setMazePoint(mazePoint);catch(IOException exp)JButton mess=new JButton( 无效的迷宫文件);add(mess);mess.setBounds(30,30,100,100);mess.setFont(new Font( 宋体 ,Font.BOLD,30);System.out.println(exp+mess);public void setWallImage(File f)wallImage=f;fo

18、r(int i=0;im;i+)for(int j=0;jn;j+)if(wallOrRoadij.getIsWall()wallOrRoadij.setWallImage(wallImage);wallOrRoadij.repaint();public void setRoadImage(File f)roadImage=f;for(int i=0;im;i+)for(int j=0;jn;j+)if(wallOrRoadij.getIsRoad()wallOrRoadij.setRoadImage(roadImage);wallOrRoadij.repaint();public Handl

19、eMove getHandleMove()return handleMove; /WallOrRoad.javaimport javax.swing.*;import java.awt.*;import javax.swing.border.*; import java.io.*;public class WallOrRoad extends JPanelboolean isRoad,isWall,isEnter,isOut;MazePoint point;File wallImage,roadImage;Toolkit tool;WallOrRoad()tool=getToolkit();p

20、ublic void setIsEnter(boolean boo)isEnter=boo;if(isEnter=true)add(new JLabel( 入口 );public boolean getIsEnter()return isEnter;public void setIsOut(boolean boo)isOut=boo;if(isOut=true)add(new JLabel( 出口 );public boolean getIsOut()return isOut;public void setIsRoad(boolean boo)isRoad=boo;if(isRoad=true

21、)setBorder(null);public boolean getIsRoad()return isRoad;public void setIsWall(boolean boo) isWall=boo;if(isWall=true)setBorder(new SoftBevelBorder(BevelBorder.RAISED);public boolean getIsWall()return isWall;public void setAtMazePoint(MazePoint p)point=p;public MazePoint getAtMazePoint()return point

22、;public void setWallImage(File f)wallImage=f;public void setRoadImage(File f)roadImage=f;public void paintComponent(Graphics g)super.paintComponent(g);int w=getBounds().width;int h=getBounds().height;tryif(isRoad=true)Image image=tool.getImage(roadImage.toURI().toURL();g.drawImage(image,0,0,w,h,this

23、);else if(isWall=true)Image image=tool.getImage(wallImage.toURI().toURL();g.drawImage(image,0,0,w,h,this);catch(Exception exp)/MazePoint.javapublic class MazePointint x,y;boolean haveWallOrRoad;WallOrRoad wallOrRoad=null;public MazePoint(int x,int y)this.x=x;this.y=y;public boolean isHaveWallOrRoad(

24、)return haveWallOrRoad;public void setIsWallOrRoad(boolean boo)haveWallOrRoad=boo;public int getX()return x;public int getY()return y;public boolean equals(MazePoint p)if(p.getX()=this.getX()&p.getY()=this.getY() return true;elsereturn false;public void setWallOrRoad(WallOrRoad obj) wallOrRoad=obj;p

25、ublic WallOrRoad getWallOrRoad()return wallOrRoad;/PersonInMaze.javaimport javax.swing.*;import java.awt.*;public class PersonInMaze extends JTextFieldMazePoint point;Toolkit tool;PersonInMaze()tool=getToolkit();setEditable(false);setBorder(null);setOpaque(false);setToolTipText( 单击我,然后按键盘方向键);public

26、 void setAtMazePoint(MazePoint p) point=p;public MazePoint getAtMazePoint()return point;public void paintComponent(Graphics g)super.paintComponent(g);int w=getBounds().width;int h=getBounds().height;Image image=tool.getImage(person.gif);g.drawImage(image,0,0,w,h,this);/HandleMove.javaimport java.awt

27、.event.*;import java.awt.*;import javax.swing.*;public class HandleMove extends JPanel implementsKeyListener,ActionListenerMazePoint p;int spendTime=0;javax.swing.Timer recordTime;JTextField showTime;Toolkit tool;HandleMove()recordTime=new javax.swing.Timer(1000,this);showTime=new JTextField(16);too

28、l=getToolkit();showTime.setEditable(false);showTime.setHorizontalAlignment(JTextField.CENTER);showTime.setFont(new Font( 楷体 _GB2312,Font.BOLD,16);JLabel hitMess=new JLabel( 单击走迷宫者,按键盘方向键,JLabel.CENTER);hitMess.setFont(new Font( 楷体 _GB2312,Font.BOLD,18);add(hitMess);add(showTime);setBackground(Color.

29、cyan);public void setMazePoint(MazePoint point) p=point;public void initSpendTime()recordTime.stop();spendTime=0;showTime.setText(null);public void keyPressed(KeyEvent e) recordTime.start();PersonInMaze person=null;person=(PersonInMaze)e.getSource();int m=-1,n=-1;MazePoint startPoint=person.getAtMazePoint();for(int i=0;ip.length;i+)for(int j=0;jpi.length;j+)if(startPoint.equals(pij)m=i;n=j;break;if(e.getKeyCode()=KeyEvent.VK_UP)int k=Math.max(m-1,0);if(pkn.getWakkOrRoad().getIsRoad()tool.beep();person.setAtMazePoint(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论