斯坦福 IT

gongbao

宇宙最最知名园友
最大赞力
0.00
当前赞力
100.00%
SpaceShip.java, SpaceGame.java里面
 

附件

  • Screen Shot 2018-04-12 at 22.47.18.png
    Screen Shot 2018-04-12 at 22.47.18.png
    180.2 KB · 查看: 12
  • Screen Shot 2018-04-12 at 22.47.16.png
    Screen Shot 2018-04-12 at 22.47.16.png
    192.6 KB · 查看: 12
  • Screen Shot 2018-04-12 at 22.47.10.png
    Screen Shot 2018-04-12 at 22.47.10.png
    190.2 KB · 查看: 11
  • Screen Shot 2018-04-12 at 22.47.05.png
    Screen Shot 2018-04-12 at 22.47.05.png
    167.3 KB · 查看: 11
  • Screen Shot 2018-04-12 at 22.47.00.png
    Screen Shot 2018-04-12 at 22.47.00.png
    174.6 KB · 查看: 11
  • Screen Shot 2018-04-12 at 22.46.42.png
    Screen Shot 2018-04-12 at 22.46.42.png
    197.5 KB · 查看: 10
  • Screen Shot 2018-04-12 at 22.47.18.png
    Screen Shot 2018-04-12 at 22.47.18.png
    180.2 KB · 查看: 12

gongbao

宇宙最最知名园友
最大赞力
0.00
当前赞力
100.00%
代码:
Spaceship player = FileIO.loadSpaceship("player.txt");
        //Spaceship player=FileIO.loadSpaceship("enemy.txt");
        setPlayer(player);
        ArrayList<Planet> planets = FileIO.loadPlanets("sol.txt");

        Spaceship.setPlanets(planets);
问题就在这里了,我想你应该实例化两个spaceship,而不是直接用Spaceship.xxx方法,因为你的spaceship class没有用singleton那种xxxclass.getInstance(),所以你不可以直接引用Spaceship.java里面的方法
 

月盈亏

月月盈
最大赞力
0.00
当前赞力
100.00%
代码:
Spaceship player = FileIO.loadSpaceship("player.txt");
        //Spaceship player=FileIO.loadSpaceship("enemy.txt");
        setPlayer(player);
        ArrayList<Planet> planets = FileIO.loadPlanets("sol.txt");

        Spaceship.setPlanets(planets);
问题就在这里了,我想你应该实例化两个spaceship,而不是直接用Spaceship.xxx方法,因为你的spaceship class没有用singleton那种xxxclass.getInstance(),所以你不可以直接引用Spaceship.java里面的方法
哇塞,你太厉害,我慢慢看。谢谢
 
最大赞力
0.00
当前赞力
100.00%
public class Planet {

public Planet(String name) {
super();
this.name = name;
}

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

public class SpaceShip {

private String shipName;
private Planet currentPlannt;

public SpaceShip(String shipName) {
super();
this.shipName = shipName;
}
public String getShipName() {
return shipName;
}
public Planet getCurrentPlannt() {
return currentPlannt;
}
public void setShipName(String shipName) {
this.shipName = shipName;
}
public void setCurrentPlannt(Planet currentPlannt) {
this.currentPlannt = currentPlannt;
}

public void moveTo(Planet p){
System.out.println("SpaceShip "+this.getShipName()+" move from "+(this.currentPlannt==null?"Unknown space ":this.currentPlannt.getName())+" To "+p.getName());
this.setCurrentPlannt(p);
}
}

public class SpaceGame {

List<Planet> planets = new ArrayList<Planet>();
SpaceShip shipA = new SpaceShip("A");
SpaceShip shipB = new SpaceShip("B");

public static void main(String[] args){

SpaceGame game = new SpaceGame();
Planet p1 = new Planet("Earth");
Planet p2 = new Planet("Mars");
Planet p3 = new Planet("Jupitor");
Planet p4 = new Planet("Venus");
Planet p5 = new Planet("Saturn");
game.planets.add(p1);
game.planets.add(p2);
game.planets.add(p3);
game.planets.add(p4);
game.planets.add(p5);
game.shipA.moveTo(game.findPlanetByName("Earth"));
game.shipB.moveTo(game.findPlanetByName("Saturn"));
game.shipA.moveTo(game.findPlanetByName("Mars"));
game.shipB.moveTo(game.findPlanetByName("Jupitor"));


}

public List<Planet> getPlanets() {
return planets;
}

public SpaceShip getShipA() {
return shipA;
}

public SpaceShip getShipB() {
return shipB;
}

public void setPlanets(List<Planet> plannets) {
this.planets = plannets;
}

public Planet findPlanetByName(String name){
for (Planet p: planets){
if (p.getName().equals(name))
return p;
}
return null;
}

public void addPlanet(Planet p){
this.planets.add(p);
}

public void setShipA(SpaceShip shipA) {
this.shipA = shipA;
}

public void setShipB(SpaceShip shipB) {
this.shipB = shipB;
}



}
 

月盈亏

月月盈
最大赞力
0.00
当前赞力
100.00%
public class Planet {

public Planet(String name) {
super();
this.name = name;
}

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

public class SpaceShip {

private String shipName;
private Planet currentPlannt;

public SpaceShip(String shipName) {
super();
this.shipName = shipName;
}
public String getShipName() {
return shipName;
}
public Planet getCurrentPlannt() {
return currentPlannt;
}
public void setShipName(String shipName) {
this.shipName = shipName;
}
public void setCurrentPlannt(Planet currentPlannt) {
this.currentPlannt = currentPlannt;
}

public void moveTo(Planet p){
System.out.println("SpaceShip "+this.getShipName()+" move from "+(this.currentPlannt==null?"Unknown space ":this.currentPlannt.getName())+" To "+p.getName());
this.setCurrentPlannt(p);
}
}

public class SpaceGame {

List<Planet> planets = new ArrayList<Planet>();
SpaceShip shipA = new SpaceShip("A");
SpaceShip shipB = new SpaceShip("B");

public static void main(String[] args){

SpaceGame game = new SpaceGame();
Planet p1 = new Planet("Earth");
Planet p2 = new Planet("Mars");
Planet p3 = new Planet("Jupitor");
Planet p4 = new Planet("Venus");
Planet p5 = new Planet("Saturn");
game.planets.add(p1);
game.planets.add(p2);
game.planets.add(p3);
game.planets.add(p4);
game.planets.add(p5);
game.shipA.moveTo(game.findPlanetByName("Earth"));
game.shipB.moveTo(game.findPlanetByName("Saturn"));
game.shipA.moveTo(game.findPlanetByName("Mars"));
game.shipB.moveTo(game.findPlanetByName("Jupitor"));


}

public List<Planet> getPlanets() {
return planets;
}

public SpaceShip getShipA() {
return shipA;
}

public SpaceShip getShipB() {
return shipB;
}

public void setPlanets(List<Planet> plannets) {
this.planets = plannets;
}

public Planet findPlanetByName(String name){
for (Planet p: planets){
if (p.getName().equals(name))
return p;
}
return null;
}

public void addPlanet(Planet p){
this.planets.add(p);
}

public void setShipA(SpaceShip shipA) {
this.shipA = shipA;
}

public void setShipB(SpaceShip shipB) {
this.shipB = shipB;
}



}
妈呀,太强了,我得慢慢看。谢谢
 

月盈亏

月月盈
最大赞力
0.00
当前赞力
100.00%
运行结果差不多这样:
SpaceShip A move from Unknown space To Earth
SpaceShip B move from Unknown space To Saturn
SpaceShip A move from Earth To Mars
SpaceShip B move from Saturn To Jupitor
就要这个结果,太好了,我回家慢慢看。太感谢了
 

月盈亏

月月盈
最大赞力
0.00
当前赞力
100.00%
,几点小建议:
1) 变量名要规范,要遵循Naming Conventions, 我看到你有变量名叫Name,这个在后面有依赖注入的时候,是要出错的;
2)给属性更有意义的名字,我看到你很多属性都叫name,这样程序复杂了,你自己都搞不清楚了
3) 程序里没有注释,自己就很容易混乱,建议关键代码行加注释
一路飙车回来,边开边看,发现了关键问题。
game.shipB.moveTo(game.findPlanetByName("Saturn")

我不知道可以写成shipB.moveTo,我在game class里这样写的
Spaceship s = new Spaceship();
s.moveTo("Saturn" );

我以为只有构造函数里的attribute可以跟着实例走,(currenposition不在spaceship的构造函数里)
 
最后编辑: 2020-03-12

月盈亏

月月盈
最大赞力
0.00
当前赞力
100.00%
,几点小建议:
1) 变量名要规范,要遵循Naming Conventions, 我看到你有变量名叫Name,这个在后面有依赖注入的时候,是要出错的;
2)给属性更有意义的名字,我看到你很多属性都叫name,这样程序复杂了,你自己都搞不清楚了
3) 程序里没有注释,自己就很容易混乱,建议关键代码行加注释

太感谢你了,能亲你不?:wdb17::wdb17:

就是shipA.moveTo() 的问题。
我全部都是用spaceship.moveTo(). 所以currePosition没有和A,B联系起来。
 
最后编辑: 2020-03-12

Similar threads

家园推荐黄页

家园币系统数据

家园币池子报价
家园币最新成交价
家园币总发行量
加元现金总量
家园币总成交量
家园币总成交价值

池子家园币总量
池子加元现金总量
池子币总量
1池子币现价
池子家园币总手续费
池子加元总手续费
入池家园币年化收益率
入池加元年化收益率

微比特币最新报价
毫以太币最新报价
微比特币总量
毫以太币总量
家园币储备总净值
家园币比特币储备
家园币以太币储备
比特币的加元报价
以太币的加元报价
USDT的加元报价

交易币种/月度交易量
家园币
加元交易对(比特币等)
USDT交易对(比特币等)
顶部