Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [Anfänger] Wortliste auf einen String überprüfen (https://www.delphipraxis.net/113263-%5Banfaenger%5D-wortliste-auf-einen-string-ueberpruefen.html)

JonasxD 5. Mai 2008 13:17


[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:
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.
Ihr müsst nur mal meinem Gehirn nen Anstoß geben^^

bis dahin mfg Jonas

DeddyH 5. Mai 2008 13:21

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.

Luckie 5. Mai 2008 13:22

Re: [Anfänger] Wortliste auf einen String überprüfen
 
Lade die Datei mit der Wortliste ein eine Delphi-Referenz durchsuchenTStringListe und gucke mit der Methode IndexOf von TStringList, ob das Wort in der Liste vorhanden ist.

himitsu 5. Mai 2008 13:25

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.

ddcool 5. Mai 2008 13:37

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:
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;
Grüße ddcool

grenzgaenger 5. Mai 2008 13:43

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

JonasxD 5. Mai 2008 13:47

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

Luckie 5. Mai 2008 13:49

Re: [Anfänger] Wortliste auf einen String überprüfen
 
Und wenn du den Lehrer wirklich beeindrucken willst, dass implementierst du eine Binärsuche. ;)

Klaus01 5. Mai 2008 13:49

Re: [Anfänger] Wortliste auf einen String überprüfen
 
Zitat:

Zitat von JonasxD
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

Ich würde es aber nur für sinnvoll halten, wenn es den Punktabzug nur dann
geben würde wenn es möglich gewesen wäre aus den Buchstaben ein Wort zu bilden.

Grüße
Klaus

ddcool 5. Mai 2008 13:55

Re: [Anfänger] Wortliste auf einen String überprüfen
 
Zitat:

Ich würde es aber nur für sinnvoll halten, wenn es den Punktabzug nur dann
geben würde wenn es möglich gewesen wäre aus den Buchstaben ein Wort zu bilden.
Ja genau das, bei zufälligen Buchstaben kann es ja sein, dass man sich viel zu häufig neue Buchstaben hohlen muss um das Wort zu vervollständigen. Das würde unnützen Punkteabzug geben, weil die warscheinlichkeit, dass ein Buchstabe vorkommt liegt bei nur 26 Buchstaben schon bei 1/26 oder 6/156.

Grüße ddcool


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Seite 1 von 2  1 2      

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