private void restart() { currentTrajectory = new Trajectory(ColorGenerator.getInstance().next()); gameOver = false; ball.setPosition(new Point(INITIAL_BALL_POSITION)); currentTrajectory.addPoint(ball.getPosition()); synchronized (trajectoriesLock) { trajectories.add(currentTrajectory); } renderer.getTrajectoriesTableModel().addElement(currentTrajectory); }
public static void main(String[] args) { MobileFactory mf; Mobile m; mf = new MotorolaFactory(); m = mf.produceMobile(); m.call(); mf = new NokiaFactory(); m = mf.produceMobile(); m.call(); }
public static Item createEquipped(Mobile on, int graphic, int hue) { long serial = ObjectRegistry.get().registerItemSerial(); Item item = new Item(serial, graphic); item.setParent(on); item.setHue(hue); item.setLocation(new Point3D(0, 0, 0)); ObjectRegistry.get().registerObject(item); on.equipItem(item); return item; }
private void clearTrajectories() { synchronized (trajectoriesLock) { trajectories.clear(); } renderer.getTrajectoriesTableModel().removeAllElements(); currentTrajectory = new Trajectory(ColorGenerator.getInstance().current()); if (!gameOver) { currentTrajectory.addPoint(ball.getPosition()); synchronized (trajectoriesLock) { trajectories.add(currentTrajectory); } renderer.getTrajectoriesTableModel().addElement(currentTrajectory); } }
@Override public void update(GameContainer gc, int delta) throws SlickException { super.update(gc, delta); super.ai.action(this); // currentAnim = "walking"; }
@Override public boolean tick(Tickable ticking, int tickID) { tickStatus = Tickable.STATUS_MISC + 0; super.tick(ticking, tickID); tickStatus = Tickable.STATUS_MISC + 1; if (tickID != Tickable.TICKID_MOB) { tickStatus = Tickable.STATUS_NOT; return true; } if (!canFreelyBehaveNormal(ticking)) { tickStatus = Tickable.STATUS_NOT; return true; } final MOB mob = (MOB) ticking; // ridden things dont wander! if (ticking instanceof Rideable) if (((Rideable) ticking).numRiders() > 0) { tickStatus = Tickable.STATUS_NOT; return true; } tickStatus = Tickable.STATUS_MISC + 2; if (((mob.amFollowing() != null) && (mob.location() == mob.amFollowing().location())) || (!CMLib.flags().canTaste(mob))) { tickStatus = Tickable.STATUS_NOT; return true; } tickStatus = Tickable.STATUS_MISC + 3; final Room thisRoom = mob.location(); MOB victim = GoodGuardian.anyPeaceToMake(mob.location(), mob); GoodGuardian.keepPeace(mob, victim); victim = null; int dirCode = -1; tickStatus = Tickable.STATUS_MISC + 4; for (int d = Directions.NUM_DIRECTIONS() - 1; d >= 0; d--) { tickStatus = Tickable.STATUS_MISC + 5 + d; final Room room = thisRoom.getRoomInDir(d); final Exit exit = thisRoom.getExitInDir(d); if ((room != null) && (exit != null) && (okRoomForMe(mob, thisRoom, room, false))) { tickStatus = Tickable.STATUS_MISC + 20 + d; if (exit.isOpen()) { tickStatus = Tickable.STATUS_MISC + 40 + d; victim = GoodGuardian.anyPeaceToMake(room, mob); if (victim != null) { dirCode = d; break; } tickStatus = Tickable.STATUS_MISC + 60 + d; } tickStatus = Tickable.STATUS_MISC + 80 + d; } if (dirCode >= 0) break; tickStatus = Tickable.STATUS_MISC + 100 + d; } tickStatus = Tickable.STATUS_MISC + 120; if ((dirCode >= 0) && (!CMSecurity.isDisabled(CMSecurity.DisFlag.MOBILITY))) { tickStatus = Tickable.STATUS_MISC + 121; CMLib.tracking().walk(mob, dirCode, false, false); tickStatus = Tickable.STATUS_MISC + 122; GoodGuardian.keepPeace(mob, victim); tickStatus = Tickable.STATUS_MISC + 123; } tickStatus = Tickable.STATUS_NOT; return true; }
private void update() { if (renderer.shouldRestart()) { restart(); renderer.setSpeedX(0.0); renderer.setSpeedY(0.0); renderer.setMagnusForce(0.0); renderer.refreshInformationPanel(); renderer.resetRestartFlag(); renderer.stop(); } if (renderer.shouldClearTrajectories()) { clearTrajectories(); renderer.resetClearTrajectoriesFlag(); } if (renderer.hasStarted()) { if (!gameOver) { synchronized (ballLock) { Vector gravitationalForce = new Vector(0.0, -9.81 * ball.getMass()); Vector frictionForce = Vector.product(-dragCoefficient, ball.getSpeed()); Vector magnusForceTmp = Vector.product(MAGNUS_COEFFICIENT * ball.getFrequency(), ball.getSpeed()); Vector magnusForce = new Vector(-magnusForceTmp.y, magnusForceTmp.x); renderer.setSpeedX(ball.getSpeed().x); renderer.setSpeedY(ball.getSpeed().y); renderer.setMagnusForce(magnusForce.length()); renderer.refreshInformationPanel(); ball.applyForce(Vector.sum(Vector.sum(gravitationalForce, frictionForce), magnusForce)); ball.update(); if (ball.getPosition().x <= 0.0) { gameOver = true; } double dy = ball.getPosition().y - ball.getSize().y / 2 - GROUND_Y; if (dy <= 0.0) { double t = dy / ball.getSpeed().y; double dx = t * ball.getSpeed().x; Point newPosition = ball.getPosition(); newPosition.x -= dx; newPosition.y -= dy; ball.setPosition(newPosition); gameOver = true; } currentTrajectory.addPoint(ball.getPosition()); renderer.getTrajectoriesTableModel().refreshCell(trajectories.size() - 1, 1); renderer.getTrajectoriesTableModel().refreshCell(trajectories.size() - 1, 2); } } } else { double initialSpeedX = renderer.getInitialSpeed() * Math.cos(renderer.getInitialDirection()); double initialSpeedY = renderer.getInitialSpeed() * Math.sin(renderer.getInitialDirection()); dragCoefficient = renderer.getDragCoefficient(); synchronized (ballLock) { ball.setSpeed(new Vector(initialSpeedX, initialSpeedY)); ball.setFrequency(renderer.getFrequency()); } } }