|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Blindtext erraten
|
Seitenanfang |
Hey @all! Vielleicht kann mir ja der ein oder andere helfen, ich hoffe! ;-) Also ich sitze gerade an einem kleinen Perl Prog, dazu muss ich sagen, dass ich absolut geringfügige Kenntnisse in Perl habe. Nun gut, diese kleine Ding soll einen Text aus einer Datei einlesen, macht es auch, dann soll der Benutzer die einzelnen Wörter dieses Textes erraten, sofern ein Wort erraten wurde, soll das wieder ausgegeben werden und die die restlichen Wörter sollen für die Buchstaben jeweils punktiert dargestellt werden, klappt auch ganz gut. Nur dann soll es aber bei der nächsten Abfrage, dass zuvor richtig erratene Wort speichen und das neue Wort, wenn es richtig ist, mit dem anderen Wort zusammen ausgeben und die restlichen Worte, die noch nicht erraten wurden, wieder punktiert wieder geben. Hier mal der Code, den ich bisher habe: Ach ja, das Script muss auch nur lokal funktieren! Code:open (SPIEL, "SPIEL.txt") || die "shit: $!"; $index=0; # Anzahl der Zeilen in der einzulesenden Datei while (<SPIEL>) { #Solange Zeilen aus der Datei gelesen werden chomp; #Zeilenumbruch entfernen pro Zeile @txtzeile[$index] = $_; # Zeilen Array belegen mit ausgelesener Zeile #print "$txtzeile[$index]\n"; @codiert[$index] = @txtzeile[$index]; $codiert[$index] =~tr/[a-zA-Z]*/./; #print "$codiert[$index]\n"; $index++; #Zeilenindex erhoehen } close(SPIEL); #Schließe die Datei $index--; #Zeilenindex um 1 zurück stellen, weil Index mit 0 anfaengt $index2=0; #Anzahl der Abfragen (Worteingabe) do { #gehe Schleife durch bis fast alle Woerter gefunden worden sind print "Bitte gib hier dein Wort ein:\n"; $wort = <STDIN>; #Lese eingegebenes Wort ein chomp($wort); #Zeilenumbruch Wort entfernen $index2++; #Abfrage hochzaehlen for ($z=0; $z<=$index; $z++){ #Fuer jede Zeile des ausgelesenen Textes @zeile = split ( / /,$txtzeile[$z] ); #zerlege die Zeile in Woerter for ($w=0; $w<=$#zeile; $w++){ #Fuer jedes Wort einer Zeile if($zeile[$w] =~/[^$wort][^sne]/){ #Wenn es nicht das gesuchte Wort ist (auch + s/n/e) $zeile[$w] =~tr/[a-zA-Z]*/./; #dann ersetze Wort mit Punkten } print "$zeile[$w] "; #gebe das Wort der Zeile aus } print "\n"; #Gebe ein Returnzeichen aus } }while($index2<=2); #ueberpruefe, ob fast alle Woerter gefunden wurden # Die while ist erstmal bis 2 Versuche begrenzt, soll sich natürlich aendern....
Ich hoffe, es noch leserlich wegen der Kommentare...ich schau gleich mal. Ich hoffe, mir kann da jemand helfe, schon mal ein Dank an alle, die es versuchen und tun werden....bin nämlich schon am verzweifeln, hatte natürlich schon einige andere Sachen ausprobiert, aber leider nischt... Viele Grüße! Nashey
Datum: 28.01.2008-22:53

|
|

|

|

|
 |

|

|
|