动物换位游戏java课设

合集下载

动物换位游戏JAVA课设

动物换位游戏JAVA课设
5.类详细设计(画 UML 图)....................................6 6.关键类成员函数流程图及代码.........................7
6.1 总体流程图 .............................................7 6.2 程序代码...............................................8
2.设计要求
设计 GUI 界面的动物换位游戏,游戏的结果是让左右两组动物交换位置。具体内容如下: 程序分为 4 个级别,用户可以通过界面上提供的菜单选择“初级”、“中级”、“高级”、“自定义” 这 4 个级别。对于“初级”级别,在水平排列的 7 块石头上的左右各有 3 个类型相同的动物,中间 的石头上没有动物;对于“中级”级别,在水平排列的 9 块石头上的左右各有 4 个类型相同的动物, 中间的石头上没有动物;对于“高级”级别,在水平排列的 11 块石头上的左右各有 5 个类型相同的 动物,中间的石头上没有动物;对于“自定义”级别,用户可以输入自己想设置的一个动物数量(输 入的数必须是偶数),在水平排列的 N 块石头上的左右各有(N-1)/2 个类型相同的动物,中间的石头 上没有动物。
5.类详细设计(画 UML 图)
ChangeAnimalWindow 类是 javax.swing 包中的 JFrame 的一个子类,并实现了 ActionListener 接口,标明该类的主要成员变量和方法的 UML 图如图 5-1 所示。
以下是 UML 图中有关数据和方法的详细说明:
图 5-1 ChangeAnimaБайду номын сангаасWindow 类的 UML 图
工作计划与进度安排: 第 18 周:布置课程设计任务,查阅资料,分组设计,程序调试。 第 19 周:程序调试,编写课程设计报告,验收,答辩。

动物换位课程设计

动物换位课程设计

动物换位课程设计一、课程目标知识目标:1. 学生能够理解并描述动物的生活习性、生存环境及在生态系统中的作用。

2. 学生能够掌握至少三种动物的特点,并进行比较分析。

3. 学生能够运用所学的知识,解释动物在不同环境下的适应性行为。

技能目标:1. 学生能够通过观察、实验、调查等方法,收集并整理动物相关资料。

2. 学生能够运用批判性思维,对动物保护问题进行合理分析和讨论。

3. 学生能够运用信息技术手段,制作动物科普宣传海报或演示文稿。

情感态度价值观目标:1. 学生能够关注动物保护问题,培养关爱动物、尊重生命的情感态度。

2. 学生能够认识到人类与动物之间的相互关系,提高环保意识和生态责任感。

3. 学生能够通过课程学习,激发对生物学和自然科学的兴趣,培养探索精神。

课程性质:本课程为自然科学类课程,以动物为主题,结合学生的生活实际,培养学生的观察、分析和解决问题的能力。

学生特点:六年级学生具有一定的认知能力、合作能力和探究精神,对动物世界充满好奇。

教学要求:教师应注重启发式教学,引导学生主动参与、积极思考,提高学生的实践操作能力和创新能力。

同时,关注学生的情感态度价值观培养,使学生在掌握知识的同时,形成正确的价值观。

通过分解课程目标为具体学习成果,便于后续教学设计和评估。

二、教学内容1. 动物的生活习性与生存环境:介绍动物在不同环境下的适应性行为,如沙漠动物、极地动物、森林动物等。

相关教材章节:第三章《动物与自然》第一节“动物的生活习性”。

2. 动物在生态系统中的作用:讲解动物在食物链、生物圈中的作用,以及动物对生态平衡的影响。

相关教材章节:第三章《动物与自然》第二节“动物在生态系统中的作用”。

3. 动物特点比较分析:选择三种具有代表性的动物,从生活习性、身体结构、生存环境等方面进行比较分析。

相关教材章节:第四章《奇妙的动物世界》。

4. 动物保护问题讨论:引导学生关注动物保护,探讨人类活动对动物生存的影响,提出保护措施。

java贪吃蛇课程设计

java贪吃蛇课程设计

java贪吃蛇课程设计1设计⽬的1.1背景近年来,Java作为⼀种新的编程语⾔,以其简单性、可移植性和平台⽆关性等优点,得到了⼴泛地应⽤,特别是Java与万维⽹的完美结合,使其成为⽹络编程和嵌⼊式编程领域的⾸选编程语⾔。

JBuilder是Borland公司⽤于快速开发Java应⽤的⼀款优秀的集成开发环境,它以其友好的开发界⾯、强⼤的组件⽀持等优点,得到⼴⼤程序员的接受和认可。

“贪吃蛇”游戏是⼀个经典的游戏,它因操作简单、娱乐性强⽽⼴受欢迎。

本⽂基于Java技术和JBuilder开发环境,开发了⼀个操作简单、界⾯美观、功能较齐全的“贪吃蛇”游戏。

整个游戏程序分为⼆个功能模块,六个类模块,实现了游戏的开始、暂停、结束。

通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的⽬的。

本⽂在介绍Java相关技术和国内外发展现状的基础上,对“贪吃蛇”游戏的整个⽣命周期的各个开发阶段进⾏了详细地介绍。

⾸先,分析了开发本游戏软件的可⾏性,重点分析本设计所采⽤的技术的可⾏性。

其次,从游戏主界⾯等⼏⽅⾯,分析了本游戏的功能需求;从可使⽤性和安全性⽅⾯分析了属性需求。

然后,进⾏了游戏的概要设计和详细设计,这也是本⽂的重点。

概要设计给出⼆个功能模块的主框架以及六个类模块的函数调⽤关系;详细设计介绍了Java2标准运⾏环境的配置,重点给出各个类模块的程序流程图以及UML图,列表介绍了各个类包含的变量、使⽤的⽅法,展⽰了游戏的界⾯。

为了保证程序代码的正确性和功能实现的可靠性,本⽂还介绍了游戏软件的程序调试过程和功能测试结果。

1.2⽬标本软件是针对贪吃蛇⼩游戏的JAVA程序,利⽤⽅向键来改变蛇的运⾏⽅向,空格键暂停或继续游戏,并在随机的地⽅产⽣⾷物,吃到⾷物就变成新的蛇体,碰到壁或⾃⾝则游戏结束,否则正常运⾏。

2 总体设计2.1 设计思路本系统主要是完成贪吃蛇游戏的基本操作。

⽤户可以⾃⼰练习和娱乐。

本系统需要满⾜以下⼏点要求:(1) 利⽤⽅向键来改变蛇的运⾏⽅向。

动物换位程序报告v2

动物换位程序报告v2

包头师范学院基于动物换位的java程序数学科学学院第二小组2_0 刘慧杰(44) 2_3 王福芹(27)2_1 张嘉欣(23) 2_4 赵星芳(43)2_2 秦凯(50) 2_5 石慧(03)2015.06.27目录一:摘要 (3)二:关键字 (3)三:任务分配 (3)四:系统功能介绍 (4)2 游戏程序规则说明: (4)2 自定义改进 (5)3 排行榜改进 (6)五:UML图 (6)六:模块功能说明及模块流程图 (7)1 程序流程图 (7)2 模块功能说明 (8)1 ChangeAnimalWindow.java(主类) (8)2 Animal.java (8)3 Point.java (8)4 Stone.java (8)5 HandleMouse.java (8)6 AutoMoveAnimal.java (8)7 Customdlg.java (8)8 People.java (9)9 Record.java (9)10 ShowRecordDialog.java (9)七:系统改进部分说明 (9)1.Customdlg.java (9)2 People.java (11)3 Record.java (12)4 ShowRecordDialog.java (14)八:总结 (17)九:参考文献 (17)十:附件清单 (18)一:摘要本实践报告主要是基于Java语言的程序设计,在Netbean平台上设计的“动物换位”小游戏。

本游戏主要的实现内容为让左右两边相同数量的动物利用中间一个空的石头,左边的动物要全部跳到右边的石头上,右边的动物要全部跳到左边的石头上。

由于本程序先期任课教师提供了一些最初的原代码,故本报告主要介绍的是之后的改进部分内容。

主要改进的内容有:1.自定义等级的增加;2.各等级排行榜的增加;基于对于以上的改进,程序增加了Customdlg.java、People.java、Record.java、ShowRecordDialog.java类,实现了以上功能。

动物换位课程设计提问

动物换位课程设计提问

动物换位课程设计提问一、教学目标本节课的教学目标是让学生了解和掌握动物换位的基本概念和原理,培养学生对动物换位的兴趣和好奇心,提高学生运用动物换位解决问题的能力。

知识目标:使学生了解动物换位的定义、特点和应用范围;掌握动物换位的基本原理和计算方法。

技能目标:培养学生运用动物换位解决实际问题的能力;训练学生进行数学表达和逻辑推理的能力。

情感态度价值观目标:激发学生对动物换位的兴趣,培养学生的创新意识和团队合作精神;使学生认识到动物换位在生活中的重要性,树立正确的价值观。

二、教学内容本节课的教学内容主要包括动物换位的定义、特点和应用范围,以及动物换位的基本原理和计算方法。

1.动物换位的定义:介绍动物换位的基本概念,解释动物换位的含义和作用。

2.动物换线的特点:讲解动物换线的基本特点,如交换元素、保持距离等。

3.动物换位应用范围:介绍动物换位在实际问题中的应用范围,如几何、物理等。

4.动物换位的基本原理:阐述动物换位的基本原理,如排列组合、数学建模等。

5.动物换位的计算方法:讲解动物换位的计算方法,如相邻换位、交叉换位等。

三、教学方法为了提高教学效果,本节课将采用多种教学方法相结合的方式进行。

1.讲授法:教师通过讲解动物换位的基本概念、原理和计算方法,使学生掌握相关知识。

2.案例分析法:教师通过分析实际案例,引导学生运用动物换位解决问题,提高学生的实践能力。

3.讨论法:教师学生进行小组讨论,激发学生的思考和创造力,培养学生的团队合作精神。

4.实验法:教师引导学生进行动物换位的实验操作,使学生更好地理解动物换位的原理和应用。

四、教学资源为了支持本节课的教学,我们将准备以下教学资源:1.教材:选用符合课程标准的动物换位教材,为学生提供系统的学习材料。

2.参考书:提供相关的参考书籍,丰富学生的知识储备。

3.多媒体资料:制作精美的PPT、动画等多媒体资料,生动展示动物换位的相关知识。

4.实验设备:准备充足的实验器材,确保每位学生都能参与实验操作。

软件工程课程设计样本

软件工程课程设计样本

软件工程课程设计学校:大连交通大学专业:软件工程班级:072班姓名:学号:0701030216目录1总体设计 (1)1.1本系统的主要功能描述 (1)1.2系统包含的类及类之间的关系 (1)1.3 Java源文件及其功能 (2)2 详细设计 (2)2.1主类ChangeAnimalWindow (2)2.2类Animal (3)2.3类 HandleMouse (4)2.4类 AutoMoveAnimal (4)2.5类Point (5)3功能测试及运行效果 (6)3.1 系统初始界面 (6)3.2 自动演示后界面 (6)3.3游戏成功预览界面 (7)3.4英雄榜界面 (7)参考文献 (7)附录软件源程序 (8)1总体设计1.1本系统的主要功能描述在科技飞速发展、知识日新月异的今天,很多人已经离不开电脑了,包括玩一些休闲小游戏,一个功能齐全的动物换位小游戏应该是很受人们喜爱的。

通过图形技术,实现图片的导入。

通过消息响应机制,使程序可以响应用户的鼠标操作,进行动物换位游戏的操作。

对于本系统,我们需要实现以下一些基本功能:(1) 要实现人机交互,用户可以通过鼠标来操作动物位置。

(2)在游戏成功时会出现成功提示。

(3)用户在玩游戏的时候可以在游戏界面上选择音乐播放。

(4)用户可以选择插入任意已存储的图片。

(5)具有英雄榜功能,可以查看自己的成绩。

(6)具有帮助功能,可以查看游戏规则,和不懂得选项。

1.2系统包含的类及类之间的关系本系统共包括9个Java源文件。

类之间的关系如图1-1所示。

图1-11.3 Java源文件及其功能2 详细设计2.1主类ChangeAnimalWindow(1)成员变量见表2-1(2)方法见表2-2表2-2 主要方法(3)源代码见文件ChangeAnimalWindow.java2.2类Animal(1)成员变量见表2-3(2)方法见表2-4(3)源代码见文件Animal.java2.3类 HandleMouse(1)成员变量见表2-5(2)方法见表2-6(3)源代码见文件HandleMouse.java2.4类 AutoMoveAnimal(1)成员变量见表2-7(2)方法见表2-8(3)源代码见文件AutoMoveAnimal.java2.5类Point(1)成员变量见表2-9(2)方法见表2-10(3)源代码见文件Point.java3功能测试及运行效果3.1 系统初始界面图3-1 初始界面3.2 自动演示后界面图3-2 自动演示后界面3.3游戏成功预览界面图3-3 游戏成功预览界面3.4英雄榜界面图3-4 英雄榜界面参考文献[1] 耿祥义、张跃平著. Java2实用教程(第三版). 北京:清华大学出版社,2006.[2] 宋现锋编著. Java游戏编程导学 . 北京:清华大学出版社,2004[3] 张海藩编著. 软件工程导论(第5版) . 北京:清华大学出版社,2008.[4].雍俊海编著.Java程序设计习题集.北京:清华大学出版社,2006[5].朱福喜编著.Java语言习题与解析.北京:清华大学出版社,2006[6].吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,2006附录软件源程序ChangeAnimalWindow。

java课程设计打地鼠

java课程设计打地鼠

java课程设计打地鼠一、教学目标本章节的教学目标是让学生掌握Java编程的基本语法和逻辑思考能力,通过制作“打地鼠”游戏,让学生熟悉面向对象编程思想,并能够运用Java语言实现简单的游戏程序。

1.理解Java编程语言的基本语法。

2.掌握Java中的面向对象编程思想。

3.了解Java中的事件处理机制。

4.能够使用Java语言编写简单的程序。

5.能够运用面向对象编程思想设计游戏角色和游戏逻辑。

6.能够利用Java中的事件处理机制来实现游戏交互。

情感态度价值观目标:1.培养学生的编程兴趣,提高学生学习的积极性。

2.培养学生团队协作的能力,增强学生的团队意识。

3.培养学生勇于创新的精神,提高学生的创新能力。

二、教学内容本章节的教学内容主要包括Java编程语言的基本语法、面向对象编程思想、事件处理机制。

1.Java编程语言的基本语法:介绍Java程序的基本结构,包括类、方法、变量等。

2.面向对象编程思想:讲解类的定义、对象的创建、继承、多态等概念。

3.事件处理机制:介绍Java中的事件处理机制,包括事件监听器、事件源等。

4.游戏设计:通过制作“打地鼠”游戏,让学生运用所学的Java知识设计游戏角色和游戏逻辑。

三、教学方法本章节的教学方法采用讲授法、案例分析法、实验法相结合的方式。

1.讲授法:讲解Java编程语言的基本语法、面向对象编程思想和事件处理机制。

2.案例分析法:分析典型的游戏设计案例,让学生了解游戏设计的原理和方法。

3.实验法:让学生动手实践,制作“打地鼠”游戏,巩固所学知识。

四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:选用《Java编程思想》作为主教材,辅助以《Java核心技术》等参考书。

2.多媒体资料:提供Java编程语言的教程、游戏设计案例等视频资料。

3.实验设备:计算机、投影仪等,用于课堂演示和实验操作。

五、教学评估本章节的教学评估主要包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。

java课程设计实验报告动物换位

java课程设计实验报告动物换位

实验主题:动物换位1. 实验目的1.1 掌握Java面向对象程序设计的基本思想和方法;1.2 学习使用Java语言编写程序并进行调试;1.3 加深对继承、多态等概念的理解。

2. 实验内容2.1 设计一个动物类Animal,包括属性:尊称、芳龄、性莂等,并包括方法:eat()、run()等;2.2 在Animal类的基础上,设计其他动物类,例如猫类Cat、狗类Dog,并且实现相关的方法;2.3 设计一个动物换位的场景类,对不同种类的动物进行换位操作,观察调用不同对象的同一方法时的效果。

3. 实验原理3.1 面向对象程序设计:将问题进行对象抽象,建立对象与对象之间的关系;3.2 继承关系:利用继承关系实现不同类之间的共性和特性;3.3 多态性:通过调用父类的引用指向子类对象,实现方法的动态绑定和多态的效果。

4. 实验步骤4.1 设计动物类Animal,包括属性和方法的声明;4.2 设计猫类Cat和狗类Dog,继承Animal类,并重写eat()和run()方法;4.3 设计动物换位的场景类AnimalSwap,创建不同种类的动物对象,并进行方法的调用。

5. 实验代码Animal类:```javaclass Animal {String name;int age;char sex;public Animal(String name, int age, char sex) { = name;this.age = age;this.sex = sex;}public void eat() {System.out.println(name + " is eating.");}public void run() {System.out.println(name + " is running."); }}```Cat类:```javaclass Cat extends Animal {public Cat(String name, int age, char sex) {super(name, age, sex);}Overridepublic void eat() {System.out.println(name + " is eating fish."); }Overridepublic void run() {System.out.println(name + " is jumping."); }}```Dog类:```javaclass Dog extends Animal {public Dog(String name, int age, char sex) {super(name, age, sex);}Overridepublic void eat() {System.out.println(name + " is eating bone."); }Overridepublic void run() {System.out.println(name + " is barking.");}}```AnimalSwap类:```javapublic class AnimalSwap {public static void m本人n(String[] args) { Animal cat = new Cat("Tom", 3, 'M'); Animal dog = new Dog("Mike", 5, 'F');cat.eat();dog.eat();cat.run();dog.run();}}```6. 实验结果运行AnimalSwap类,输出结果:```Tom is eating fish.Mike is eating bone.Tom is jumping.Mike is barking.```7. 实验分析通过实验可知,通过调用不同对象的eat()和run()方法时,虽然调用的是同一个方法,但实际执行的是不同类中重写的方法,表现出多态的效果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成绩评定表课程设计任务书目录1.设计目的 (4)2.设计内容 (4)3.课程软件主要功能 (4)4.类总体设计 (4)4.1类组合关系图 (5)4.2主类 (5)4.3其他类 (5)5.类详细设计(画UML图) (6)6.关键类成员函数流程图及代码 (7)6.1总体流程图 (7)6.2程序代码 (8)7.软件运行结果 (14)8.结论 (16)参考文献 (16)1.设计目的1.通过实验,使学生进一步加深面向对象的编程设计思想;2.训练掌握、加深理解并巩固《Java程序设计》课程中所学到的基本概念、编程思路;3.综合运用Java程序设计的编程方法,能够利用这些程序设计方法来解决工程和科研中常见的实际问题;4.培养分析解决问题的实际动手能力,进一步提高进行大型程序设计的能力。

2.设计要求设计GUI界面的动物换位游戏,游戏的结果是让左右两组动物交换位置。

具体内容如下:程序分为4个级别,用户可以通过界面上提供的菜单选择“初级”、“中级”、“高级”、“自定义”这4个级别。

对于“初级”级别,在水平排列的7块石头上的左右各有3个类型相同的动物,中间的石头上没有动物;对于“中级”级别,在水平排列的9块石头上的左右各有4个类型相同的动物,中间的石头上没有动物;对于“高级”级别,在水平排列的11块石头上的左右各有5个类型相同的动物,中间的石头上没有动物;对于“自定义”级别,用户可以输入自己想设置的一个动物数量(输入的数必须是偶数),在水平排列的N块石头上的左右各有(N-1)/2个类型相同的动物,中间的石头上没有动物。

3.课程软件主要功能程序分为不同的级别,左右各有动物,中间石头没有动物,将左右动物交换,不可后退。

用鼠标单击一个动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跃到石头上,其他情形时,该动物不能跳跃。

如果对游戏有疑问可以点击帮助,查看游戏规则。

不能持续玩的可以点自动演示,将自动完成游戏,可以帮助游戏者更好的了解系统的主体功能4.类总体设计设计动物换位时需要编写10个Java源文件:ChangeAnimalWindow.java、Point.java、Animal.java、Stone.java、HandleMouse.java、AutoMoveAnimal.java、People.java、Record.java、ShowRecordDialog.java和Customdlg.java。

动物换位除了需要编写上述10个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如:JmenuItem、File和Jbutton类等。

动物换位所用到的一些重要的类以及之间组合关系如图4-1所示。

4.1类组合关系图以下是10个Java源文件的总体设计:图4-1 类之间的组合关系4.2主类ChangeAnimalWindow.javaChangeAnimalWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始执行。

4.3其他类Animal.javaAnimal类是JPanel的一个子类,创建的对象是ChangeAnimalWindow类的重要成员之一,用来表示“动物”。

Point.javaPoint类负责创建确定位置的对象,使用Point对象,可以确定Animal以及Stone对象在窗体中的位置。

Stone.javaStone类是JButton的一个子类,创建的对象表示“石头”。

HandleMouse.javaHandleMouse类所创建的对象负责处理鼠标事件。

AutoMoveAnimal.javaAutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。

Customdlg.javaCustomdlg类所创建的对象用来设置“自定义”级别的动物数量。

People.javaPeople对象封装用户的名字和成绩,以便ShowRecordDialog对象可以排序。

Record.javaRecord类是javax.swing包中JDialog对话框的子类,当用户成功完成相应级别的游戏时,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中。

ShowRecordDialog.javaShowRecordDialog类是javax.swing包中JDialog对话框的子类,当用户单击查看相应的级别排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩。

5.类详细设计(画UML图)ChangeAnimalWindow类是javax.swing包中的JFrame的一个子类,并实现了ActionListener 接口,标明该类的主要成员变量和方法的UML图如图5-1所示。

以下是UML图中有关数据和方法的详细说明:图5-1 ChangeAnimalWindow类的UML图6.关键类成员函数流程图及代码 6.1总体流程图图6-1 总体流程图6.2程序代码import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.ArrayList;import java.io.*;import javax.swing.filechooser.*;public class ChangeAnimalWindow extends JFrame implements ActionListener{ int amountOfAnimal=6;int distance=80;Animal [] animal;Point [] point;Stone [] stone;HandleMouse handleMouse;AutoMoveAnimal autoMoveAnimal;File leftImageFile,rightImageFile;JButton renew,quit,autoButton=null;JMenuBar bar;JMenu menuGrade,menuImage;JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;JMenuItem leftIamge,rightIamge,defaultImage;JPanel pCenter;ChangeAnimalWindow(){pCenter=new JPanel();pCenter.setBackground(Color.lightGray);pCenter.setLayout(null);handleMouse=new HandleMouse();autoMoveAnimal=new AutoMoveAnimal();leftImageFile=new File("dog.jpg");rightImageFile=new File("cat.jpg");init();bar=new JMenuBar();menuGrade=new JMenu("选择级别");menuImage=new JMenu("选择动物图像(JPG,GIF)");oneGradeItem=new JMenuItem("初级");twoGradeItem=new JMenuItem("中级");threeGradeItem=new JMenuItem("高级");leftIamge=new JMenuItem("左面动物的图像");rightIamge=new JMenuItem("右面动物的图像");defaultImage=new JMenuItem("左右面动物的默认图像");menuGrade.add(oneGradeItem);menuGrade.add(twoGradeItem);menuGrade.add(threeGradeItem);menuImage.add(leftIamge);menuImage.add(rightIamge);menuImage.add(defaultImage);bar.add(menuGrade);bar.add(menuImage);setJMenuBar(bar);oneGradeItem.addActionListener(this);twoGradeItem.addActionListener(this);threeGradeItem.addActionListener(this);leftIamge.addActionListener(this);rightIamge.addActionListener(this);defaultImage.addActionListener(this);renew=new JButton("重新开始");renew.addActionListener(this);autoButton=new JButton("自动演示");autoButton.addActionListener(this);quit=new JButton("撤消");quit.addActionListener(this);JPanel north=new JPanel();north.add(renew);north.add(quit);north.add(autoButton);String mess="互换左右动物位置";JLabel hintMess=new JLabel(mess,JLabel.CENTER);north.add(hintMess);add(north,BorderLayout.NORTH);add(pCenter,BorderLayout.CENTER);JPanel south=new JPanel();south.add(handleMouse);add(south,BorderLayout.SOUTH);setVisible(true);setBounds(60,60,710,300);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void init(){animal=new Animal[amountOfAnimal];point=new Point[amountOfAnimal+1];stone=new Stone[amountOfAnimal+1];int space=distance;for(int i=0;i<point.length;i++){point[i]=new Point(space,100);space=space+distance;}for(int i=0;i<animal.length;i++){animal[i]=new Animal();animal[i].addMouseListener(handleMouse);if(i<animal.length/2){animal[i].setIsLeft(true);}else{animal[i].setIsLeft(false);}}for(int i=0;i<stone.length;i++){stone[i]=new Stone();pCenter.add(stone[i]);stone[i].setSize(distance*8/9,18);int w=stone[i].getBounds().width;int h=stone[i].getBounds().height;stone[i].setLocation(point[i].getX()-w/2,point[i].getY());point[i].setThisStone(stone[i]);}for(int i=0;i<animal.length;i++){animal[i].setSize(distance*6/7,distance*3/4);int w=animal[i].getBounds().width;int h=animal[i].getBounds().height;pCenter.add(animal[i]);if(i<animal.length/2){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]);point[i+1].setIsHaveAnimal(true);}}handleMouse.setPoint(point);handleMouse.setCountTime(true);autoMoveAnimal.setPoint(point);autoMoveAnimal.setStep();}public void setAmountOfAnimal(int m){if(m>=2&&m%2==0)amountOfAnimal=m;}public void removeAnimalAndStone(){for(int i=0;i<point.length;i++){if(point[i].getThisAnimal()!=null)pCenter.remove(point[i].getThisAnimal());}for(int i=0;i<stone.length;i++){if(point[i].getThisStone()!=null)pCenter.remove(point[i].getThisStone());}pCenter.validate();pCenter.repaint();}public void needDoing(){init();handleMouse.initStep();handleMouse.initSpendTime();handleMouse.setCountTime(true);autoMoveAnimal.setPoint(point);}public void actionPerformed(ActionEvent e){if(e.getSource()==oneGradeItem){distance=80;removeAnimalAndStone();setAmountOfAnimal(6);needDoing();}else if(e.getSource()==twoGradeItem){distance=70;removeAnimalAndStone();setAmountOfAnimal(8);needDoing();}else if(e.getSource()==threeGradeItem){distance=60;removeAnimalAndStone();setAmountOfAnimal(10);needDoing();}else if(e.getSource()==renew){removeAnimalAndStone();needDoing();}else if(e.getSource()==autoButton){removeAnimalAndStone();needDoing();handleMouse.setCountTime(false);autoMoveAnimal.setStep();int x=this.getBounds().x+this.getBounds().width/2;int y=this.getBounds().y+this.getBounds().height;autoMoveAnimal.setLocation(x,y);autoMoveAnimal.setSize(this.getBounds().width/2,120);autoMoveAnimal.setVisible(true);}else if(e.getSource()==quit){ArrayList<Integer> step=handleMouse.getStep();int length=step.size();int start=-1,end=-1;if(length>=2){end=step.get(length-1);start=step.get(length-2);step.remove(length-1);step.remove(length-2);Animal ani=point[end].getThisAnimal();int w=ani.getBounds().width;int h=ani.getBounds().height;ani.setLocation(point[start].getX()-w/2,point[start].getY()-h);ani.setAtPoint(point[start]);point[start].setThisAnimal(ani);point[start].setIsHaveAnimal(true);point[end].setIsHaveAnimal(false);}}else if(e.getSource()==leftIamge){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){leftImageFile=file;for(int i=0;i<animal.length;i++){if(animal[i].getIsLeft()==true){animal[i].setLeftImage(leftImageFile);animal[i].repaint();}}}}else if(e.getSource()==rightIamge){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){rightImageFile=file;for(int i=0;i<animal.length;i++){if(animal[i].getIsLeft()==false){animal[i].setRightImage(rightImageFile);animal[i].repaint();}}}}else if(e.getSource()==defaultImage){leftImageFile=new File("dog.jpg");rightImageFile=new File("cat.jpg");for(int i=0;i<animal.length;i++){if(animal[i].getIsLeft()==true)animal[i].setLeftImage(leftImageFile);elseanimal[i].setRightImage(rightImageFile);animal[i].repaint();}}validate();}public static void main(String args[]){new ChangeAnimalWindow();}}7.软件运行结果进入游戏主界面:图7-1 主界面图当用户不知怎么游戏时,可以按下自动演示,可以帮助用户更好的了解,当用户按下自动演示时如图所示:图7-2自动演示按钮调试图选择级别菜单调试如图所示:图7-3 选择难度中级图用户觉得动物图像太单调时,本系统可以有一个选择不同动物图像的功能,根据用户需求,可以选择左边图像或右边图像,当然也可以恢复默认图像,根据多变的选择如图所示:图7-4 选择左边动物图8.结论这此课程设计我们做的是“动物换位”游戏,主要是让左右两边相同数量的动物通过中间一个空的石头,左边的动物要全部跳到右边的石头上,右边的动物要全部跳到左边的石头上。

相关文档
最新文档