当前位置:文档之家› java课设走迷宫(含代码)

java课设走迷宫(含代码)

目录1.设计目的

1.1课程设计的目的

2.总体设计

2.1设计思路

2.2设计方法

3.关键技术

4.程序流程

5.主要源代码

6. 运行结果及结论

7.参考文献

1.设计目的

1.1课程设计的目的

随着科技进步,时代发展,计算机走进了大家的生活。计算机程序强大的功能为使用者提供服务,编程语言也变得越来越流行。Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。

为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,熟练应用面向对象的思想和设计方法解决实际问题的能力,也是为了增加同学们娱乐游戏选择而开发了一个适合学生的,能提升思考力的迷宫冒险游戏,这既锻炼了动手能力,还能进行消遣娱乐,可谓一举两得。

2.总体设计

2.1设计思路

根据对游戏系统进行的需求分析,本系统将分为6个模块:分别是迷宫主界面模块、记时设计模块、迷宫设计模块、道路和障碍设计模块、动漫冒险者设计模块、出入口设计模块。实现的功能有:

(1)迷宫的选择

玩家可以根据自身需求来进行选择简单迷宫、中等迷宫、难度迷宫三类中选择一类迷宫进行游戏。

(2)选择道路和障碍的图像

玩家可以根据个人喜好对迷宫中的道路和障碍的图片进行选择,但是图片的格式有规定,必须是“jpg”或“gif”格式的。

(3)游戏记时

当玩家控制迷宫中的动漫人物进行游戏时,计时器就开始进行记时,直到动漫人物到达出口时,记时结束,并在屏幕上显示游戏用时。

(4)开始游戏

玩家将鼠标移动至迷宫中的动漫冒险者,即可看到“单击我然后按键盘方向键”,单击后,游戏开始。玩家即可通过键盘上的方向键进行游戏。

(5)游戏结束

玩家控制动漫冒险者移动至迷宫地图的出口处时,游戏的计时器停止计时,并弹出信息框“恭喜您通关了”,游戏结束。

(6)冒险脚步声

玩家单击动漫冒险者后,便可以用键盘方向键进行控制。动漫冒险者每移动一步便会发出一声“嘟”的响声。

(7)重新开始

玩家可以根据个人对自己通关时间长短的满意程度选择再次挑战,单击“重新开始”即可。

(8)计时界面位置

利用边界式布局管理器BorderLayout将计时界面置于上方。

(9)再次挑战界面位置

利用边界式布局管理器BorderLayout将再次挑战界面置于下方。

图2.1 J迷宫冒险系统6大模块图

2.2设计方法

(1)迷宫冒险系统主界面模块

迷宫冒险系统主界面模块包括MazeWindow.java和Maze.java两个文件。MazeWindow是迷宫冒险系统的主运行类,其中有运行整个程序的main方法,该文件生成了Maze类的一个实例,从而生成了迷宫冒险系统的界面。MazeWindow类继承自JFrame类,以ActionListener为接口实现了事件侦听的接口,它有一个不带参数的构造方法MazeWindow (),用来生成MazeWindow的实例。MazeWindow 类将所有的功能集中到菜单栏中,并通过调用其他模块来实现迷宫冒险系统的各个功能。

(2)记时设计模块

记时设计模块主要由HandleMove.java共1个文件组成。HandleMove类继承自JPanel类,以ActionListener为接口实现事件的侦听的接口。该模块利用了一个2维数组来进行实现,并对计时显示的字体、背景色、显示位置进行设计。该模块定义了一个无参返回值的变量SpendTime,利用

SpendTime这个变量来对记时的开始触发源和记时的结束触发源。

图2.2计时流程图

(3)迷宫设计模块

迷宫设计模块主要由2个2维数组组成,它们组成了主界面中“选择迷宫”菜单的内容,其中包括简单迷宫、中等迷宫、难度迷宫三大类。该模块的类继承自JLayeredPane类,主要通过2个2维数组来实现。并且对迷宫中的道路和障碍的插入图片格式进行了要求。该模块使用try和catch 来捕获和处理异常。当迷宫地图不可用时则弹出对话框“无效的迷宫文件”。

(4)道路和障碍设计模块系统

道路和障碍设计模块主要由MazePoint.java这个文件组成,这个文件组成了主界面中的迷宫地图中的道路和障碍的内容。

(5)动漫冒险者设计模块

动漫冒险者设计模块主要是对迷宫地图中处于入口处的动漫冒险玩家进行设计。该模块利用语句使鼠标箭头移动到动漫冒险者上时显示文字“单击我,然后按键盘方向键”,并为冒险者的图片格式、长度、宽带、初始位置等等进行进一步的设计,让动漫冒险者更加生动。

(6)出入口设计模块

出入口设计模块主要是定义了出口与入口以及当动漫冒险者处于这两个位置时的状态和事件的链接。

3.关键技术

在设计走迷宫小游戏时,编写了6个JAVA源文件:MazeWindow.java、MazePoint.java、WallOrRoad.java、Maze.java、PersonInMaze.java、HandleMove.java

4.程序流程

图4.1迷宫游戏流程图

5.主要源代码

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.filechooser.*;

public class MazeWindow extends JFrame implements ActionListener{

Maze maze;

JMenuBar bar;

JMenu menuChoice,menuImage;

JMenuItem wallImage,roadImage,defaultImage;

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 name.endsWith("maze");

}

});

for(int i=0;i< file.length;i++)

{ JMenuItem item=new JMenuItem(file[i].getName());

item.addActionListener(this);

menuChoice.add(item);

}

mazeFile=new File(file[0].getName());

init();

menuImage=new JMenu("选择墙和路的图像(JPG,GIF)");

wallImage=new JMenuItem("墙的图像");

roadImage=new JMenuItem("路的图像");

defaultImage=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("重新开始");

renew.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(wallImageFile);

maze.setRoadImage(roadImageFile);

maze.setMazeFile(mazeFile);

add(maze,BorderLayout.CENTER);

add(maze.getHandleMove(),BorderLayout.NORTH); validate();

}

public void actionPerformed(ActionEvent e){

JFileChooser 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){

roadImageFile=file;

maze.setRoadImage(roadImageFile);

}

}

else if(e.getSource()==wallImage){

JFileChooser 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.setWallImage(wallImageFile);

}

}

else if(e.getSource()==defaultImage){

wallImageFile=new File("wall.jpg");

roadImageFile=new File("road.jpg");

maze.setWallImage(wallImageFile);

maze.setRoadImage(roadImageFile);

}

init();

}

else{

JMenuItem item=(JMenuItem)e.getSource(); mazeFile=new File(item.getText());

init();

}

}

public static void main(String args[]){

new MazeWindow();

}

}

6.运行结果及结论

在开发环境为JCreator的电脑上编写java程序,利用java程序实现迷宫冒险的运作。程序包含MazeWindow.java、MazePoint.java、WallOrRoad.java、Maze.java、PersonInMaze.java、HandleMove.java六个java源文件。其中MazeWindow为程序的主类,贯穿始终,通过调用其他模块功能来实现整个迷宫冒险小游戏的全部功能,是游戏安全运行。程序进过检查修改无误后运行得到如下运行结果。

6.1运行结果示意图

7.参考文献

1】董小园.Java面向对象程序设计清华大学出版社,2011年6月第1版

2】刘升华.Java从入门到实践[M].北京:清华大学出版社2009

3】陈国君.Java2设计基础[M].北京:清华大学出版社2009

4】朱喜福.Java程序设计[M].北京:人民邮电出版社2005

5】饶一梅.Java语言程序设计[M].北京:人民邮电出版社2009

成绩评定表

课程设计任务书

相关主题
文本预览
相关文档 最新文档