Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Berechnen und ausgeben wie viele Antworten richtig waren fürs Konsolenprogramm.

  Alt 13. Mär 2013, 15:22
Also erstmal macht man sich Gedanken darüber, was man denn eigentlich machen muss.
  • Abfrage der Runden-Anzahl (liefert die Anzahl zurück)
  • Erstellen einer Aufgabe (Liefert die Aufgabe und die richtige Lösung zurück)
  • Ausgabe und Abfrage der Lösung (Liefert zurück, ob die Antwort richtig war)
  • Ausgabe des Ergebnisses
  • Die einzelnen Teile für das Spiel sinnvoll zusammensetzen
In Delphi übersetzt kommt dann sowas dabei heraus:
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  SysUtils;

function FrageAnzahlRunden : Integer;
begin
  // ToDo
  Result := 1; // Achtung, liefert aktuell immer nur 1 zurück
end;

procedure AufgabeErstellen( out Frage, Loesung : string );
begin
  // ToDo
  Frage := '';
  Loesung := '';
end;

function AufgabeAbfragen( const Frage, Loesung : string ) : Boolean;
begin
  Result := False; // Achtung, liefert aktuell immer nur False (nicht gelöst) zurück
  // ToDo
end;

procedure ZeigeErgebnis( RichtigBeantwortet, AnzahlFragen : Integer );
begin
  WriteLn( 'Du hast ', RichtigBeantwortet, ' Fragen von ', AnzahlFragen, ' richtig beantwortet!' );
end;

procedure Spiel;
var
  LRundenAnzahl : Integer; // Anzahl der Runden
  LRunde : Integer; // aktuelle Runde
  LFrage : string; // aktuelle Frage
  LLoesung : string; // Lösung zur aktuellen Frage
  LRichtigZaehler : Integer; // Zähler der richtigen Antworten
begin
  LRichtigZaehler := 0;

  LRundenAnzahl := FrageAnzahlRunden;

  for LRunde := 1 to LRundenAnzahl do
    begin

      AufgabeErstellen( LFrage, LLoesung );

      if AufgabeAbfragen( LFrage, LLoesung )
      then
        Inc( LRichtigZaehler );

    end;

  ZeigeErgebnis( LRichtigZaehler, LRundenAnzahl );
end;

begin
  try

    Spiel;

  except
    on E : Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;

end.
Durch diese Strukturierung kann man den Code für das eigentliche Spiel fast in Prosa hinschreiben
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Mär 2013 um 15:41 Uhr)
  Mit Zitat antworten Zitat