Java Editor Facharbeit "Kreuzung"

I

Info999

Gast
Guten Tag,
ich brauche Hilfe bei meiner Facharbeit und suche jemanden, der sich ein bis zwei Abende Zeit nehmen würde, um mir dabei zu helfen.

Kurze Erläuterung zu meinem Thema:
Ich soll eine Verkehrskreuzung programmieren. In dieser sollen Autos, welche als Zahlen in einem NumberField, dargestellt werden, duch Zufall hinzugefügt werden. Die Ampeln sollen so schalten, dass bei großem Rückstau auf grün geschaltet wird. Das heißt wenn z.b. in einem NumberField "10" angezeigt wird, soll diese Ampel dann auf grün umschalten, damit dieser Stau beseitigt wird. Also soll die Kreuzung möglichst "leer" sein, was einfach nur bedeutet, dass wenig Autos warten müssen.

Da ich leider nicht so gut im programmieren bin und trotz vielen Nachforschungen im Internet nicht wirklich weiter komme, möchte ich mich an euch hier wenden und fragen, ob mir einer ein Programm schreiben kann oder mir wenigstens dabei helfen kann.. :)
Das Programm soll nicht so aufwenig sein, da ich dazu noch 8 Seiten schrifl. schreiben muss.
Also falls einer ein wenig Zeit übrig hat und mir helfen kann würde ich mich sehr freuen! ;)

Gruß
Info999
 
I

Info999

Gast
Wieso denn das? :)
Suche nur Hilfe, weil ich das alleine nicht ganz hinkriege. Aber falls einer dafür Geld will kann man darüber sprechen, jedoch soll das Programm nicht sehr aufwenig sein.
Aber wäre schön, wenn sich jemand meldet der mir helfen kann. :)
 
G

Gonzo17

Gast
Naja ich weiß nicht, ob jemand freiwillig 1-2 Abende opfern möchte, ohne dabei etwas zu verdienen. Da gehts dann auch nicht um die Komplexität deines Programmes, sondern einfach um den Zeitaufwand. Außerdem, wie stellst du dir das vor, persönlich treffen oder über irgendnen Messenger (zB Skype?)? Denn wenn du es in einem direkten Treffen klären willst müsstest du ja auch erstmal sagen, wo du herkommst. Solltest du hier Lösungsansätze zeigen und konkrete Fragen haben, dann wird dir bestimmt auch so geholfen, aber ohne irgendwelche Vorarbeit von dir ist das dann tatsächlich eher eine Job-Anfrage. ;)
 

tagedieb

Top Contributor
Am besten schreibst du das ganze mal in Pseudocode, dann wird es auch einfache zu verstehen und zu implementieren.

Hier mal eine einfache Klasse als Grundidee. Je nach Anforderungen kannst du die Erweitern und z.B. weiter Amplen hinzufuegen und in Abhaengigkeit setzen oder das ganze via GUI visualisieren.


Java:
public class Ampel {

	public enum Status {
		GREEN, YELLOW, RED
	};

	Status status = Status.RED;
	int nCarsWaiting = 0;

	public void addWaitingCars(int nCars) {
		nCarsWaiting += nCars;
		if (nCarsWaiting >= 10) {
			status = Status.GREEN;
		}
	}

	@Override
	public String toString() {
		return "Cars waiting: " + nCarsWaiting + " Status: " + status;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Ampel ampel = new Ampel();
		while (ampel.status == Status.RED) {
			ampel.addWaitingCars((int) (Math.random() * 4.0));
			System.out.println(ampel);
		}

	}
}
 
T

Tomate_Salat

Gast

Der Titel dieses Forums sagts ja schon
Hausaufgaben Wir machen keine Hausaufgaben, aber wir helfen dabei

Hilfe findest du hier im Forum immer kostenlos, komplette Lösungen allerdings nicht. Wenn du Hilfe brauchst, dann poste deinen Ansatz und deine Probleme so präzise wie möglich (auf zu allgemein gehaltene Probleme, bekommste du auch sehr allgemein gehaltene Antworten).

Ansonsten: schreibe das ganze in die Jobbörse und bezahle einen Entwickler dafür, dass er dir das Problem löst.

MFG

Tomate_Salat
 
I

Info999

Gast
Hey,
also ich würde mich gerne über messenger verständigen, um deine frage zu beantworten. Da würde auch schon icq reichen (skype optional).
@tagedieb:
danke deine idee hat mir aufjedenfall schonmal ein wenig geholfen. Kannst du mir eventuell noch zeigen, wie ich es hinkriege, das der stau nur langsam aufgelöst wird?


Ich habe selber schon viel geschrieben, aber jedes mal hängt mein programm. Deswegen hab ich überlegt noch mal neu anzufangen und nicht unnötig viele kleine Fehler zu machen.
Was ich aber wirklich nicht alleine hinbekomme ist es eine Kreuzung aufzustellen, wo die Ampeln nacheinander schalten. Also das an mehreren Ampeln Autos erzeugt werden und dann so geschaltet wird, dass der Stau möglichst schnell beseitigt wird...
Ich mache mir selber natürlich auch gedanken, wie ich das Programm schreiben soll, jedoch komme ich alleine nicht wirklich voran, da mir die ganzen methoden, etc. nicht so schnell einfallen, wie anderen, die sich schon länger mit Java beschäftigen. :(

hier z.b. mal eine idee einer Ampel, die ich jedoch nicht so gut finde:

Java:
public class Ampel extends Object {
  // Anfang Attribute
  private int x;
  private int y;
  private int ampelpos;
  private Lampe gruenLampe;
  private Lampe rotLampe;
  private Lampe gelbLampe;

  // Ende Attribute
  public Ampel(int x, int y, int z, Graphics g) {
    this.x = x;
    this.y = y;
    ampelpos = z;

    if (ampelpos == 1) {
      rotLampe = new Lampe(x, y, Color.red);
      gelbLampe = new Lampe(x, y + 33, Color.yellow);
      gruenLampe = new Lampe(x, y + 66, Color.green);
    }

    if (ampelpos == 2) {
      gruenLampe = new Lampe(x, y, Color.green);
      rotLampe = new Lampe(x, y + 66, Color.red);
      gelbLampe = new Lampe(x, y + 33, Color.yellow);
    }

    if (ampelpos == 3) {
      rotLampe = new Lampe(x, y, Color.red);
      gelbLampe = new Lampe(x + 33, y, Color.yellow);
      gruenLampe = new Lampe(x + 66, y, Color.green);
    }

    if (ampelpos == 4) {
      gruenLampe = new Lampe(x, y, Color.green);
      rotLampe = new Lampe(x + 66, y, Color.red);
      gelbLampe = new Lampe(x + 33, y, Color.yellow);
    }

    rotLampe.zeichneLampe(g);
    gelbLampe.zeichneLampe(g);
    gruenLampe.zeichneLampe(g);
  }

  // Anfang Methoden
  public void setAus(Graphics g) {
    //rot aus
    rotLampe.setAusschalten();
    rotLampe.zeichneLampe(g);
    //grün aus
    gruenLampe.setAusschalten();
    gruenLampe.zeichneLampe(g);
    //gelb aus
    gelbLampe.setAusschalten();
    gelbLampe.zeichneLampe(g);
  }

  public void setAll(Graphics g) {
    //rot an
    rotLampe.setAnschalten();
    rotLampe.zeichneLampe(g);
    //grün an
    gruenLampe.setAnschalten();
    gruenLampe.zeichneLampe(g);
    //gelb an
    gelbLampe.setAnschalten();
    gelbLampe.zeichneLampe(g);
  }

  public void setGelb(Graphics g) {
    //rot aus
    rotLampe.setAusschalten();
    rotLampe.zeichneLampe(g);
    //grün aus
    gruenLampe.setAusschalten();
    gruenLampe.zeichneLampe(g);
    //gelb an
    gelbLampe.setAnschalten();
    gelbLampe.zeichneLampe(g);
  }

  public void setGelb2(Graphics g) {
    //rot an
    rotLampe.setAnschalten();
    rotLampe.zeichneLampe(g);
    //grün aus
    gruenLampe.setAusschalten();
    gruenLampe.zeichneLampe(g);
    //gelb an
    gelbLampe.setAnschalten();
    gelbLampe.zeichneLampe(g);
  }

  public void setGruen(Graphics g) {
    //rot aus
    rotLampe.setAusschalten();
    rotLampe.zeichneLampe(g);
    //grün an
    gruenLampe.setAnschalten();
    gruenLampe.zeichneLampe(g);
    //gelb aus
    gelbLampe.setAusschalten();
    gelbLampe.zeichneLampe(g);
  }

  public void setRot(Graphics g) {
    //rot an
    rotLampe.setAnschalten();
    rotLampe.zeichneLampe(g);
    //grün aus
    gruenLampe.setAusschalten();
    gruenLampe.zeichneLampe(g);
    //gelb aus
    gelbLampe.setAusschalten();
    gelbLampe.zeichneLampe(g);
  }

  public void pause(int millisec) {
    try {
      Thread.sleep(millisec);
    } catch (InterruptedException e) {
    }
  }

  // Ende Methoden
}
 
I

Info999

Gast
Hab übrigens noch eine Frage, die ich versuche möglichst präzis zu erläutern. ;)
Wie schaffe ich es, dass mir mein Textfeld die Anzahl der wartenden Autos anzeigt? Am besten auch so, dass es runterzählt, wenn Autos wegfahren.

p.s. falls einer keine Lust hat mir aus Spaß an der Sache zu helfen, dann würde ich auch jemanden dafür bezahlen, jedoch möchte ich gerne "mitprogrammieren", damit ich lerne, wie ich es beim nächsten mal besser machen kann.

Danke
 

Andi_CH

Top Contributor
Es ist doch wie immer!

Schritt 1: Analyse: Präzise Beschreibung des Problemes, aufteilen in Einzelkomponenten und beschreiben dieser (Braucht NULL Programmierkenntnisse dazu - ist reiner Text, kann aber auch schon UML sein)

Schritt 2: Design: Welche Klassen brauche ich, was machen diese. (Braucht immer noch keine Prgrammierkenntnisse - ist UML)

Schritt 2: Implementation: Jetzt wird erst prgrammiert.

Wobei brauchst du Hilfe? Bei allen drei Schritten? Wann soll das ganze fertig sein?
Wenn du noch niemanden gefunden hast kannst du dich gerne per PN melden.
Ich helfe dir gerne das ganze seriös durchzuziehen, allerdings beginne ich NICHT mit programmieren, denn das geht in den meisten Fällen schief.
 

tagedieb

Top Contributor
Wie gesagt wuerd ich das ganze erst mal in Pseudocode erarbeiten und das Model (Ampel) und den Controller(Main) implementieren.
Das Visualisieren via GUI wuerd ich am Schluss machen wenn dein Code richtig funktioniert.


Code:
processschleife {
  schleife (amplen) {
     // berechne neue anzahl wartender autos fuer jede Ampel
     wartendeAutos += zufallszahl (0-3);
     wenn (ampel == gruen) {
       wartendeAutos -= zufallszahl(3-5);
     }
     wenn (ampel == gelb) {
       // mach etwas falls noetig
     }

     textFeld.setText(wartendeAutos);
  }

  // anhand der anzahl der wartenden autos die ampeln schalten

  schlafe;

}


Deine Ampel Klasse sollte von JContainer und Lampe von JComponent erben. Die Lampe kannst du dann ganz einfach in der paintComponent()-Methode zeichnen und das ganze in der Ampel Klasse zusamensetzen
Code:
ampel.add(new Lampe(....));
inklusive dem Textfeld zum Anzeigen der wartenden Autos.
 

Neue Themen


Oben