Package route

Source Code of route.Route

package route;

import game_timer.GameTimer;
import game_timer.TimerNotify;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Map;

import _main.Game;

import logger.Logger;
import misc.carType;
import vehicles.OrdinaryCar;
import vehicles.RobberyCar;
import vehicles.Vehicle;
import cross.Cross;

/**
* Az utat reprezent�l� oszt�ly. Ir�ny�tottak, egyir�ny�ak, keresztez�d�st�l keresztez�d�sig tart.
* � felel�s a rajta halad� aut�k megfelel� mozgat�s��rt �s a rajta t�rt�nt esetleges �tk�z�s felismer�s��rt.
* A Map oszt�ly hozza l�tre �t.
*
*/
public class Route implements TimerNotify {

  private Map m;
  private Cross startCross;
  private Cross endCross;
  private int length;
  private ArrayList<Vehicle> vehicles = new ArrayList<Vehicle>();
 
  //FOR THE TEST
  private InputStreamReader converter = new InputStreamReader(System.in);
  private BufferedReader in = new BufferedReader(converter);
  //TEST SESSION END

/**
* Az �t konstrukora.
*/
  public Route(){
    Logger.get().addOrdinaryMessage("[Route.Constructor]: Called!");
    Logger.get().addOrdinaryMessage("[Route.Constructor]: registering to observer...");
    Logger.get().addMethodCall("\t", "GameTimer", "registObserver");
    GameTimer.getInstance().registObserver(this);
    Logger.get().addMethodReturn("\t", "GameTimer", "registObserver");
  }
 
  /**
   * V�gign�zi, milyen aut�k vannak az �ton, �s a megfelel� m�don l�pteti �ket,
   * aut�k positionj�t, �s currentSpeedj�t �ll�tjuk.
   * K�zben megk�rdezi, hogy a k�t aut� utol�rte-e egym�st,
   * �s ennek tudat�ban h�vja meg a megfelel� met�dusokat.
   *
   * A k�rd�sn�l csak "i" vagy "n" bemenetet fogad el, m�s bemenet eset�n �jb�l k�rdez.
   */
  public void moveCars() {
    try {
      Logger.get().addMethodCall("", "Route", "moveCars");
     
      vehicles.get(0).getPosition();
      vehicles.get(1).getPosition();
     
      vehicles.get(0).getCurrentSpeed();
      int firstCurSpeed = vehicles.get(1).getCurrentSpeed();
     
      Logger.get().addOrdinaryMessage("-------Szeretne, hogy a ket auto utolerje egymast? (i/n)");
      //goForward: tovabb mehet-e vagy sem; isGainUpon: utolerte-e vagy sem;
      boolean goForward = false;
      boolean isGainUpon = false;
      while(!goForward){
          String input = in.readLine();
         
          if(input.equals("i")){
            isGainUpon = true;
            goForward = true;
          } else if(input.equals("n")){
            isGainUpon = false;
            goForward = true;
          } else {
            System.out.println("Ez nem opcio...");
          }
         
      }
      if(isGainUpon){
        Logger.get().addOrdinaryMessage("[Route.moveCars()] [A gyorsabb auto utolerte a lasabbat! Uj sebesseg beallitasa!]");
        vehicles.get(0).setCurrentSpeed(firstCurSpeed);
      } else {
        Logger.get().addOrdinaryMessage("[Route.moveCars()] [Senki nem ert senkit utol, leptetjuk oket a sebesseguknek megfeleloen!]");
      }
     
      Logger.get().addOrdinaryMessage("[Route.moveCars()] [v1 leptetese]");
      vehicles.get(0).setPosition(0);
      Logger.get().addOrdinaryMessage("[Route.moveCars()] [v2 leptetese]");
      vehicles.get(1).setPosition(0);
     
    } catch (IOException e) {
      e.printStackTrace();
    }   
   
    Logger.get().addMethodReturn("", "Route", "moveCars");
  }

  /**
   * v�gign�zi az �ton tal�lhat� Vehicle-�ket,
   * hogy �tk�ztek-e, mivel � l�pteti �ket.
   *
   * A program megk�rdezi a felhaszn�l�t�l, hogy szeretn�-e, hogy legyen �tk�z�s, �s
   * ezalapj�n alakul majd ez a teszteset.
   *
   * A k�rd�sn�l csak "i" vagy "n" bemenetet fogad el, m�s bemenet eset�n �jb�l k�rdez.
   */
  public void collisionDetect() {
    try {
      boolean goForward = false; //for testing...
      boolean isCollisionDetected = true;//
      RobberyCar rcar;//storing the robbery car...
      Logger.get().addMethodCall("", "Route", "collisionDetect");
      //getting the robbery car's position
      Logger.get().addOrdinaryMessage("[Route.collisionDetect()] Lekerjuk a rablo poziciojat...");
      for(Vehicle v : vehicles){
        if(v.getCarType() == carType.Robbery){
          rcar = (RobberyCar) v;
          rcar.getPosition();
        }
      }
      Logger.get().addOrdinaryMessage("[Route.collisionDetect()] Egy iteracioban lekerjuk az uton levo osszes tobbi kocsi poziciojat...");
      Logger.get().addOrdinaryMessage("Szeretned, h legyen utkozes?(i/n)");
     
      while(!goForward){
        String input;
          input = in.readLine();
       
        if(input.equals("i")){
          isCollisionDetected = true;
          goForward = true;
          Logger.get().addOrdinaryMessage("[A valasztott opcio: IGEN, van utkozes!]");
        } else if(input.equals("n")){
          isCollisionDetected = false;
          goForward = true;
          Logger.get().addOrdinaryMessage("[A valasztott opcio: NEM, nincs utkozes!]");
        } else {
          System.out.println("Ez nem opcio...");
        }
       
      }
      if(isCollisionDetected){
        Game.getInstance().finishGame();
      } else {
        Logger.get().addOrdinaryMessage("[Ha nincs utkozes, akkor leptetjuk az autokat stb... ezt ezen a szekvencian mar nem reszleteztuk!]");
      }
     
      Logger.get().addMethodReturn("", "Route", "collisionDetect");
    } catch (IOException e) {
      System.out.println("IOException van geco... :(");     
    }
  }

  /**
   * a Cross ezt h�vja meg, ha egy aut�t beh�v a keresztez�d�sbe: leszedi az �tr�l az aut�t, majd visszat�r a leszedett aut� �rt�k�vel
   */
  public Vehicle getAndRemoveLastCar() {
    Logger.get().addOrdinaryMessage("[Route.getAndRemoveLastCar]: called!");
    Logger.get().addOrdinaryMessage("[Route.getAndRemoveLastCar]: Az atlekesre varakozo auto atadasa a keresztezodesnek!");
    return vehicles.get(0);
  }

  /**
   * Aut�t tesz az �tra
   * @param v aut�
   */
  public void addVehicle(Vehicle v) {
    //add the vehicle to the arraylist
    vehicles.add(v);
   
    //and the logging..
    Logger.get().addMethodCall("", "Route", "addVehicle");
    v.setPosition(0);
    v.setRoute(this);
    v.setCross(endCross);
    Logger.get().addMethodReturn("", "Route", "addVehicle");
  }

  /**
   * onTick: a GameTimer megh�vja a megfelel� f�ggv�nyeket adott id�k�z�nk�nt
   */
  public void onTick() {
    Logger.get().addOrdinaryMessage("[Route.onTick]: Called!");
  }

  /**
   * Az �thoz adhat� meg olyan keresztez�d�s, amely az �t elej�n tal�lhat�
   * @param c keresztez�d�s.
   */
  public void addStartCross(Cross c) {
    Logger.get().addOrdinaryMessage("[Route.addStartCross]: called!");
    c.addOutRoutes(this);
  }

  /**
   * Az �thoz adhat� meg olyan keresztez�d�s, amely az �t v�g�n tal�lhat�
   * @param c keresztez�d�s.
   */
  public void addEndCross(Cross c) {
    Logger.get().addOrdinaryMessage("[Route.addEndCross]: called!");
    c.addInRoutes(this);
  }
 
  /**
   * Visszaadja az �ton tal�lhat� els� aut�t
   * @return aut�
   */
  public Vehicle test_getACar(){
    return vehicles.get(0);
  }

}
TOP

Related Classes of route.Route

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.