> # AnimalTransposition
>
> Java 课程设计:动物换位
> #### 小组计划:
>
> 第一、二天:完成所有课本代码,开发文档开始写,汇报 PPT 开始制作。 第三天:完成开发文档,完成代码调试,完成测试文档,开始编写使用文档。将资料整合,给 ppt 制作参考。 第四天:完成 ppt,完成程序发布,以及各个文档的检查、修改。测试代码、程序和使用文档一起打包。
>
> ### 小组分工:
>
> #### 题目:动物换位
>
> #### 课程题目:Java 课程设计
>
>
> #### 一、程序及源代码:(负责人:曾媛)
>
> 源代码:Animal 类、LeftAnimal 类、RightAnimal 类、point 类、ViewForAnimal 类(包含这部分的 MUL 图)
>
> #### 二、开发文档:(负责人:张雷婷)
>
> 1、需求文档 2、流程图
>
> #### 三、测试文档及测试代码(负责人:曾媛)
>
> a、测试文档:步骤、测试截图 b、测试代码:APPTest 类
>
> #### 四、视图设计部分(代码):(负责人:王承阔)
>
> 视图设计代码:AnimalView 类、GamePanel 类、HandleRedo 类、HandleReStart 类(包含 MUL 图)
>
> #### 五、GUI 程序(代码):(负责人:王承阔)
>
> 代码:AppWindow 类 //用户图形界面
>
> #### 六、程序发布:(负责人:辛红霖)
>
> 代码的整合、调试,及程序的发布。
>
> #### 七、使用文档的编写:(负责人:辛红霖)
>
> #### 八、答辩 PPT(负责人:殷玲玲)
>
> (包括 PPT 的制作与代表小组进行答辩)
## 一、程序及源代码:
### 程序源代码:
### **1、数据模型(data)部分:**
#### `Animal.java`
```java
package ch1.data;
public abstract class Animal {
String name ;
Point [] allCanAtPoint; //全部点位置
Point point; //动物当前所在的点位置
ViewForAnimal animalView; //动物的外观视图
public void setAtPoint(Point p) {
if(p!=null){
point = p;
point.setIsHaveAnimal(true);
point.setAtPointAnimal(this);
}
}
public Point getAtPoint() {
return point;
}
public void setAllCanAtPoint(Point [] point){
allCanAtPoint = point;
}
public void setAnimalView(ViewForAnimal animalView) {
this.animalView = animalView;
animalView.setAnimal(this);
}
public ViewForAnimal getAnimalView() {
return animalView;
}
public void setName(String s) {
name = s;
}
public String getName() {
return name;
}
public abstract boolean move();
}
```
#### LeftAnimal.java
```java
package ch1.data;
public class LeftAnimal extends Animal{
public boolean move(){
int k = -1;
boolean successMove = false;
Point p = getAtPoint();
for(int i=0;i<allCanAtPoint.length;i++){
if(allCanAtPoint[i].equals(p)){
k = i; //找到动物当前所处的位置:allCanAtPoint[k]
break;
}
}
if(k==allCanAtPoint.length-1){//已经在最右面的点位置
return false;
}
if(allCanAtPoint[k+1].isHaveAnimal()==false) { //前面位置上没有动物
this.setAtPoint(allCanAtPoint[k+1]);
successMove = true;
p.setAtPointAnimal(null);
return successMove ;
}
if((k+1)==allCanAtPoint.length-1){ //前面位置上是已经到达终点的动物
return false;
}
if(allCanAtPoint[k+2].isHaveAnimal()==false) {//前方隔位上没有动物
this.setAtPoint(allCanAtPoint[k+2]);
successMove = true;
p.setAtPointAnimal(null);
return successMove ;
}
return successMove ;
}
}
```
#### RightAnimal.java
```java
package ch1.data;
public class RightAnimal extends Animal{
public boolean move(){
int k = -1;
boolean successMove = false;
Point p = getAtPoint();
for(int i=0;i<allCanAtPoint.length;i++){
if(allCanAtPoint[i].equals(p)){
k = i;
break;
}
}
if(k==0){ //已经在最左面的点位置
return false;
}
if(allCanAtPoint[k-1].isHaveAnimal()==false) {//前面位置上没有动物
this.setAtPoint(allCanAtPoint[k-1]);//动物到达allCanAtPoint[k-1]点
successMove = true;
p.setAtPointAnimal(null); //p点设置为无动物
return successMove ;
}
if((k-1)==0){ //前面位置上是已经到达终点的动物
return false;
}
if(allCanAtPoint[k-2].isHaveAnimal()==false) {//前方隔位上没有动物
this.setAtPoint(allCanAtPoint[k-2]); //动物到达allCanAtPoint[k-2]点
successMove = true;
p.setAtPointAnimal(null); //p点设置为无动物
return successMove ;
}
return successMove ;
}
}
```
#### Point.java
```java
package ch1.data;
public class Point{
int x,y;
boolean haveAnimal;
Animal animal=null; //在该点位置上的动物
public void setX(int x){
this.x=x;
}
public void setY(int y){
this.y=y;
}
public boolean isHaveAnimal(){
return haveAnimal;
}
public void setIsHaveAnimal(boolean boo){
haveAnimal=boo;
}
public int getX(){
return x;
}
public int getY(){
return y;
}
public void setAtPointAnimal(Animal animal){
this.animal=animal;
if(animal!=null) {
haveAnimal = true;
}
else {
haveAnimal = false;
}
}
public Animal getAtPointAnimal(){
return animal;
}
}
```
#### ViewForAnimal.java
```java
package ch1.data;
import javax.swing.JPanel;
public abstract class ViewForAnimal extends JPanel {
public abstract void setAnimal(Animal animal);
public abstract void setImage(String name);
public abstract Animal getAnimal();
public abstract void setAnimalViewLocation(int x,int y);
public abstract void setAnimalViewSize(int w,int h);
}
```
### **2、测试(test)部分:**
#### AppTest.java
```java
package ch1.test;
import ch1.data.*;
public class AppTest {
public static void main(String [] args) {
Point [] point = new Point[7];
for(int i=0;i<point.length;i++) {
point[i] = new Point();
point[i].setX(i);
point[i].setY(10);
}
Animal [] left = new Animal[3];
Animal [] right = new Animal[3];
for(int i =0;i<left.length;i++ ){
left[i] = new LeftAnimal();
left[i].setName("猫"+i);
left[i].setAtPoint(point[i]);
left[i].setAllCanAtPoint(point);
}
for(int i =0;i<right.length;i++ ){
right[i] = new RightAnimal();
right[i].setName("狗"+i);
right[i].setAtPoint(point[4+i]);
right[i].setAllCanAtPoint(point);
}
input(point);
if(right[0].move())
input(point);
if(left[2].move())
input(point);
if(left[1].move())
input(point);
if(right[0].move())
input(point);
if(right[1].move())
input(point);
if(right[2].move())
input(point);
if(left[2].move())
input(point);
if(left[1].move())
input(point);
if(left[0].move())
input(point);
if(right[0].move())
input(point);
if(right[1].move())
input(point);
if(right[2].move())
input(point);
if(left[1].move())
input(point);
if(left[0].move())
input(point);
if(right[2].move())
基于Java实现动物换位游戏【100012959】
版权申诉
139 浏览量
2023-07-17
14:05:44
上传
评论
收藏 3.01MB ZIP 举报
神仙别闹
- 粉丝: 2671
- 资源: 7640
最新资源
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- 文件批量改名神器10.0一款简单易用的批量文件重命名工具(已注册PRO版本).rar
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈