动物换位游戏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]
学生姓名
课程设计说明书
NO.1
成绩评定表
王聿鹏
班级学号
1203030223
专 业 电子信息工 课程设计题目 基于 Java 的动物

换位游戏软件设计


组长签字:
成绩 日期
2013 年 月 日
沈阳大学
课程设计说明书
NO.2
课程设计任务书
学院 学生姓名 课程设计题目
信息学院
专业
电子信息工程
王聿鹏
班级学号 1203030223
单条 bar 中。 ·oneGradeItem、twoGradeItem 和 threeGradeItem 是 JmenuItem 创建的菜单项,
它们的名字依次为“初级”、“中级”和“高级”,这三个菜单项被添加到菜单项 menuGrade
中。LeftImage、rightImage 和 defaultImage 也是 JmenuItem 创建的菜单项,其名字
工作计划与进度安排: 第 18 周:布置课程设计任务,查阅资料,分组设计,程序调试。 第 19 周:程序调试,编写课程设计报告,验收,答辩。
指导教师:
专业负责人:
学院教学副院长:
2013 年 6 月 20 日 2013 年 6 月 20 日
2013 年 6 月 20 日
沈阳大学
课程设计说明书
NO.3
Animal Point Stone HandleMouse AutoMoveAnimal JmenuItem File Jbutton
2.2 系统功能描述
图 2.1 类之间的组合关系
2.2.1 ChangeAnimalWindow.java(主类)
ChangeAnimalWindow 类负责创建动物换位的主窗口,该类含有 main 方法, 程序从该类开始运行。ChangeAnimalWindow 类的成员变量中有五种重要类型的对象: Animal、Point、Stone、HandleMouse 和 AutoMoveAnimal 对象。

java课程设计迷宫鼠

java课程设计迷宫鼠

java课程设计迷宫鼠一、教学目标本课程的教学目标是使学生掌握Java编程的基本知识,学会使用Java编写简单的程序,通过制作迷宫鼠游戏,提高学生的编程实践能力。

具体分为以下三个部分:1.知识目标:使学生了解Java编程语言的基本语法、数据类型、控制结构、类与对象等基本概念。

2.技能目标:培养学生使用Java编程语言解决实际问题的能力,学会使用Java编写简单的游戏程序。

3.情感态度价值观目标:培养学生对编程的兴趣,提高学生主动学习和探索问题的意识。

二、教学内容本课程的教学内容主要包括Java编程语言的基本语法、数据类型、控制结构、类与对象等知识。

教学过程中,将结合迷宫鼠游戏的制作,让学生动手实践,更好地理解和掌握这些知识。

1.Java基本语法和数据类型2.Java控制结构3.Java类与对象4.迷宫鼠游戏的制作三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:用于讲解Java编程语言的基本语法、数据类型、控制结构、类与对象等知识。

2.讨论法:鼓励学生积极参与课堂讨论,提高学生主动学习和思考的能力。

3.案例分析法:通过分析迷宫鼠游戏的案例,让学生更好地理解和掌握Java编程知识。

4.实验法:让学生动手实践,制作迷宫鼠游戏,提高学生的编程实践能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《Java编程入门》2.参考书:《Java核心技术》3.多媒体资料:教学PPT、迷宫鼠游戏案例视频等4.实验设备:计算机、网络等以上教学资源将有助于丰富学生的学习体验,提高教学效果。

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

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和理解程度,占总评的30%。

2.作业:布置与课程内容相关的编程作业,评估学生的编程能力和实践能力,占总评的40%。

基于Java的动物换位游戏软件设计课程设计报告

基于Java的动物换位游戏软件设计课程设计报告

课程设计任务书沈阳理工大学课程设计报告目录1 课设软件主要功能 (1)2 类总体设计 (2)2.1 类组合关系图 (2)2.2 主类 (2)2.3 其他类 (2)3 类详细设计 (3)3.1 CHANGEANIMALWINDOW类 (3)3.2 ANIMAL类 (5)3.3 POINT类 (7)3.4 STONE类 (8)3.5 HANDLEMOUSE类 (9)3.6 AUTOMOVEANIMAL类 (10)4 关键类成员函数流程图及代码 (13)5 软件运行结果 (35)结论 (37)参考文献 (37)动物换位系统的设计1 课设软件主要功能程序分为不同的级别,左右各有动物,中间石头没有动物,将左右动物交换,不可后退。

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

不能持续玩的可以点自动演示,将自动完成游戏,可以帮助游戏者更好的了解系统的主体功能。

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

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

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

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

用Java编写动物迷宫游戏

用Java编写动物迷宫游戏

用Java编写动物迷宫游戏分第一部分:游戏简介邮递员小白兔需要走迷宫送四封信选一幅迷宫图在这幅迷宫上有五个小房子,小兔子要把信送到五个小房子中另外还需要一个控制小兔子方向的遥控器,小兔子可以向东西南北四个方向移动算法:1、首先在迷宫上画出方格,在游戏中用变量fangge表示用方向箭头控制小白兔从一个方格移动到另一个方格上,一直到送完信为止其中每个方格可在游戏中画一个矩形框,可显示小白兔的位置,移动位置后先擦去原来画的矩形,然后画一个新的矩形,在每个方格上可显示出可以移动的方向,点示图中的方向键,可以移动到下一个方格的位置,现在我们要在每个方格里放一种动物,而且我们还要把这个迷宫的图片去掉,注意:我们用Java编写游戏,不是用VB编写游戏,我们这个游戏中没有任何图片,这是一个文字游戏。

方格编号动物名称可以移动的方向1 小熊猫1号向东走可到2号方格2 大象2号向东=7;向西=1;向南=33 鳄鱼东南西北4 大熊猫西南北5 梅花鹿南第一个送信的房子6 黑熊西北7 老虎东西8 狮子东9 花豹东西南10 骆驼东西南看到这么多的动物,很容易让人联想到动物园里的动物吧!游戏要求走完所有的方格,看完所有的动物就算打完这个游戏了!第二部分:编写动物迷宫游戏游戏变量(一共有三个全局变量):fangge设为整数值,代表以上表格中的方格编号还有四个枚举量,为东西南北,在代码中用NORTH SOUTH EAST WEST 表示Direction设为字符串,代表东西南北四个方向Exits(3) 代表一个数组,初始化为0,如果移动到一个新的方格,则Exits(Direction)的值为新的方格编号,如果值为零,则表示不可以朝这个方向移动这个游戏的名称为Migong,出现在代码public class中。

第三部分:游戏代码import java.util.Scanner;public class Migong {public static void main(String[] args) {Scanner in=new Scanner(System.in);System.out.println("-------动物迷宫游戏--------");System.out.println("请按方向行走 (1.东 2.西 3.南 4.北)");int person=in.nextInt();Int fangge=1int[] exits;exits=new int[4];exits[0]=0;exits[1]=0;exits[2]=0;exits[3]=0;int i;i=person-1;boolean a=exits[i]==0;boolean b=exits[i]!=0;if (a){System.out.println("你不能往这个方向走");}else{fangge=exits[i];}switch(fangge){case 1:exits[0]=2;exits[1]=0;exits[2]=0;exits[3]=0;System.out.println("你看到的是小熊猫,可以向东走");break;case 2:exits[0]=7;exits[1]=1;exits[2]=3;exits[3]=0;System.out.println("你看到的是大象,可以向东、向南、向西走"); break;case 3:exits[0]=4;exits[1]=8;exits[2]=2;exits[3]=10;System.out.println("你看到的是鳄鱼,可以向东、向西、向南、向北走");break;case 4:exits[0]=0;exits[1]=3;exits[2]=6;exits[3]=5;System.out.println("你看到的是大熊猫,可以向西、向南、向北走");break;case 5:exits[0]=0;exits[1]=0;exits[2]=4;exits[3]=0;System.out.println("你看到的是梅花鹿,可以向南走");break;case 6:exits[0]=0;exits[1]=9;exits[2]=0;exits[3]=4;System.out.println("你看到的是黑熊,可以向西、向北走");break;}}}注:本游戏代码只编写了前6个方格,为了简单一些,更容易看懂。

基于Java的动物_换位游戏软件设_计

基于Java的动物_换位游戏软件设_计

毕业论文声明本人郑重声明:1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。

除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。

对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。

本人完全意识到本声明的法律结果由本人承担。

2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。

本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。

3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。

4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。

论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。

论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。

对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。

学位论文作者(签名):年月关于毕业论文使用授权的声明本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。

本人完全了解大学有关保存,使用毕业论文的规定。

同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。

本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。

如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。

本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。

本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。

java课程设计实验报告样例

java课程设计实验报告样例

java课程设计实验报告样例分数_______嘉应学院计算机学院实验报告课程名称:面向对象程序设计课程设计(Java)实验名称:”动物换位”程序设计指导教师:肖振球实验地点:_居家学习_实验时间:2020.03.17提交时间:2020.03.17班级:_计算机1807_姓名:_方强_学号:181110325_一、实验目的和要求掌握动物换位游戏的基本操作。

二、实验环境、内容和方法实验环境:eclipse。

补充实验内容:设计GUI界面的动物换位游戏,游戏结果是让左、右两组动物交换位置。

具体要求如下①在水平排列的7个位置上左、右各有3个类型相同的动物,中间的位置上没有动物,左边动物将其右侧视为自己的前进方向,右边动物将其左侧视为自己的前进方向。

②单击一个动物,如果该动物的前方位置上没有动物,该动物就跳跃到该位置上,如果该动物的前方位置上有其他动物,但相隔一位的位置上没有其他动物,该动物就越过自己前面的动物跳跃至该隔位上,其他情形下该动物不能跳跃(跳跃时不能越过两个位置)。

③左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。

④单击“撤销”按钮撤销上一次移动的动物,单击“重新开始”按钮可重新开始游戏。

程序运行的参考效果图如图1.1所示。

方法:按照MVC-ModelViewControl(模型,视图,控制器)的设计思想展开程序的设计和代码的编写。

数据模型部分相当于MVC中的Model角色,视图设计部分给出的界面部分相当于MVC中的View,视图设计部分给出的事件监视器相当于MVC中的Control。

三、实验过程描述1.数据模型:根据系统设计要求在数据模型部分编写了以下类Animal类:封装了左、右动物共同的属性和行为LeftAnimal类:Animal的子类,封装了左边动物的独特行为RightAnimal类:Animal的子类,封装了右边动物的独特行为Point类:刻画动物可以到达的位置。

ViewForAnimal类:封装制作动物视图的方法。

Java期中课程设计报告-贪食蛇

Java期中课程设计报告-贪食蛇

Java期中课程设计报告题目:贪食蛇游戏程序姓名:学号:院系:专业:年级:贪吃蛇游戏程序设计一、基本内容描述运用java技术开发出贪吃蛇游戏,这个程序是用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。

移动时必须从蛇头开始,也就是蛇尾不能改作蛇头。

当游戏者按了方向键后,蛇头朝着指定的方向移动,一步移动一节身体。

图形的实现是从蛇头的新位置开始画出蛇。

用户可以用上下左右键控制蛇头的方向,用空格键暂停或继续,非常简单!可以实现如下功能:1.贪吃蛇游戏是大家很常见的小游戏,在生活工作之余大家可以玩它,已达到放松各种压力的目的。

2.游戏可以进行升级,也就是增加吃食物的难度,以便使大家更有挑战性,不觉得太无趣。

3.游戏界面大小可以任意指定,数据从文件读入。

4.利用swing实现良好的GUI界面。

二、需求分析(一)系统功能要求:1.利用方向键来改变蛇的运行方向。

2.空格键暂停或继续游戏,并在随机的地方产生食物。

3.吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

(二)系统设计思路:1.贪吃蛇是很经典的格子游戏。

所谓格子游戏就是在设计游戏时的主要思想是每个设对象都是由格子组成,游戏运行界面也是由格子组成。

格子思想决定了此类游戏在设计时的算法思想。

2.方向键控制一个方块的移动的方法,一个方块的移动是靠移动其坐标位置来实现的。

3.方向键控制是上下左右对一个方块的控制,用四个判断语句实现。

4.蛇的移动算法思想可以看成是第一个方块移动,第二个方块移到第一个方块的位置, 第三个方块移动到第二个方块的位置⋯⋯第N个方块移动到第N-1个方块的位置。

这样连续的移动就是蛇的移动了。

方向控制键控制了第一个方块的移动后,后面方块跟着移动 ,这样也实现了方向键控制对长蛇的移动。

5.食物的随机产生的方法食物的随机产生需要一个随机种子函数然后利用系统时间做为随机种子。

6.蛇的身体变长的方法当然要当蛇吃到食物时才能使身体变长。

基于Java的动物换位游戏软件课程设计报告

基于Java的动物换位游戏软件课程设计报告

课程设计任务书成绩评定表目录1 课设软件主要功能12 类总体设计22.1 类组合关系图22.2 主类22.3 其他类23 类详细设计33.1 CHANGEANIMALWINDOW类33.2 ANIMAL类53.3 POINT类73.4 STONE类83.5 HANDLEMOUSE类93.6 AUTOMOVEANIMAL类104 关键类成员函数流程图与代码135 软件运行结果35结论37参考文献37动物换位系统的设计1 课设软件主要功能程序分为不同的级别,左右各有动物,中间石头没有动物,将左右动物交换,不可后退。

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

不能持续玩的可以点自动演示,将自动完成游戏,可以帮助游戏者更好的了解系统的主体功能。

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

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

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

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

动物换位课程设计报告

动物换位课程设计报告

动物换位课程设计报告一、课程目标知识目标:1. 学生能理解并描述动物的生活习性、生存环境及相互关系。

2. 学生能掌握至少三种动物换位思考的方法,并运用这些方法分析动物行为。

3. 学生能结合本节课内容,举例说明动物在不同环境下的适应策略。

技能目标:1. 培养学生观察、分析、解决问题的能力,通过动物换位思考,提高创新思维能力。

2. 培养学生合作交流的能力,能在小组讨论中分享观点,倾听他人意见。

情感态度价值观目标:1. 培养学生对动物生命的尊重和关爱,激发保护动物、保护生态环境的意识。

2. 培养学生勇于尝试、积极探索的精神,激发学生对生物学研究的兴趣。

3. 通过动物换位思考,引导学生树立正确的人生观和价值观,认识到人与自然和谐共生的意义。

课程性质:本课程以生物学为基础,结合学生实际生活,以提高学生的生物素养为核心。

学生特点:六年级学生具有较强的观察力、思维活跃,对动物世界充满好奇,喜欢探索未知。

教学要求:注重理论与实践相结合,引导学生通过观察、思考、实践,培养生物学科素养。

在教学过程中,关注学生的个体差异,激发学生的学习兴趣,提高学生的综合素质。

将课程目标分解为具体的学习成果,以便在教学设计和评估中达到预期效果。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 动物生活习性及生存环境:介绍动物在不同环境下的适应策略,分析生物与环境的关系。

2. 动物相互关系:探讨动物之间的合作、竞争、捕食等关系,以及这些关系对动物生存的影响。

3. 动物换位思考方法:教授至少三种动物换位思考的方法,如观察法、模拟法、实验法等。

4. 教学案例:结合教材中的实例,引导学生运用动物换位思考方法分析动物行为。

教学内容安排与进度:第一课时:导入新课,介绍动物生活习性及生存环境,引导学生关注生物与环境的关系。

第二课时:讲解动物相互关系,举例说明各种关系对动物生存的影响。

第三课时:教授动物换位思考方法,组织学生进行小组讨论,分享学习心得。

游戏

游戏

详细设计和调试结果1.主函数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();}}2.animalimport javax.swing.*;import java.awt.*;import java.io.*;public class Animal extends JPanel{Point point;boolean isLeft;Toolkit tool;File leftImage,rightImage;Animal(){tool=getToolkit();}public void setLeftImage(File f){leftImage=f;}public void setRightImage(File f){rightImage=f;}public void setIsLeft(boolean boo){isLeft=boo;}public boolean getIsLeft(){return isLeft;}public void setAtPoint(Point p){point=p;}public Point getAtPoint(){return point;}public void paintComponent(Graphics g){super.paintComponent(g);int w=getBounds().width;int h=getBounds().height;try{if(isLeft==true){Image image=tool.getImage(leftImage.toURI().toURL());g.drawImage(image,0,0,w,h,this);}else{Image image=tool.getImage(rightImage.toURI().toURL());g.drawImage(image,0,0,w,h,this);}}catch(Exception exp){}}}3. AutoMoveAnimalimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.ArrayList;public class AutoMoveAnimal extends JDialog implements ActionListener{ Point [] point;ArrayList<Integer> step;JButton bStart,bStop,bContinue,bClose;javax.swing.Timer time;int i,M,middle,startPoint,m=0;int [] a;AutoMoveAnimal(){step=new ArrayList<Integer>();setModal(true);setTitle("演示动物换位");time=new javax.swing.Timer(1000,this);time.setInitialDelay(10);bStart=new JButton("演示");bStop=new JButton("暂停");bStop.setEnabled(false);bContinue=new JButton("继续");bContinue.setEnabled(false);bClose=new JButton("关闭");bStart.addActionListener(this);bStop.addActionListener(this);bContinue.addActionListener(this);bClose.addActionListener(this);setLayout(new FlowLayout());add(bStart);add(bStop);add(bContinue);add(bClose);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){time.stop();i=startPoint;m=0;bStart.setEnabled(true);bStop.setEnabled(false);bContinue.setEnabled(false);setVisible(false);}});}public void setPoint(Point [] point){this.point=point;}public void actionPerformed(ActionEvent e) {if(e.getSource()==time){int start,end;if(m<=step.size()-2){start=step.get(m);end=step.get(m+1);autoMoveAnimal(start,end);}m=m+2;if(m>step.size()-1){time.stop();m=0;bStart.setEnabled(true);bStop.setEnabled(false);bContinue.setEnabled(false);setVisible(false);}}else if(e.getSource()==bStart){time.start();bStart.setEnabled(false);bStop.setEnabled(true);}else if(e.getSource()==bStop){time.stop();bContinue.setEnabled(true);}else if(e.getSource()==bContinue){time.restart();}else if(e.getSource()==bClose){time.stop();i=startPoint;m=0;bStart.setEnabled(true);bStop.setEnabled(false);bContinue.setEnabled(false);setVisible(false);}}private void autoMoveAnimal(int start,int end){Animal ani=point[start].getThisAnimal();int w=ani.getBounds().width;int h=ani.getBounds().height;ani.setLocation(point[end].getX()-w/2,point[end].getY()-h);ani.setAtPoint(point[end]);point[end].setThisAnimal(ani);point[end].setIsHaveAnimal(true);point[start].setIsHaveAnimal(false);}private int get(int i,int [] a){int c=-1;if(i>=0&&i<=a.length-1)c=a[i];elsec=-1;return c;}public void setStep(){a=new int[point.length];M=point.length-1;middle=(point.length)/2;startPoint=middle-1;i=startPoint;a[middle]=0;step=new ArrayList<Integer>();for(int k=0;k<=middle-1;k++)a[k]=1;for(int k=middle+1;k<a.length;k++)a[k]=2;while(true){if(get(i,a)==1){if(get(i+1,a)==0){if(get(i+2,a)==2||get(i+2,a)==-1){if(get(i+3,a)==2||get(i+3,a)==-1){if(i+2<=M){int temp=a[i+2];a[i+2]=a[i+1];a[i+1]=temp;step.add(i+2);step.add(i+1);}else{int temp=a[i+1];a[i+1]=a[i];a[i]=temp;step.add(i);step.add(i+1);}}else{int temp=a[i+1];a[i+1]=a[i];a[i]=temp;step.add(i);step.add(i+1);}}else{boolean ok=true;for(int k=Math.min(i+3,M);k<=M;k++)if(get(k,a)==2)ok=false;if(ok){int temp=a[i+1];a[i+1]=a[i];a[i]=temp;step.add(i);step.add(i+1);}}}else{if(get(i+2,a)==0){if(get(i+3,a)==2||get(i+3,a)==-1){int temp=a[i+2];a[i+2]=a[i];a[i]=temp;step.add(i);step.add(i+2);}else{boolean ok=true;for(int k=Math.min(i+4,M);k<=M;k++)if(get(k,a)==2)ok=false;if(ok){int temp=a[i+2];a[i+2]=a[i];a[i]=temp;step.add(i);step.add(i+2);}}}}}if(get(i,a)==2){if(get(i-1,a)==0){if(get(i-2,a)==1||get(i-2,a)==-1){if(get(i-3,a)==1||get(i-3,a)==-1){if(i-2>=0){int temp=a[i-1];a[i-1]=a[i-2];a[i-2]=temp;step.add(i-2);step.add(i-1);}else{int temp=a[i-1];a[i-1]=a[i];a[i]=temp;step.add(i);step.add(i-1);}}else{int temp=a[i-1];a[i-1]=a[i];a[i]=temp;step.add(i);step.add(i-1);}}else{boolean ok=true;for(int k=0;k<=i-2;k++)if(get(k,a)==1)ok=false;if(ok){int temp=a[i-1];a[i-1]=a[i];a[i]=temp;step.add(i);step.add(i-1);}}}else{if(get(i-2,a)==0){if(get(i-3,a)==1||get(i-3,a)==-1){int temp=a[i-2];a[i-2]=a[i];a[i]=temp;step.add(i);step.add(i-2);}else{boolean ok=true;for(int k=Math.max(i-4,0);k>=0;k--)if(get(k,a)==1)ok=false;if(ok){int temp=a[i-2];a[i-2]=a[i];a[i]=temp;step.add(i);step.add(i-2);}}}}}i++;if(i==M+1) i=0;if(isComplete()) break;}}private boolean isComplete(){boolean boo=true;int i=0;for(i=0;i<point.length/2;i++){if(get(i,a)==1||get(i,a)==0||get(i+point.length/2+1,a)==2||get(i+point.length/2+1,a)==0){ boo=false;break;}}return boo;}}界面效果图初级:中级:高级:。

  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.结论这此课程设计我们做的是“动物换位”游戏,主要是让左右两边相同数量的动物通过中间一个空的石头,左边的动物要全部跳到右边的石头上,右边的动物要全部跳到左边的石头上。

相关文档
最新文档