恼人的Critter网格世界案例研究



我在APCS,我必须对小动物类进行扩展,使小动物随机选择网格中的任何参与者,然后移动到它的位置;从而"跟随"它。我的老师给了我们开始上课的名称和方法名称,这些名称不能更改。这是一个无法改变的跑步者。

import java.awt.Color;
import info.gridworld.actor.Rock;
import info.gridworld.actor.Actor;
import info.gridworld.actor.Flower;
import info.gridworld.actor.Bug;
import info.gridworld.grid.Location;
import info.gridworld.grid.BoundedGrid;
import info.gridworld.actor.ActorWorld;
public class AnnoyingCritterRunner
{
 public static void main(String[] args)
 {
  ActorWorld world = new ActorWorld(new BoundedGrid<Actor>(8,8));
  world.add(new Location(1, 1), new AnnoyingCritter());
  world.add(new Location(3, 1), new Rock());
  world.add(new Location(5, 2), new Actor());
  world.add(new Location(7, 6), new Flower());
  world.add(new Location(6, 6), new Actor());
  world.add(new Location(0, 5), new Actor());
  world.add(new Location(2, 6), new Bug(Color.GREEN));
  world.add(new Location(3, 5), new Actor());
  world.show();
 }
}

AnnoyingCritter类必须包含小动物找到"最好的朋友"one_answers"跟随它"所需的所有方法。

import info.gridworld.actor.Actor;
import info.gridworld.actor.Critter;
import info.gridworld.grid.Location;
import java.awt.Color;
import java.util.ArrayList;
public class AnnoyingCritter extends Critter
{
 /* instance variables will be needed
  * one for the bFF and one to set whether this Critter has a bFF (a boolean)
  */
  public AnnoyingCritter()
  {
    /* make an AnnoyingCritter constructor that sets a color and starts with the 
  * boolean variable above being "false"
  */
    Critter AnnoyingCritter = new Critter();
    AnnoyingCritter.setColor(Color.green);
  }
  private void pickBFF()
 {
    /* you'll need the grid, occupied locations, and some randomness to pick a friend
    */
 }
 public void processActors( ArrayList<Actor> actors)
 {
   /* this can be simple or complicated.  the idea is to pick a BFF if 
    * one is needed
    */
  if( !hasFriend )
  {
  }
//and it eats flowers and rocks
  for( Actor dude : actors )
  {
  }
 }
 public Location selectMoveLocation( ArrayList<Location> locs )
 {
  //you need a Grid
   //you need a location
  //you need to know where to go and if it's clear to move and then go there
 }
}

恼人的叫声必须移动到它随机选择的演员的位置,并吃掉挡住去路的花朵和岩石。它还需要一次移动到演员所在的位置一个空间。我不知道如何让这只烦人的小动物找到演员在哪里,然后随机找到一个。进口也不能改变。

请帮帮我,因为我已经被困了好几个小时了。

我很确定你必须使用getLocation()来找到演员的位置。或者。。。可以使用循环为列和行选择随机数,直到找到actor为止。哦,听起来是个好主意。我要试试。

Location类有一些强大的方法。试试这个:
int direction=getLocation().getDirectionToward(BFF.getLocation);
moveTo(getLocation().getAdjacentLocation(direction));

这应该会让你一次一个空格地进入BFF。

查找BFF:

Grid<Actor> grid=getGrid();
ArrayList<Location> locList=grid.getOccupiedLocations();
BFF=grid.get(locList.get(0));

只要确保locList(0)不是你自己的小动物。

也可以尝试阅读快速参考指南。

最新更新