Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ampelschaltung (https://www.delphipraxis.net/81762-ampelschaltung.html)

123Schülerin 3. Dez 2006 13:22


Ampelschaltung
 
Kann mir jemand erklären, wie man eine ampelschaltung programmiert??

Namenloser 3. Dez 2006 13:24

Re: Ampelschaltung
 
nachdenken und programmieren. hier mahct garantiert keiner deine hausaufgaben.

SirThornberry 3. Dez 2006 13:28

Re: Ampelschaltung
 
Welche Gedanken hast du dir schon gemacht zur Ampelschaltung und an welcher Stelle kommst du nicht weiter?
Wir helfen dir gern wenn du nicht weiter kommst aber wir wollen auch etwas selbst bemühung sehen um nicht für andere die Hausaufgaben zu machen :)

123Schülerin 3. Dez 2006 13:31

Re: Ampelschaltung
 
ich weiß, dass ich verschiedene images einfügen muss. imrot, imrotgelb, imgrün und im gelb, aber ich verstehe nicht wie das mit true, false und dem timer funtioniert

Namenloser 3. Dez 2006 13:33

Re: Ampelschaltung
 
du könntest auch einfach drei tshapes einfügen, und die farbe verändern. das wäre weniger aufwändig. du müsstest nur
Delphi-Quellcode:
shape1.brush.color := clgreen;
shape2.brush.color := clgray;
shape3.brush.color := clgray;
schreiben, um z.b. eine grüne ampel zu haben. für gelb und rot entsprechend angepasste codes.

Helmi 3. Dez 2006 13:38

Re: Ampelschaltung
 
Hallo,

ich hab auch mal ne Ampel aus Spass programmiert.
Ich werde dir zwar nicht den kompletten Code geben, aber ein paar Anhaltspunkte:

z. B. Timer

in OnTimer des Timers hab ich es so gelöst:
Delphi-Quellcode:
procedure TForm1.Timer_AmpelTimer(Sender: TObject);
begin
  Label_Zustand.Caption := IntToStr(Zustand);

  case Zustand of
    1:
      begin
        Shape_rot.Brush.Color  := Farbe_Rot;
        Shape_gelb.Brush.Color := Farbe_Gelb;
        Shape_gruen.Brush.Color := Farbe_Aus;

        Zustand                := 2;
      end;
    2:
      begin
        {...}

        Zustand                := 3;
      end;

{...}
Wie du siehst, hab ich 3 Shapes verwendet und schalte, je nach Zustand, die Farbe der einzelnen Shapes um.

Grunde ist es eine Endlos-Schleife.
Zustand 1 = Ampel rot/gelb
Zustand 2 = Ampel gruen
Zustand 3 = Ampel gelb
Zustand 4 = Ampel rot

je nach Timer-Intervall läuft die Ampel schneller oder langsamer.

Vielleicht hilft dir das ja.

P.S.: Farbe_Rot, Farbe_Gelb und Farbe_Aus sind Konstanten. Es ginge auch mit clRed, clYellow und clBlack (= Farbe_Aus bei mir)

Der_Unwissende 3. Dez 2006 14:46

Re: Ampelschaltung
 
Zitat:

Zitat von 123Schülerin
ich weiß, dass ich verschiedene images einfügen muss. imrot, imrotgelb, imgrün und im gelb, aber ich verstehe nicht wie das mit true, false und dem timer funtioniert

Hi,
ich verstehe ja, dass du einen gewissen Zeitdruck hast, wenn du am 6ten eine Klausur schreiben musst. Damit du hier aber schnellst möglich eine Antwort bekommst und die dir auch möglichst gut weiter hilft, solltest du dir immer ein paar Minuten Zeit nehmen deine Fragen auszuformulieren. Sag einfach mal ein wenig mehr, es ist immer gut zu wissen, was genau das Problem ist das du lösen willst, was du hier schon weißt und wo du nicht weiter kommst (soweit hast du das sicher schon in den anderen Beiträgen gelesen).
Deine Antwort auf die Frage ist aber nicht gerade Hilfreich. Du sprichst hier von den Images imrot, imrotgelb,... und dann irgendwas von true/false und einem Timer. Wo kommen letztere her?
Das Nachfragen der Leute kostet dich doppelt Zeit, immerhin liest hier keine jede Sekunde alle Threads, kommt also jmd. hier vorbei und muss nachfragen, dauert es erstmal x Minuten bis du die Antwort liest, die offenen Fragen beantwortest und dann wieder y Minuten bis der jenige der fragte deine Antwort liest. Schreibst du gleich alles wichtige auf, so ersparst du die Nachfragen, dir kann gezielter und damit besser geholfen werden und das ganze auch noch schneller!

An sich solltest du einfach mal damit anfangen, dass du erklärst, was du unter einer Ampelschaltung verstehst. Lass dabei erstmal den Code weg, schreib einfach nur die Idee auf. Hast du nur eine Ampel? Oder mehrere von einander abhängige (z.B. an eine Kreuzung). Dann solltest du noch sagen wie die Ampel geschaltet wird (denke dass möchtest du in einem gewissen Zeitinterval machen).
So ganz grob hast du also mindestens eine Ampel, die aus drei Lampen (Rot, Gelb, Grün) besteht, dann wäre das nächste wie die wann leuchten. Es ist zwar jedem klar, dass eine Ampel nicht von Rot auf Grün springt, aber das solltest du als Beschreibung des gesamten Problems mal ruhig aufschreiben. Das Umsetzen in Code kann danach erfolgen.

Hast du alles aufgeschrieben, was zum Problem gehört, kannst du dann sagen was du wie realisieren möchtest. So würdest du offensichtlich die Ampel gerne mit Images realisieren (auch da bitte etwas genauer werden) und das Umschalten soll wohl über einen Timer gesteuert werden?
Dazu solltest du dann grob was sagen und wenn du an einer Stelle nicht weiter kommst erklär nochmal woran genau du scheiterst. Du sagst du verstehst den Timer nicht, aber was genau? Weißt du wozu ein Timer da ist? Meldet der Compiler einen Fehler oder läuft es nicht wie es soll?


Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz