示例#1
0
  public void update(HashSet<Key> keys) {
    for (Tire tire : tires) {
      tire.updateFriction();
    }
    for (Tire tire : tires) {
      tire.updateDrive(keys);
    }

    float lockAngle = 35 * Constants.DEGTORAD;
    float turnSpeedPerSec = 160 * Constants.DEGTORAD;
    float turnPerTimeStep = turnSpeedPerSec / 60.0f;
    float desiredAngle = 0;

    /** if player 1 */
    if (playerNum == 1) {
      if (keys.contains(Key.Left)) {
        desiredAngle = lockAngle;
      } else if (keys.contains(Key.Right)) {
        desiredAngle = -lockAngle;
      }
    }
    /** if player 2 */
    if (playerNum == 2) {
      if (keys.contains(Key.a)) {
        desiredAngle = lockAngle;
      } else if (keys.contains(Key.d)) {
        desiredAngle = -lockAngle;
      }
    }

    float angleNow = leftJoint.getJointAngle();
    float angleToTurn = desiredAngle - angleNow;
    angleToTurn = CarMath.clamp(angleToTurn, -turnPerTimeStep, turnPerTimeStep);
    float newAngle = angleNow + angleToTurn;

    leftJoint.setLimits(newAngle, newAngle);
    rightJoint.setLimits(newAngle, newAngle);

    if (fuel) {

      if (!carDone) {
        UseFuel(isAccelerating, fuelConsumption);

        if (onFuelPad) {

          addFuel();
        }
      }
    }

    // System.out.println("LapCounter : " +  lapCounter);

  }
示例#2
0
  private Tire createHankookTire() {
    Tire tire = new Tire();
    tire.setMaker("Hankook");
    Properties specProp = new Properties();
    specProp.setProperty("width", "205");
    specProp.setProperty("ratio", "65");
    specProp.setProperty("rim.diameter", "14");
    tire.setSpec(specProp);

    SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd");
    try {
      tire.setCreateDate(dataFormat.parse("2014-05-05"));
    } catch (Exception e) {
    }

    return tire;
  }
示例#3
0
 public void moveRight() {
   while (hasMove < moveH) {
     xPos++;
     hasMove++;
   }
   hasMove = 0;
   tire.deflated();
 }
示例#4
0
 public void moveLeft() {
   while (hasMove < moveH) {
     xPos--;
     hasMove++;
   }
   hasMove = 0;
   tire.deflated();
 }
  private Tire createKumhoTire() {
    Tire tire = new Tire();
    tire.setMaker("Kumho");

    Properties specProp = new Properties();
    specProp.setProperty("width", "185");
    specProp.setProperty("ratio", "75");
    specProp.setProperty("rim.diameter", "16");
    tire.setSpec(specProp);

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    try {
      tire.setCreatedDate(dateFormat.parse("2014-3-1"));
    } catch (Exception e) {
    }

    return tire;
  }
示例#6
0
文件: Car.java 项目: hbzk/Java48_Self
  @Override
  public String toString() {
    StringBuffer buf = new StringBuffer();
    buf.append("[자동차:" + model + ",\n");

    if (engine != null) {
      buf.append("   " + engine.toString() + "\n");
    }

    if (tires != null) {
      for (Tire t : tires) {
        buf.append("   " + t.toString() + ",\n");
      }
    }

    if (options != null) {
      for (Entry<String, Object> entry : options.entrySet()) {
        buf.append("   >" + entry.getKey() + ":" + entry.getValue().toString() + "\n");
      }
    }

    return buf.toString();
  }
示例#7
0
 public void forward(SpeedSensor speedSensor) {
   if (!tire.getIsVeryDeflated()) {
     if (speed < topSpeed) {
       if (speed < speedSensor.getSafeSpeed()) {
         speed = speed + accelerate;
       }
     }
   } else {
     if (speed < topSpeedWhenDeflated) {
       if (speed < speedSensor.getSafeSpeed()) {
         speed = speed + accelerate;
         if (tire.getPressure() < 10) speed = 0;
       }
     } else {
       while (speed > topSpeedWhenDeflated) {
         brake();
       }
     }
   }
   yPos = yPos - speed;
   if (tire.getPressure() >= 10) machine.heatUp();
   tire.deflated();
 }
示例#8
0
 @Bean
 public Tire Hankook() {
   tire.name = "한국타이어";
   return tire; // new Tire(10,"넥센타이어");
 }
示例#9
0
 @Bean
 public Tire Nexen() {
   tire.name = "nexen";
   return tire; // new Tire(10,"넥센타이어");
 }
示例#10
0
 public void testSupertypeStaticMethodsInjected() {
   assertTrue(Tire.hasBeenStaticMethodInjected());
 }
示例#11
0
 public int getTirePressure() {
   return tire.getPressure();
 }
示例#12
0
 public void brake() {
   if (speed > 0) speed = speed - 3 * accelerate;
   yPos = yPos - speed;
   machine.coolDown();
   tire.deflated();
 }
示例#13
0
  public Car(
      World world, int CarNum, int ColorNum, int playerNum, ScreenAssets assets, boolean testing) {
    this.playerNum = playerNum;
    this.carNum = CarNum;
    this.assets = assets;
    whichCar(CarNum, ColorNum);

    if (testing) {
      if (GameScreen.getMapNum() == 0) {
        lapCounter = 4;
      } else {
        lapCounter = 1;
      }
    }

    car_car = assets.manager.get(ScreenAssets.car_car_sound);
    car_wall1 = assets.manager.get(ScreenAssets.car_wall_sound1);
    car_wall2 = assets.manager.get(ScreenAssets.car_wall_sound2);
    car_wall3 = assets.manager.get(ScreenAssets.car_wall_sound3);
    car_Tire = assets.manager.get(ScreenAssets.car_tire_sound);
    car_lap_complete = assets.manager.get(ScreenAssets.lap_complete_sound);
    car_fueling = assets.manager.get(ScreenAssets.refueling_loop);
    car_going_on_fuel = assets.manager.get(ScreenAssets.getting_on_fuel_sound);

    fuelAreas = new Array<FuelAreaType>();
    currentCheckpoints = new Array<Integer>();

    tires = new Array<Tire>();

    BodyDef bodyDef = new BodyDef();
    bodyDef.type = BodyType.DynamicBody;
    bodyDef.position.set(InitialPosition);

    body = world.createBody(bodyDef);
    body.setAngularDamping(3);

    Vector2[] vertices = new Vector2[8];

    vertices[0] = new Vector2(0.75f, -2.5f);
    vertices[1] = new Vector2(1.5f, -2f);
    vertices[2] = new Vector2(1.5f, 2f);
    vertices[3] = new Vector2(0.75f, 2.5f);
    vertices[4] = new Vector2(-0.75f, 2.5f);
    vertices[5] = new Vector2(-1.5f, 2f);
    vertices[6] = new Vector2(-1.5f, -2f);
    vertices[7] = new Vector2(-0.75f, -2.5f);

    PolygonShape polygonShape = new PolygonShape();
    polygonShape.set(vertices);

    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = polygonShape;
    fixtureDef.isSensor = false;
    fixtureDef.density = density;

    fixtureDef.filter.categoryBits = Constants.CAR;
    fixtureDef.filter.maskBits =
        Constants.GROUND
            | Constants.TIREOBS
            | Constants.CAR
            | Constants.WALL
            | Constants.FUEL
            | Constants.FINISH
            | Constants.BRIDGE
            | Constants.METAL
            | Constants.ICE;

    Fixture fixture = body.createFixture(fixtureDef);
    fixture.setUserData(new CarType(carSprite, this));
    // body.applyTorque(1000, true);

    carSprite = new Sprite(new Texture(carLink));
    carSprite.setSize(3, 6);
    carSprite.setOrigin(carSprite.getWidth() / 2, carSprite.getHeight() / 2);
    body.setUserData(new CarType(carSprite, this));

    RevoluteJointDef jointDef = new RevoluteJointDef();
    jointDef.bodyA = body;
    jointDef.enableLimit = true;
    jointDef.lowerAngle = 0;
    jointDef.upperAngle = 0;
    jointDef.localAnchorB.setZero();

    float maxForwardSpeed = maxFSpeed;
    float maxBackwardSpeed = maxBSpeed;
    float backTireMaxDriveForce = backTireMDriveForce;
    float frontTireMaxDriveForce = frontTireMDriveForce;
    float backTireMaxLateralImpulse = backTireMLateralImpulse;
    float frontTireMaxLateralImpulse = frontTireMLateralImpulse;
    float breakingForcePourcentage = breakingFPourcentage;

    // Lower Left
    Tire tire = new Tire(world, playerNum);
    tire.setCharacteristics(
        maxForwardSpeed,
        maxBackwardSpeed,
        backTireMaxDriveForce,
        backTireMaxLateralImpulse,
        breakingForcePourcentage);
    jointDef.bodyB = tire.body;
    jointDef.localAnchorA.set(-1.125f, -1.5f);
    world.createJoint(jointDef);
    tires.add(tire);

    // Lower Right
    tire = new Tire(world, playerNum);
    tire.setCharacteristics(
        maxForwardSpeed,
        maxBackwardSpeed,
        backTireMaxDriveForce,
        backTireMaxLateralImpulse,
        breakingForcePourcentage);
    jointDef.bodyB = tire.body;
    jointDef.localAnchorA.set(1.125f, -1.5f);
    world.createJoint(jointDef);
    tires.add(tire);

    // Upper Left
    tire = new Tire(world, playerNum);
    tire.setCharacteristics(
        maxForwardSpeed,
        maxBackwardSpeed,
        frontTireMaxDriveForce,
        frontTireMaxLateralImpulse,
        breakingForcePourcentage);
    jointDef.bodyB = tire.body;
    jointDef.localAnchorA.set(-1.125f, 1.5f);
    leftJoint = (RevoluteJoint) world.createJoint(jointDef);
    tires.add(tire);

    // Upper Right
    tire = new Tire(world, playerNum);
    tire.setCharacteristics(
        maxForwardSpeed,
        maxBackwardSpeed,
        frontTireMaxDriveForce,
        frontTireMaxLateralImpulse,
        breakingForcePourcentage);
    jointDef.bodyB = tire.body;
    jointDef.localAnchorA.set(1.125f, 1.5f);
    rightJoint = (RevoluteJoint) world.createJoint(jointDef);
    tires.add(tire);
  } // end of car