Java课程设计动物换位有背景音乐调色板英雄排行榜.docx
- 文档编号:7560440
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:59
- 大小:2.20MB
Java课程设计动物换位有背景音乐调色板英雄排行榜.docx
《Java课程设计动物换位有背景音乐调色板英雄排行榜.docx》由会员分享,可在线阅读,更多相关《Java课程设计动物换位有背景音乐调色板英雄排行榜.docx(59页珍藏版)》请在冰豆网上搜索。
Java课程设计动物换位有背景音乐调色板英雄排行榜
课程设计报告
专业:
电子信息工程
班级:
11030301
学号:
**********
姓名:
***
指导老师:
王红周越
(课程设计时间:
2012年07月03-2012年07月14日)
成绩评定表
学生姓名
丁亚东
班级学号
1103030123
专业
电子信息工程
课程设计题目
动物换位
评
语
组长签字:
成绩
日期
2012年月日
课程设计任务书
学院
信息学院
专业
学生姓名
班级学号
课程设计题目
基于Java的动物换位游戏软件设计
实践教学要求与任务:
采用java技术设计动物换位游戏软件,设计要求如下:
(1)程序分为3个级别,用户可以通过界面上提供的菜单来选择“初级”、“中级”和“高级”这三个级别。
对于“初级”级别,在水平排列的7块石头上的左右各有3个类型相同的动物,中间的石头上没有动物;对于“中级”级别,在水平排列的9块石头上的左右各有4个类型相同的动物,中间的石头上没有动物;对于“高级”级别,在水平排列的11块石头上的左右各有5个类型相同的动物,中间的石头上没有动物。
(2)用鼠标单击一个动物,如果该动物的前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有其他的动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跳跃到石头上,其他情形时,该动物不跳跃(跳跃时不能超过2块石头)。
(3)左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。
(4)用户可以通过单击界面上提供的按钮,让程序自动完成动物换位。
(5)可以随时单击界面上提供的按钮,重新开始当前的级别。
(6)用户通过菜单选项,可以选择左、右动物的图像。
工作计划与进度安排:
第18周:
布置课程设计任务,查阅资料,分组设计,程序调试。
第19周:
程序调试,编写课程设计报告,验收,答辩。
指导教师:
2012年月日
专业负责人:
2012年月日
学院教学副院长:
2012年月日
Java课程设计
1.设计目的
设计GUI界面的动物换位游戏,游戏的结果是让左右两组动物交换位置。
具体要求如下:
(1)程序分为3个级别,用户可以通过界而上提供的菜单来选择"初级"、"中级"和"高级"这3个级别。
对于"初级"级别,在水平排列的7块石头上的左右各有3个类型相同的动物中,间的石头上没有动物;对于"中级"级别,在水平排列的9块石头上的左右各有4个类型相同的动物,中间的石头上没有动物;对于"高级"级别,在水平排列的11块石头上的左右各拥有5个类型相同的动物,中间的石头上没有动物。
(2)用鼠标单击一个动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有其他的动物,但相隔的位置上的石头没有动物,该动物就越过自己前面的动物跳跃到石头上,其他情形时,该动物不跳跃或跳跃时不能越过2块石头。
(3)左方的动物只能向右方跳跃,右方的动物只能向左方跳跃。
(4)用户可以通过单击界面上提供的按钮,让程序自动完成动物换位。
(5)可以随时单击界面上提供的按钮,重新开始当前的级别。
(6)用户通过菜单选项,可以选择左、右方动物的图像。
2.总体设计
在设计动物换位时,需要编写9个Java源文件:
ChangeAnimalWindow.java、Point.java、Animal.java、Stone.java、HandleMouse.java,sound.java,showRecord.java,Record.java和AutoMoveAnimal.java。
动物换位除了需要编写的上述9个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenultem,File和]Button类。
动物换位所用到的一些重要的类以及之间的组合关系如图所示
2.1ChangeAnimalWindow.java(主类)
ChangeAnimalWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始执行。
ChangeAnimalWindow类的成员变量中有五种重要类型的对象:
Animal、Point、Stone、HandleMouse和AutoMoveAnimal对象。
ChangeAnimalWindow将在后面的详细设计中阐述。
ChangeAnimalWindow类创建的窗口以及其中的主要成
图2.1.1类之间组合关系
成员对象如图2.1.2所示
图2.1.2ChangeAnimalWindow窗口及主要成员变量
2.2Animal.java
Animal类是JPanel的一个子类,创建的对象是ChangeAnimalWindow类的重要成员之一,用来表示"动物"
2.3Point.java
Point类负责创建确定位血的对象.使用Point对象.可以确定Animal以及Stone对象在铜体巾的位置
2.4Stone.java
Stone类是JButton的一个手挠,创建的对象表示"石头”。
2.5HandleMouse.java
HandleMouse类所创建的对象负责处理鼠标事件。
2.6AutoMoveAnimal.java
AutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。
2.7Sound.java
Sound类所创建的对象是为了给游戏添加背景音乐。
对于点不同的按钮可以播放不同的音乐,增加了游戏的人性化。
2.8ShowRecord.java
ShowRecord创建界面负责显示个人记录,自己在的得分和排名情况。
2.9record.java
创建对象为了加入成绩界面。
3程序流程及主要代码
3.1ChangeAnimalWindow类
3.1.1效果图
ChangeAnimalWindow创建的窗口效果如图3.1.1所示.
图3.1.1主类ChangeAnimalWindow创建的窗口效果
3.1.2UML图
ChangeAnimalWindow类是javax.swing包JFrame的一个子类,并实现了ActionListener接口,标明该类的主要成员变是和方法的UML图,如图4.4所示。
以下是UML图中有关方法的详细说明.
图3.1.2ChangeAnimalWindowUML示图
3.1.3成员变量
•amountOfAnimal是Int型数据,默认值是6.amountOfAnimal的值用来确定ChangeAnimalWindow窗体中"动物"的数目,即Animal对象的数目。
•distance是int型数据,默认值是80.distance的值用来确定Point对象之间的距离,进而可以确定Animal之间,Stone之间的距离以及Animal和Stone对象外观的大小。
•animal是Animal型数组,其长度为amountOfAnimal。
•Point是Point型数组,其长度为amountOfAnimal+1。
•Stone是Stone型数组,其长度为amountOfAnimal+1。
•HandleMouse是HandleMouse类创建的鼠标事件监视器,用来监视animal数组中Animal对象触发的鼠标事件。
•auroMoveAnimal是AutoMoveAnimal类创建的对话框。
通过该对话框可以实现程序向将左右动物交换位置。
•bar是JMenuBar创建的菜单条,用来添加菜单,bar被放置在窗口的顶部。
•MenuGrade是JMenu创建的菜单,其名字为"选择级别"menuImage也是JMenu创建的菜单,其名字为"选择动物图像(jPG,GIF)"menuGrade和menuImage被添加到菜单条bar中。
•oneGradeItem,twoGradeItem和threeGradeItem是JMenultem创建的菜单项,它们的名字依次为"初级"、"中级"和..高级",这三个菜单项被添加到菜单项menuGrade中。
LeftImage、rightImage和defaultImage也是JMenultem创建的菜单项,其名字依次为"左面动物的图像"、"右面动物的图像"、"左右面的动物的默认图像",这三个菜单项被添加到菜单项menumage中。
oneGradeItem,twoGradeItem和1threeGradeItem以及leftImage、rightImage和defaultImage都将当前窗口注册为向己的ActionEvcnt事件监视器。
•renew、quit和autoButton是JButton创建的按钮对象,名字依次为"重新开始"、"撤销"和"自动演示"Renew、quit和autoButton都将在当前接口注册为自己的ActionEvent事件监视器。
3.1.4方法
•ChangcAnimalWindow()是构造方法,负责完成窗口的初始化。
init()方法负责完成AnimalStonePoint对象的创建。
•setamountOfAnimal(int)方法负责设置动物的个数,即amountOfAnimal的值。
•removeAnimalAndStone()方法负责从窗体中移掉动物和石头,即移掉Animal对象和Stone对象。
•needDoing()方法负责执行一些经常需要重复执行的代码。
•ActionPerformed(ActionEvent)方法是ChangeAnimalWindow类实现的ActionListener接口中的方法。
ChangeAnimalWindow创建的窗口是oneGradeltem,twoGradeItem、threeGradeItem、leftImage、rightImagedefaultImage菜单项和renewquitautoButton按组的ActionEvent事件监视器。
当用户选中某个菜单项或单击按钮时,筒口将执行actionPerformed(ActionEvent)方法进行相应的操作。
如果用户选中oneGradeItem、twoGradeItem和threeGradeItem三个菜单项的某一项时,actionPerformed(ActionEvent)方法所执行的操作就是改变amountOfAnimal的值,_执行needDoing()方法,完成必要的初始化。
如果用户选中leftlmage和rightImage菜单项的某一个时,actionPerformed(ActionEvent)方法所执行的操作就是改变leftImageFile和rightImageFile的引用。
当用户单击renew按钮时,actionPerformed(ActionEvent)方法所进行的操作是保持当前的amountofAnimal的值,并执行needDoing()方法,完成必要的初始化,当用户单击quit按钮时,ActionPeformed(ActionEvent)方法所进行的操作是撤销当前"动物"的前一次跳跃。
当用户单击autoButton按钮时,actionPerformed(ActionEvent)方法所进行的操作是弹出autoMoveAnimal对话框,用用户可以通过该对话框让程序显示动物换位过程。
•main(String)方法是程序运行的入口方法。
3.1.5源代码
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.ArrayList;
importjava.io.*;
importjava.util.*;
importjavax.swing.filechooser.*;
publicclassChangeAnimalWindowextendsJFrameimplementsActionListener{
intamountOfAnimal=6;
intdistance=80;
Animal[]animal;
Hashtablehashtable=newHashtable();
Point[]point;
Stone[]stone;
HandleMousehandleMouse;
AutoMoveAnimalautoMoveAnimal;
FileleftImageFile,rightImageFile,heroFile;
JButtonrenew,quit,autoButton=null;
JMenuBarbar;
JMenumenuGrade,menuImage,menuHero,yingyue,tui,tiao;//在菜单中定义了音乐,推出对
JMenuItemoneGradeItem,twoGradeItem,threeGradeItem;
JMenuItemleftIamge,rightIamge,defaultImage;
JMenuItemhero,bofang1,chu,bofang2,bofang3,she;
ShowRecordshowHeroRecord=newShowRecord(this,hashtable);
JPanelpCenter;
ChangeAnimalWindow(){
pCenter=newJPanel();
pCenter.setBackground(Color.lightGray);
pCenter.setLayout(null);
handleMouse=newHandleMouse();
autoMoveAnimal=newAutoMoveAnimal();
leftImageFile=newFile("dog.jpg");
rightImageFile=newFile("cat.jpg");
heroFile=newFile("英雄.txt");//打开英雄排行榜
init();
bar=newJMenuBar();
menuGrade=newJMenu("选择级别");
yingyue=newJMenu("选择音乐");
tui=newJMenu("退出游戏");
tiao=newJMenu("背景颜色");
menuImage=newJMenu("选择动物图像(JPG,GIF)");
menuHero=newJMenu("游戏英雄榜");
oneGradeItem=newJMenuItem("初级");
twoGradeItem=newJMenuItem("中级");
threeGradeItem=newJMenuItem("高级");
bofang1=newJMenuItem("播放一");//在菜单设置中创建播放
bofang2=newJMenuItem("播放二");
bofang3=newJMenuItem("播放三");
chu=newJMenuItem("终止");
she=newJMenuItem("调色");
she.addActionListener(this);
chu.addActionListener(this);
bofang1.addActionListener(this);
bofang2.addActionListener(this);
bofang3.addActionListener(this);
leftIamge=newJMenuItem("左面动物的图像");
rightIamge=newJMenuItem("右面动物的图像");
defaultImage=newJMenuItem("左右动物的默认图像");
hero=newJMenuItem("英雄");
hero.addActionListener(this);
menuGrade.add(oneGradeItem);
menuGrade.add(twoGradeItem);
menuGrade.add(threeGradeItem);
menuImage.add(leftIamge);
menuImage.add(rightIamge);
menuImage.add(defaultImage);
menuHero.add(hero);
bar.add(menuGrade);
bar.add(menuImage);
bar.add(yingyue);
bar.add(tui);
bar.add(tiao);
tiao.add(she);
yingyue.add(bofang1);//把播放添加到菜单设置中
yingyue.add(bofang2);
yingyue.add(bofang3);
tui.add(chu);
bar.add(menuHero);
setJMenuBar(bar);
oneGradeItem.addActionListener(this);
twoGradeItem.addActionListener(this);
threeGradeItem.addActionListener(this);
leftIamge.addActionListener(this);
rightIamge.addActionListener(this);
defaultImage.addActionListener(this);
hero.addActionListener(this);
renew=newJButton("重新开始");
renew.addActionListener(this);
autoButton=newJButton("自动演示");
autoButton.addActionListener(this);
quit=newJButton("撤消");
quit.addActionListener(this);
JPanelnorth=newJPanel();
north.add(renew);
north.add(quit);
north.add(autoButton);
Stringmess="互换左右动物位置";
JLabelhintMess=newJLabel(mess,JLabel.CENTER);
north.add(hintMess);
add(north,BorderLayout.NORTH);
add(pCenter,BorderLayout.CENTER);
JPanelsouth=newJPanel();
south.add(handleMouse);
add(south,BorderLayout.SOUTH);
setVisible(true);
setBounds(60,60,710,300);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidinit(){
animal=newAnimal[amountOfAnimal];
point=newPoint[amountOfAnimal+1];
stone=newStone[amountOfAnimal+1];
intspace=distance;
for(inti=0;i point[i]=newPoint(space,100); space=space+distance; } for(inti=0;i animal[i]=newAnimal(); animal[i].addMouseListener(handleMouse); if(i animal[i].setIsLeft(true); } else{ animal[i].setIsLeft(false); } } for(inti=0;i stone[i]=newStone(); pCenter.add(stone[i]); stone[i].setSize(distance*8/9,18); intw=stone[i].getBounds().width; inth=stone[i].getBounds().height; stone[i].setLocation(point[i].getX()-w/2,point[i].getY()); point[i].setThisStone(stone[i]); } for(inti=0;i animal[i].setSize(distance*6/7,distance*3/4); intw=animal[i].getBounds().width; inth=animal[i].getBounds().height; pCenter.add(animal[i]); if(i animal[i].setIsLeft(true); animal[i].setLeftImage(leftImageFile); animal[i].repaint(); animal[i].setLocation(point[i].getX()-w/2,point[i].getY()-h); animal[i].setAtPoint(point[i]); point[i].setThisAnimal(animal[i]); point[i].setIsHaveAnimal(true); } else{ animal[i].setIsLeft(false); animal[i].setRightImage(rightImageFile); animal[i].repaint(); animal[i].setLocation(point[i+1].getX()-w/2,point[i+1].getY()-h); animal[i].setAtPoint(point[i+1]); point[i+1].setThisAnimal(animal[i])
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 动物 换位 背景音乐 调色板 英雄 排行榜