走迷宫游戏设计Word下载.docx
- 文档编号:22556576
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:11
- 大小:337.98KB
走迷宫游戏设计Word下载.docx
《走迷宫游戏设计Word下载.docx》由会员分享,可在线阅读,更多相关《走迷宫游戏设计Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
(1)课程设计前必须根据课程设计题目认真准备实验源程序及调试时所需的数据;
(2)要求采用简明、严格的问题描述,设计求解算法;
(3)数据结构选用得当,程序结构合理;
(4)程序简明易懂,多运用输出提示,程序运行正确;
(5)对设计进行总结和讨论;
1.3实现功能
(1)用户可以通过单击走迷宫小人图像,开始默认模式的走迷宫游戏。
当小人图像开始移动,计时开始。
(2)当用户想重新开始游戏时,可以点击窗口下方的【重新开始】按钮,重新开始游戏。
(3)用户可以单击菜单栏“选择迷宫”菜单,选择不同模式的迷宫游戏。
(4)用户还可以选择菜单栏“选择墙和路的图像(JPG,GIF)”菜单,从电脑中选取自己喜欢的图片作为墙和路的图像进行游戏。
1.4界面设计
(1)编制一个求解迷宫通路的图形界面演示程序。
(2)设置一个可以任意设置障碍,删除障碍的迷宫。
并求出迷宫的一条通路
(3)根据用户界面提示,可以使用事先设定的迷宫也可以使用自定义的迷宫。
在着迷宫同路的过程中,需将查找的过程演示出来,并且在最后时,需要标记出查找成功的一条路径。
2、开发平台和技术
2.1Java语言
java语言的流行除了因为它能够编制嵌入HTML文件中的Applet外,还在于Java语言本身的面向对象、简单、平台无关性、安全性、多线程等特点java语言的结构与编写方式,与c++语言类似,因此学习Java语言,不仅要了解Java语言特点,同时还要有程序设计基础和面向对象的概念。
java语言的特点如下:
java语言的特点一:
简单、高效
Java语言的特点二:
面向对象
Java语言的特点三:
平台无关性
Java语言的特点四:
交互式特性
Java语言的特点五:
多线程机制
Java语言的特点六:
动态的内存管理机制
Java语言的特点七:
安全性
2.2GreenFoot
Greenfoot[1]是针对那些想让自己熟悉如何使用Java的人而设计的,是一个功能完整的开发环境,可以使用Java方便地编写游戏和进行模拟。
它还可以被用来作为Java语言的教程,以及设计2D小游戏,可以实用于所有年龄段的用户,而不仅仅是初学者。
2.3环境配置
JDKersion:
2.3.0(版本)及Greenfoot的安装
3、模块具体实现和主要动画触发
在设计走迷宫小游戏时,编写了6个JAVA源文件:
MazeWindow.java、MazePoint.java、WallOrRoad.java、Maze.java、PersonInMaze.java、HandleMove.java
1、PersonInMaze.java
此类继承了JTextField类,当鼠标指向小人图像时会有提示信息“单击我,然后按键盘方向键”。
获取走迷宫者的小人图像。
2、MazePoint.java
该类获取MazePoint对象的坐标值,并返回。
3、WallOrRoad.java
此类继承了JPanel类,JPanel是一般轻量级容器,在此容器上定义了迷宫图形。
4、Maze.java
Maze类对JLayeredPane进行了继承,JLayeredPane位容器添加了深度,允许组件在需要时互相重叠。
Integer
对象指定容器中每个组件的深度,其中编号较高的组件位于其他组件之上。
5、HandleMove.java
HandleMove类不仅对JPanel类进行了继承,还改写了keyPressed(KeyEvente)和actionPerformed(ActionEvente),实现了KeyListener和ActionListener两个接口,对鼠标和键盘添加了监听器,使鼠标和键盘可以完成相应操作。
6.MazeWindow.java
MazeWindow是本游戏程序的主类,在此类中对菜单和菜单项进行了设计。
4、总结
“走迷宫”游戏的基本功能都已实现,在此程序中各类间反复的关联和依赖关系让类与类之间的关系复杂,稍有不明白程序就无法继续下去。
但是该游戏仅仅对几个简单的迷宫游戏进行了设计,没有实现平常的通关模式的设计,这是此游戏应该改进的地方。
通过这次“走迷宫”游戏的设计让我明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,从理论中得出结论,才能真正的提高自己的水命,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说是困难重重,并且还发现了自己的很多不足之处,对以前所学过的知识理解得不够深刻、透彻,掌握的不够牢固。
同时在这次的设计中也有小小的体验了一下做项目的感受。
我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。
我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。
5、参考文献:
[1]王元珍,韩宗芬.IBM-PC宏汇编语言程序设计[M].第二版.华中理工大学出版社,2005
[2]叶核亚.数据结构[M].Java版第2版.北京:
电子工业出版社,2009
[3]耿祥义,张跃平.Java基础教程[M].第2版.北京:
清华大学出版社,2009
[4]刘小晶.数据结构[M].Java语言描述.北京:
6、附录:
public
class
PersonInMaze
extends
JTextField{
MazePoint
point;
Toolkit
tool;
PersonInMaze(){
tool=getToolkit();
//获得工具包
setEditable(false);
//不可见
setBorder(null);
//无边框
setOpaque(false);
//非透明的
setToolTipText("
单击我,然后按键盘方向键"
);
}
publicvoidsetAtMazePoint(MazePointp){
point=p;
publicMazePointgetAtMazePoint(){
returnpoint;
publicvoidpaintComponent(Graphicsg){
super.paintComponent(g);
intw=getBounds().width;
inth=getBounds().height;
Imageimage=tool.getImage("
person.gif"
//获得image图像g.drawImage(image,0,0,w,h,this);
//绘制image图像。
publicclassMazePoint{
intx,y;
publicMazePoint(intx,inty){
this.x=x;
this.y=y;
publicintgetX(){
returnx;
publicintgetY(){
returny;
publicbooleanequals(MazePointp){
if(p.getX()==this.getX()&
&
p.getY()==this.getY())/*如果MazePoint的对象p的x、y值和上面返回的x、y值相同,则返回true,否则返回false*/
returntrue;
else
returnfalse;
publicclassWallOrRoadextendsJPanel{
booleanisRoad,isWall,isEnter,isOut;
MazePointpoint;
FilewallImage,roadImage;
Toolkittool;
WallOrRoad(){
tool=getToolkit();
publicvoidsetIsEnter(booleanboo){
isEnter=boo;
if(isEnter==true)
add(newJLabel("
入口"
));
//定义迷宫的入口
PublicbooleangetIsEnter(){
returnisEnter;
publicvoidsetIsOut(booleanboo){
isOut=boo;
if(isOut==true)
add(newJLabel("
出口"
//定义迷宫的出口
publicbooleangetIsOut(){
returnisOut;
publicvoidsetIsRoad(booleanboo){
isRoad=boo;
if(isRoad==true){
setBorder(null);
//置此组件的边框,无
}
publicbooleangetIsRoad()
{
returnisRoad;
publicvoidsetIsWall(booleanboo){
isWall=boo;
if(isWall==true)
setBorder(newSoftBevelBorder(BevelBorder.RAISED));
/*
Maze(){
setLayout(null);
wallImage=new
File("
wall.jpg"
roadImage=new
road.jpg"
person=new
PersonInMaze();
handleMove=new
HandleMove();
handleMove.initSpendTime();
person.addKeyListener(handleMove);
setLayer(person,JLayeredPane.DRAG_LAYER);
}
publicclassMazeWindowextendsJFrameimplementsActionListener{
Mazemaze;
JMenuBarbar;
//声明菜单条对象
JMenumenuChoice,menuImage;
//声明菜单对象
JMenuItemwallImage,roadImage,defaultImage;
//声明菜单项对象
FilemazeFile,wallImageFile,roadImageFile;
JButtonrenew;
//声明按钮对象
MazeWindow(){
wallImageFile=newFile("
roadImageFile=newFile("
bar=newJMenuBar();
//创建菜单条对象
menuChoice=newJMenu("
选择迷宫"
Filedir=newFile("
."
Filefile[]=dir.listFiles(newFilenameFilter(){
publicbooleanaccept(Filedir,Stringname){
returnname.endsWith("
maze"
}});
for(inti=0;
i<
file.length;
i++)
{
JMenuItemitem=newJMenuItem(file[i].getName());
item.addActionListener(this);
menuChoice.add(item);
mazeFile=newFile(file[0].getName());
init();
menuImage=newJMenu("
选择墙和路的图像(JPG,GIF)"
//创建菜单对象wallImage=newJMenuItem("
墙的图像"
//创建菜单项对象
roadImage=newJMenuItem("
路的图像"
defaultImage=newJMenuItem("
墙和路的默认图像"
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=newJButton("
重新开始"
renew.addActionListener(this);
//为“重新开始”按钮添加监听器add(maze,BorderLayout.CENTER);
//默认布局,
add(renew,BorderLayout.SOUTH);
setVisible(true);
setBounds(60,60,510,480);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*EXIT_ON_CLOSE:
退出应用程序后的默认窗口关闭操作*/}
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迷宫 游戏 设计