AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quiz erstellen

Ein Thema von 01Detlef · begonnen am 21. Dez 2002 · letzter Beitrag vom 23. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
01Detlef

Registriert seit: 21. Dez 2002
10 Beiträge
 
#1

Quiz erstellen

  Alt 21. Dez 2002, 16:13
Quiz erstellen
hallo,
ich möchte ein quiz proggen und möchte dazu arrays benutzen!
ich habe jetzt schon eine procedure, wodurch jeder spieler zwei versuche bekommt für eine frage! ich hatte ein quiz, bei dem jede frage in einem neuen form gespeichert wurde, es entstanden aber viele fehler. Außerdem verwende ich einen Button, vier Labels und ein editfeld.

Also ich möchte jetzt ein Array, in dem alle 15 Antworten gespeichert sind und den jeweils vier Labels ein Text zugewiesen wird! Außerdem soll die Antwort nicht immer z.B a sein, deshalb muss das auch variabel sein!


Code:
var a array[1..15] of integer;
Begin for i:=1 to 15 do
begin.....;

Ich weiss jetzt nicht, wie ich das alles verbinden kann,
vier mögliche Antworten, verschiedene Reihenfolge der richtigen Antworten und das nachdem die erste richtig beantwortet wurde die nächste erscheint???


Danke Detlef
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 21. Dez 2002, 16:29
Moin Detlef,

erst einmal herzlich willkommen.

Ich denke mal als erstes solltest Du Dir mal Gedanken über die Daten (Struktur) machen.

Eine Möglichkeit wäre es, die Fragen, inclusive der Antwortmöglichkeiten, und der Kennung der korrekten Antwort in einer Ini Datei zu speichern.

z.B. in diesem Stile
[Frage1]
text=Hier die Frage
A1=Erste Antwortmöglichkeit
A2=Zweite Antwortmöglichkeit
...
korrekt=A1

Die könntest Du dann mit Hilfe eines TIniFile auslesen, auf die Label verteilen, und Dir merken welche der vier die richtige Antwort wäre.

Die Daten kannst Du dann natürlich auch in Arrays einlesen.

(Soll wohl eine WWM Variante werden )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
01Detlef

Registriert seit: 21. Dez 2002
10 Beiträge
 
#3
  Alt 21. Dez 2002, 18:19
danke,

ich verstehe das mit der ini-datei nicht, was soll ich machen?

Welche Möglichkeit gibt es denn noch die Daten zu speichern?
Deinen Vorschlag kann ich doch auch mit if-anweisungen machen, oder?

Danke Detlef
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 21. Dez 2002, 18:34
Moin Detlef,

schau Dir doch mal die Hilfe zu TIniFile an.

Dabei speziell die Methode ReadString.

Du kannst natürlich auch die ganzen Fragen und Antworten fest in das Programm schreiben, aber das wäre doch recht unflexibel.

Das mit dem if hab' ich jetzt nicht verstanden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
ssach

Registriert seit: 9. Dez 2002
Ort: schleiwenhaff
99 Beiträge
 
Delphi 6 Professional
 
#5

Zusatz variable

  Alt 21. Dez 2002, 20:05
y,

zunachst wuerde ich an deien stelle mal ein array of string nutzen, aber du kannst ja a,b,.. durch 1,2..ersetzen!
also mein vorschlag ist du benutzt einfach eine hilfsvariable, bei der du nach jeder antworteinfach zb. zusatvariable = i
Delphi-Quellcode:
a[i] := Antwort;
i := i +1
dann hast du bei a immer die position der frage die gerade dranist,hoffe konnte di rhelfen!
cu[/b]
  Mit Zitat antworten Zitat
01Detlef

Registriert seit: 21. Dez 2002
10 Beiträge
 
#6
  Alt 22. Dez 2002, 14:07
vielen dank,

aber ehrlich gesagt, weiss ich nicht wie ich jetzt anfangen soll! Also habe ich das jetzt richtig verstanden, die richtigen Antworten in einem Array speichern, die gesamten Fragen in einem speichern und wie ist das mit der Reihenfolge?

Danke Detlef
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 22. Dez 2002, 14:14
Moin Detlef,

wie willst Du es denn mit den erforderlichen Daten, halten:
Sollen die aus einer externen Datei eingelesen werden, oder willst Du die fest im Programm einbauen?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
01Detlef

Registriert seit: 21. Dez 2002
10 Beiträge
 
#8
  Alt 22. Dez 2002, 16:51
Als ich weiss nicht, welche Vorteile oder Nachteile die beiden Möglichkeiten haben!
Du meintest ja, das die externe Variante besser flexibler sei, also könnte ich das so versuchen!

Detlef
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 22. Dez 2002, 17:50
Moin Detlef,

mal so überlegt:
Willst Du die Fragen und Antworten ändern, müsstest Du bei fest im Programm hinterlegten Daten jedesmal das Programm ändern.
Sind die Daten in einer Datei ausgelagert, muss nur diese geändert/ergänzt werden, damit Du neue Fragen und Antworten zur Verfügung hast.

Zugegeben, die Idee diese Daten in eine INI Datei zu schreiben, ist natürlich nicht das Optimum, da ja jeder problemlos da reinschauen und mogeln kann, aber für den Einstieg, ist es eine recht leicht zu handhabende Lösung.

Damit's für den Anfang nicht zu kompliziert wird, würde ich mal vorschlagen, von nur einem einzigen Satz von 15 Fragen auszugehen, die in der Datei stehen sollen.
Eine Erweiterung auf mehrere Sätze kann dann ja immer noch kommen.

Dazu mal kurz der grundlegende Aufbau einer INI Datei:
Diese Dateien sind unterteilt in Sections Idents, und Values
Sections sind die zusammengehörigen Blöcke, Idents dann die einzelnen Einträge innerhalb der Blöcke.

Das könnte dann z.b. so aussehen:

[Frage1] <= Dies wäre eine Section
Frage=Das ist hier die Frage <= Frage wäre hier der Ident, Das ist hier die Frage der Value

Die Fragendatei hätte dann also beispielsweise so einen Aufbau:

[Frage1]
Frage=Hier der Text der ersten Frage
Antwort1=1. Antwortmöglichkeit
Antwort2=2. Antwortmöglichkeit
Antwort3=3. Antwortmöglichkeit
Antwort4=4. Antwortmöglichkeit
Korrekt=3

Hierbei habe ich dann angenommen, dass die Antwort3 die richtige Antwort ist.

Um diese Daten jetzt zu benutzen bräuchtest Du eigentlich noch nicht einmal mehr Arrays, da Du die Daten direkt aus der Datei heraus auslesen könntest.

Sollen die Daten vorab komplett eingelesen werden (in Arrays eben), sehe ich, was die Übersichtlichkeit angeht, zwei Lösungen:
  1. Sechs Arrays mit jeweils 15 Einträgen, davon eines für die Fragen, vier für die Antwortmöglichkeiten, und eines für korrekte Antwort
  2. Ein Array mit 15 Einträgen, wobei dann ein eigener Datentyp als Typ benutzt wird, der alle Daten je Frage enthält.

Beide Varianten wären leicht einzubauen, und recht übersichtlich, die 1. wäre allerdings recht umständlich zu schreiben.

(Ich hatte auch noch die Idee das Ganze über ein mehrdimensionales Array mit Standardtypen zu machen, aber ich finde, dass man da leicht die Übersicht verlieren kann, auch wenn's nur drei Dimensionen geworden wären).

Der erste Fall sähe dann so aus (Datendeklaration):

Delphi-Quellcode:
var
  asQuestions : array [1..15] of string;
  asAnswer1 : array [1..15] of string;
  asAnswer2 : array [1..15] of string;
  asAnswer3 : array [1..15] of string;
  asAnswer4 : array [1..15] of string;
  aiCorrect : array [1..15] of integer;
und der zweite so:

Delphi-Quellcode:
type
  TcsQuiz =
  record
    sQuestion : string;
    sAnswers : array [1..4] of string;
    iCorrect : integer;
  end;

var
  aqQuiz : array [1..15] of TcsQuiz;
Das Einlesen von Daten aus einer INI Datei sähe, allgemein, so aus:
(unter uses muss noch inifiles hinzugefügt werden)

Ein Beispiel für den Umgang mit TIniFile, keine Komplettlösung für Dein Programm:

Delphi-Quellcode:
var
  iniQuiz : TIniFile;
  sTextValue : string;
  iIntValue : integer;

begin
  // Ini Datei 'Quiz.ini' öffnen
  // paramstr(0) enthält den Pfad des Programmes (incl. Dateiname)
  iniQuiz := TIniFile.Create(ExtractFilePath(paramstr(0))+'Quiz.ini');
  try
    sTextValue := iniQuiz.ReadString('Frage1','Frage','');
    iIntValue := iniQuiz.ReadInteger('Frage1','Korrekt',0);
  finally // Belegte Resourcen wieder freigeben
    FreeAndNil(iniQuiz);
  end;
end;
Versuch doch mal, ob Du damit erst einmal klarkommst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
01Detlef

Registriert seit: 21. Dez 2002
10 Beiträge
 
#10
  Alt 23. Dez 2002, 10:13
Code:
type
  TcsQuiz =
  record
    sQuestion : string;
    sAnswers : array [1..4] of string;
    iCorrect : integer;
  end;

var
  aqQuiz : array [1..15] of TcsQuiz;
Wenn ich nach diesem vorgehen möchte, dann muss ich doch eine For-Schleife für den array [1..15] aufbauen und darin die anderen Infos speichern? Meine Frage ist, wie rufe ich den Array answers jetzt darin aus? ( aqQuiz[1]:= sanswer[1]:= ??).
Den Quelltext schreibe ich doch in die Button.click-prozedur?

Code:
PROCEDURE Button.klick...
var i : Integer;
BEGIN
  FOR j:=1 TO 15 Do BEGIN
     aqQuiz[1]:= // hier kommen jetzt die Zuweisungen für die erste    
                    Frage hin, sQuestion, sAnswers, sCorrect
     aqQuiz[2]:= // zweite Frage
  end;
END;
Detlef
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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