Jump to content

Uhrzeit anzeigen


Empfohlene Beiträge

vor 2 Stunden schrieb Andy:

case gibt's wohl nicht in Lua. Weiß nicht, ob das mit riesigen if-then-Netzen realisiert wird, oder einer Tabelle

Beides geht.

mit if … elseif … elseif … else bekommt man ein Konstrukt, dass sich genau wie case verhält.
Und es ist auch nicht größer als eine case Liste. Die Schreibweise unterscheidet sich nur ein wenig.

Bedingung = math.random(1,6)

if Bedingung == 1 then
  print("Du hast eine 1 gewürfelt")
elseif Bedingung == 2 then
  print("Du hast eine 2 gewürfelt")
elseif Bedingung == 3 then
  print("Du hast eine 3 gewürfelt")
elseif Bedingung == 4 then
  print("Du hast eine 4 gewürfelt")
elseif Bedingung == 5 then
  print("Du hast eine 5 gewürfelt")
else
  print("Du hast eine 6 gewürfelt")
end

 

Mit Tabellen bekommt man etwas viel besseres. Wenn man nämlich die einzelnen Fälle als Tabellenindex verwendet, dann kann man den vorliegenden Fall benutzen, um direkt dieses Tabellenelement anzuspringen. Man muss nicht vorher - wie bei case oder if … elseif - mehrere andere Fälle überspringen, bis man in der Aufzählung den passenden Fall gefunden hat. Und jedes Tabellenelement kann in Lua eine Funktion sein!

Ausgaben = {
  [1] = function() print("Du hast eine 1 gewürfelt") end,
  [2] = function() print("Du hast eine 2 gewürfelt") end,
  [3] = function() print("Du hast eine 3 gewürfelt") end,
  [4] = function() print("Du hast eine 4 gewürfelt") end,
  [5] = function() print("Du hast eine 5 gewürfelt") end,
  [6] = function() print("Du hast eine 6 gewürfelt") end
}

Bedingung = math.random(1,6)

Ausgaben[Bedingung]()

 

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dachte ich's mir. Es mußte einen Grund haben, weswegen sie case einsparen. Aber Ersteres sieht grausam aus. Dafür gibt es einen Naserümpf-Fachbegriff: 'cludge'.
Letzteres ist dann elegant - aber gewohnheitsbedürftig.

Gruß
  Andy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im gewählten Beispiel sind natürlich beide gezeigten Methoden Blödsinn, weil man einfach den Wert direkt in den Text einbauen würde.

Ich hoffe, dass niemand das missversteht.

Ich wollte nur anhand möglichst simpler Beispiele die beiden Konstrukte vorstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...
Am 6.6.2019 um 13:55 schrieb BahnLand:
  1.  
  2.  
  3.  
  4. ... Du kannst hier sehen, dass immer beim Passieren eines Signales der nächste Gleisabschnitt zunächst komplett reserviert wird (gelbe Ausleuchtung), und anschließend die Gleisbildbausteine, auf deren zugeordneten Gleisen der Zug gerade einfährt, auf die rote Ausleuchtung umschalten. Sobald der Zug ein solches Gleis wieder verlässt, erscheint wieder die gelbe Ausleuchtung, weil der Gleisabschnitt insgesamt noch nicht freigegeben ist. Erst wenn der Zug den Gleisabschnitt komplett verlassen hat, erlischt auch die gelbe Reservierungs-Ausleuchtung am Gleisbildstellpult.

  5.  
  6. Wähle beispielsweise aus der obigen Anzeige das Ereignis "ABS01 Hauptsignal auf" aus. Wird dieses geöffnet (siehe die Anzeigen "Ereignis" und "Bedingungen" im unteren Bild), wird im Gleisbildstellpult die Fahrstraßentaste "GBS ABS Fahrstraßentaste A01" angeschaltet (Anzeige "Aktionen" im unteren Bild).
     
  7. Das Anschalten dieser Taste "GBS ABS Fahrstraßentaste A01" bewirkt nun die eigentliche Ausleuchtung der Resvierungsanzeige des vom Zug nun zu befahrenden Gleisabschnitts. Im Abschnitt "Aktionen" des unteren Bildes werden alle Gleisbildbausteine des Gleisbildstellpults, die den zu reservierenden Gleisabschnitt repräsentieren, gelb ausgeleuchtet.

    Theoretisch hätte man die beiden Vorgänge 6 und 7 auch in einer Ereignnisdefinition zusammenfassen können. Mit der hier dargestellten Indirektion wird aber erreicht, dass die Gleisreservierung nicht nur durch das sich öffnende Signal, sondern auch von Hand direkt über die Fahrstraßentaste am Gleisbildstellpult vollzogen werden kann.
     
  8. Wird der reservierte Gleisabschnitt durch den Zug komplett verlassen (der letzte Wagen des Zuges verlässt das letzte Gleis dieses Gleisabschnitts), schaltet die Ereignissteuerung bei allen betroffenen Gleisbildbausteinen die gelbe Ausleuchtung aus.
     
  9. Die rote Belegungs-Ausleuchtung der Gleisbildbausteine ist in der Ereignisgruppe "ABS Besetzt-Anzeige" realisiert. Hier wird die Ausleuchtung (in rot) jedes Gleisbildbausteins (oder in Ausnahmefällen auch von 2 Bausteinen) separat über zubefahrende Gleise innerhalb des reservierten Gleisabschnitts angesteuert.
     
  10. Beim Einfahren in das mit dem Gleisbildbaustein (über die Ereignisdefinition) verbundene Gleis wird die rote Ausleuchtung des Gleisbildbausteins aktiviert.
     
  11. Verlässt der Zug das Gleis wieder, wird die Ausleuchtung des dazu gehörenden Gleisbildbausteins wieder auf gelb zurückgesetzt (was bedeutet, dass der Zug dieses Gleis zwar verlassen hat, die Reservierung des kompletten Gleisabschmitts aber noch nicht aufghoben ist).

    Mir ist momentan nicht klar, ob beim Vorbild nach der Aufhebung der tatsächlichen Gleisbelegung wirklich wieder die Gleisreservierung angezeigt wird, oder die Anzeige für das verlassene Gleisstück doch sofort ganz gelöscht wird. Man könnte natürlich auch diese Variante der Reservierungs- und Belegungs-Anzeige realisieren.

Die Ausführungen von @BahnLand entsprechen der Realität. Die Einstellung der Fahrstrasse (Punkt 7, hier Resevierung) erfolgt entweder manuell durch eine Zwei-Tasten-Bedienung (Startsignal-Zielgleis) oder im Automatikbetrieb durch einen externen Trigger (z.B. Besetztmeldung des vorgelegenen Blockabschnittes). Auch die Auflösung der Fahrstrasse nach Verlassen ist grundsätzlich so wie beschrieben (Punkt 4 + 11). Bei kleinen Bahnhöfen mit wenig Weichen wird das so gehandhabt. In großen Bahnhöfen werden dadurch aber für lange Zeit Weichen hinter dem Zug reserviert, die aber schon wieder befahren werden könnten. Deshalb werden in größeren Bahnhofen die Weichenbereiche in kleinere Abschnitte unterteilt (kann von einer bis zu 5,6 Weichen sein, je nach Lage), wo dann Gruppenweise nach Verlassen die Reservierung aufgehoben wird.

Es gibt auch unterschiedliche Meinungen über den Besetztzustand eines Gleises, unter anderem, dass wenn die Lok vom Zug fährt, das Gleis frei gemeldet wird. Gegenfrage: Könnte man durch dieses "freie Gleis" einen Zug fahren lassen? Sobald ein Fahrzeug auf einem Gleis steht, gilt dieses als besetzt, unabhängig von der Ausleuchtung die "besetzt" anzeigen sollte (wird in der Realität nicht immer dargestellt, abhängig von der Bauart der Gleisfreimeldeanlage, der Fahrzeuge, Abstellgleise,...).

Ich hoffe, ich konnte ein wenig "Fachwissen" einstreuen, aber nicht vergessen, dass ich von den österreichischen Bestimmungen spreche. Aber sicherungstechnisch dürften nicht große Unterschiede zu Deutschland oder der Schweiz sein, da wir baugleiche/ähnliche Stellwerke der gleichen Hersteller verwenden.

Da ich im Sommer mehr im Wald als vor dem PC bin, kann es mit einer Antwort schon mal etwas dauern.

Lg Tom

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...