Um diesen Thread noch zu retten, kehre ich mal wieder zum Thema zurück
Ihr solltet nun einen groben Ablaufplan erstellen, wann was ausgeführt werden soll.
Damit unterteilt ihr das Gesamtproblem in kleine Teilprobleme, die dann sehr schön von einzelnen ausprogrammiert werden können.
Ihr braucht z.B. etwas, dass euch die nächste Frage liefert.
Das umfasst die Frage selber, 4 Antwortmöglichkeiten und welche der Antworten richtig ist.
Delphi-Quellcode:
Frage : string; // Ausgabe
Antwort1, Antwort2, Antwort3, Antwort4 : string; // Ausgabe
Richtig : Integer // Ausgabe
oder (wenn ihr
array schon kennt)
Delphi-Quellcode:
Frage : string; // Ausgabe
Antworten : array[1..4] of string; // Ausgabe
Richtig : Integer // Ausgabe
Schön wäre es jetzt auch, wenn jede Frage pro Runde nur einmal gestellt wird.
Dafür benötigt man die eindeutigen Kennzeichen für jede bislang gestellte Frage und jede Frage muss auch so ein eindeutiges Kennzeichen haben.
Delphi-Quellcode:
GestellteFragenKennzeichen : array of integer; // Eingabe
FrageKennzeichen : Integer; // Ausgabe
Frage : string; // Ausgabe
Antworten : array[1..4] of string; // Ausgabe
Richtig : Integer // Ausgabe
Diese Fragen sollen aus einer Datei gelesen werden, dann wird ja noch der Dateiname benötigt
Delphi-Quellcode:
DateiName : string;
GestellteFragenKennzeichen : array of integer; // Eingabe
FrageKennzeichen : Integer; // Ausgabe
Frage : string; // Ausgabe
Antworten : array[1..4] of string; // Ausgabe
Richtig : Integer // Ausgabe
In Delphi/Pascal (und eingeenglischt
) umgesetzt würde das dann so aussehen:
Delphi-Quellcode:
procedure GetNextQuestion(
// Eingabe-Argumente
const FileName : string; // Dateiname mit dem Fragenkatalog
QuestionIDArr : array of integer; // bereits gestellte Fragen
// Ausgabe-Argumente
out QuestionID : Integer; // ausgewählte Frage-ID
out Question : string; // Fragetext
out Answers : array[1..4] of string; // Antworten
CorrectAnswerIndex : Integer // Index der richtigen Antwort (1..4)
);
begin
// hier kommt der Code
end;
Um nun der Gruppe ein unabhängiges Arbeiten zu ermöglichen, werden diese Teile als Dummys programmiert.
Delphi-Quellcode:
unit Form1;
interface
...
implementation
uses
...
QuestionCatalogue_Dummy;
...
procedure TForm1.Foo( Sender : TObject );
var
LQuestionID : Integer;
LQuestion :
string;
LAnswers :
array[1..4]
of string;
LCorrectAnswer : Integer;
begin
GetNextQuestion( FQuestionFile, FQuestionArray, LQuestionID, LQuestion, LAnswers, LCorrectAnswer );
end;
Delphi-Quellcode:
unit QuestionCatalogue;
interface
procedure GetNextQuestion(
// Eingabe-Argumente
const FileName :
string;
// Dateiname mit dem Fragenkatalog
QuestionIDArr :
array of integer;
// bereits gestellte Fragen
// Ausgabe-Argumente
out QuestionID : Integer;
// ausgewählte Frage-ID
out Question :
string;
// Fragetext
out Answers :
array[1..4]
of string;
// Antworten
CorrectAnswerIndex : Integer
// Index der richtigen Antwort (1..4)
);
implementation
procedure GetNextQuestion(
// Eingabe-Argumente
const FileName :
string;
// Dateiname mit dem Fragenkatalog
QuestionIDArr :
array of integer;
// bereits gestellte Fragen
// Ausgabe-Argumente
out QuestionID : Integer;
// ausgewählte Frage-ID
out Question :
string;
// Fragetext
out Answers :
array[1..4]
of string;
// Antworten
CorrectAnswerIndex : Integer
// Index der richtigen Antwort (1..4)
);
var
LIdx : Integer;
begin
// eindeutige QuestionID ermitteln
repeat
QuestionID := Random( 100 ) + 1;
for LIdx := Low( QuestionIDArr )
to High( QuestionIDArr )
do
if QuestionID = QuestionIDArr[LIdx]
then
begin
QuestionID := 0;
Break;
end;
until QuestionID <> 0;
CorrectAnswerIndex := Random( 4 ) + 1;
for LIdx := 1
to 4
do
if LIdx = CorrectsAnswerIndex
then
Answers[LIdx] := '
richtige Antwort'
else
Answers[LIdx] := '
falsche Antwort';
end;
end.
Sind alle diese Dummys dann fertig, und mit der Oberfläche verbunden, dann fühlt sich die Oberfläche auch schon lebendig an.
Jetzt kann ein jeder den ihm zugeteilten Part ausprogrammieren und gleich mit der Oberfläche testen.
Zum Schluss werden alle die Dummys gegen die echten Funktionen ersetzt und es sollte ein fertiges Programm herauskommen.