![]() |
[Anfänger] Wortliste auf einen String überprüfen
Hallo DP-User,
Im Informatik Unterricht haben wir (endlich) mit Delphi angefangen. Nun sollen wir bis zum Ende des Schuljahres eine Abgespeckte Version des Spiels "Text Express" schreiben. Bei dem Spiel geht es darum, dass man verschiedene Buchstaben bekommt (6). Und dann aus diesen Wörter bilden muss. Je größer das Wort desto mehr Punkte erhält man. Wir entwickeln das Programm vollständig in der Schule, doch habe ich im Moment nichts zu tun und dachte mir ich fange schonmal an um ein paar Pluspunkte zu sammeln. Das gesamte Programm soll als Konsolenanwendung geschrieben werden. Mein Problem ist nun, dass ich nicht weiß, wie ich eine vorhandene Wortliste ( wortliste.txt eine Zeile - ein Wort) auf einen String hin überprüfen lassen kann. Ich habe bereits dieses und andere Foren durchstöbert und nichts konkretes gefunden. Ich muss wohl die gesamte Liste mit LoadFromFile in eine string-Liste einlesen und dann überprüfen, ob mein String darin enthalten ist. Da stecke ich fest. Hier mein bisheriger Quellcode:
Delphi-Quellcode:
Ihr müsst nur mal meinem Gehirn nen Anstoß geben^^
program TEultra;
{$APPTYPE CONSOLE} uses SysUtils; var option : integer; buchstaben : array[1..6] of string; buchstabe : integer; i : integer; wort : string; begin repeat writeln('Willkommen bei Text Express Ultra!'); writeln('1 = Spiel starten'); writeln('2 = Highscore'); writeln('3 = Spiel Beenden'); readln(option); if option = 1 then begin for I := 1 to 6 do begin randomize; buchstabe := random(26) + 65; buchstaben[i] := char(buchstabe); end; writeln(buchstaben[1]); writeln(buchstaben[2]); writeln(buchstaben[3]); writeln(buchstaben[4]); writeln(buchstaben[5]); writeln(buchstaben[6]); writeln('Bilden sie aus diesen Buchstaben nun die Wörter!'); writeln('Drücken sie enter um mit dem Spiel zu Beginnen!'); readln; readln(wort); end else if option = 2 then begin end else begin writeln('Bitte eine Gültige Option eingeben!'); end; until option = 3; end. bis dahin mfg Jonas |
Re: [Anfänger] Wortliste auf einen String überprüfen
Hallo Jonas, wenn Du eine Stringliste verwendest, könntest Du Dir mal die Methode IndexOf() anschauen.
|
Re: [Anfänger] Wortliste auf einen String überprüfen
Lade die Datei mit der Wortliste ein eine
![]() |
Re: [Anfänger] Wortliste auf einen String überprüfen
jupp, TStringList biete Möglichkeiten zum Suchen :angel:
ansonsten die Datei per ReadLn zeilenwise einlesen und dann einfach prüfen ob eine eingelesene Zeile (Zeile=Wort, bei einem Wort pro Zeile) mit dem eingegebenem String übereinstimmt. |
Re: [Anfänger] Wortliste auf einen String überprüfen
Hi Jonas,
so nebenbei. Was mir gerade auffällt ist, dass du 6 Buchstaben zufällig erzeugst. Was aber wenn man aus diesen 6 Buchstaben gar kein Wort bilden kann? Ich würde an deiner Stelle die Textdatei mit den Wörtern auslesen und dann die Buchstaben eines Wortes zufällig ausgeben lassen.
Delphi-Quellcode:
Grüße ddcool
var
TextDatei: TStringList; wort: String; i: Integer; begin TextDatei := TStringList.Create; TextDatei.LoadFromFile('Datei.txt'); randomize; wort := TextDatei.Strings[random(TextDatei.Count-1)]; for i := 0 to Length(wort)-1 do begin randomize; writeln(wort[random(Length(wort)-1)]; // Hier musst du dir noch ausdenken, wie du es realisierst, // dass ein Buchstabe nich zweimal genommen wird. end; TextDatei.Free; end; |
Re: [Anfänger] Wortliste auf einen String überprüfen
solltest auch auf klein-/GROSSSCHREIBUNG achten, denn das und DAS oder Das ist was anderes. für die bildschirmsteuerung, würd ich mir noch die ANSI Escapesequenzen ansehen, oder 'ne nachgebaute CRT unit.
@himitsu: fände es nicht so toll, wenn bei eingabe jedes buchstabens die gesamte wortliste neu durchsucht werden sollte, dies betrifft sowohl kleine als auch grosse wortlisten. bei kleinen wäre wohl 'ne stringlist von vorteil, für grösse, bräuchte man schon inkrementelle verfahren und 'ne spezielle datenstruktur, damit das effizient laufen kann. <HTH> GG |
Re: [Anfänger] Wortliste auf einen String überprüfen
danke für die Antworten bisher! werd mal sofort testen
@ddcool Ich hatte es eigentlich so geplant, dass man sich 6 neue Buchstaben geben kann , wenn man nicht mehr weiter kommt aber dafür dann Punkte abgezogen werden! mfg |
Re: [Anfänger] Wortliste auf einen String überprüfen
Und wenn du den Lehrer wirklich beeindrucken willst, dass implementierst du eine Binärsuche. ;)
|
Re: [Anfänger] Wortliste auf einen String überprüfen
Zitat:
geben würde wenn es möglich gewesen wäre aus den Buchstaben ein Wort zu bilden. Grüße Klaus |
Re: [Anfänger] Wortliste auf einen String überprüfen
Zitat:
Grüße ddcool |
Re: [Anfänger] Wortliste auf einen String überprüfen
@grenzgaenger: es ist für die Schule, da darf man doch auch mal etwas rumspielen und muß nicht gleich alles extrem optimalisieren :angel2:
außerdem wird bestimmt die Wortliste nicht extrem groß sein. vorschlag: - Buchtstaben per Zufall bestimmen - schauen ob mindestens ein Wort zu bilden ist - wenn nicht, dann neue Buchstaben wählen und wieder prüfen - dann würde es bestimmt schön sein, wenn auch abhängig von der Anzahl möglicher Antworten die Punkte bestimmt würden langes Wort = mehr Punkte und viele mögliche Lösungen = weniger Punkte |
Re: [Anfänger] Wortliste auf einen String überprüfen
so danke schonmal ich habe es soweit hinbekommen, dass er erkennt ob das Wort in einer liste drinn ist oder nicht^^ *stolzsei*
doch das Problem besteht weiterhin, dass es manchmal keine Wörter gibt das von himitsu würde ich ja gerne übernehmen allerdings müsste das Programm dann ja alle Kombinationen der 6 Buchstaben durchprobieren und gucken ob diese in der Wortliste vorhanden sind! Hab darüber schon ein bisschen was im Forum gefunden - Permutation ?? wenn ja ist mir das glaube ich für den Anfang doch ein bisschen kompliziert und ich weiß auch nicht, ob das nicht sogar ein bisschen lange dauert... werde versuchen mal ddcools Lösung zu dem Problem zu versuchen. Wenn sonst noch jemand eine Idee hat^^...... mfg P.S.Edit: achja das mit den verschieden Punkten pro langes oder kurzes Wort hatte ich natürlich auch vor ist auch im original so! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz