Galgenmännchen in Lazarus

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Julix
Beiträge: 4
Registriert: Fr 17. Feb 2017, 16:02

Galgenmännchen in Lazarus

Beitrag von Julix »

Hallo,
ich würde gerne Galgenmännchen in Lazarus schreiben.
Habe auch schon ein bisschen was geschafft.
Das bisherige Programm kann mithilfe einer if-anweisung schon überprüfen ob ein gesuchter Buchstabe in einem String (zu erratendes Wort) ist.

Code: Alles auswählen

for i:=1 to length(s) do
  begin
 
  if s[i]=ges then ausgabe:=ausgabe+ges else ausgabe:=ausgabe+'X';
 
  end;                                                           

Die Ausgabe sieht dann so aus:
Gesuchte Wort:'Hallo'
Buchstabe:'a'
Ausgabe:'XaXXX'

Mein Problem ist ich weiß nicht, wie man ich es hinbekommen soll, dass in der nächsten 'Runde' dann auch der Buchstabe, den ich schon erraten habe berücksichtigt wird.
Bsp.
Wenn ich in der nächsten Runde ein 'l' suche wird ausgegeben:
XXllX
Es soll aber das 'a' aus der Runde davor berücksichtigt werden:
XallX

Danke im Voraus

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Galgenmännchen in Lazarus

Beitrag von af0815 »

Ich würde sagen, du musst dir die Buchstaben die schon richtig erraten wurden speichern.

Eine Möglichkeit ist, die 'ausgabe' String mit X zu machen, der genau solange wie dein gesuchtes Wort inj 's' ist. Wenn ein Buchstabe richtig ist, so tauscht du dort das X gegen den Buchstaben aus und zeigst diesen String dem Benutzer wie bisher an.

Initialisierung einmalig bei Beginn der Runde

Code: Alles auswählen

 
for i:=1 to length(s) do
  begin
    ausgabe[i]:= 'X';
  end;
 


Abfrage und austausch

Code: Alles auswählen

 
for i:=1 to length(s) do
  begin
     if s[i]=ges then ausgabe[i] := ges;
  end;
 


und damit du weisst ob das Spiel zu ende ist, braucht man dann nur 's' mit 'ausgabe' vergleichen. Sind beide gleich so bist du fertig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Julix
Beiträge: 4
Registriert: Fr 17. Feb 2017, 16:02

Re: Galgenmännchen in Lazarus

Beitrag von Julix »

Ja danke erstmal aber soweit hatte ich auch schon einmal gedacht.
Bekomme dann immer nur eine Fehlermeldung:
'Incompatible types: got "AnsiString" expected "Char".'

Wenn ich dann ges als Char bei den Variablen angeben will gibt er mir eine Fehlermeldung in der Zeile aus, wo ich ges einlesen will.
Also muss ich irgendwie ges von einem String in einen Char umwandeln sofern das geht.

af0815 hat geschrieben:Abfrage und austausch

Code: Alles auswählen

 
for i:=1 to length(s) do
  begin
     if s[i]=ges then ausgabe[i] := ges;
  end;
 



Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Galgenmännchen in Lazarus

Beitrag von theo »

Julix hat geschrieben:ich würde gerne Galgenmännchen in Lazarus schreiben.

Lügen haben kurze Beine. ;-)

Julix hat geschrieben:Danke im Voraus

Immerhin schreibst du "im Voraus" nicht mit zwei "r".
Danke dafür.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Galgenmännchen in Lazarus

Beitrag von af0815 »

Julix hat geschrieben:Wenn ich dann ges als Char bei den Variablen angeben will gibt er mir eine Fehlermeldung in der Zeile aus, wo ich ges einlesen will.
Also muss ich irgendwie ges von einem String in einen Char umwandeln sofern das geht.


Vielleich hilft dir der http://wiki.freepascal.org/Character_and_string_types/de link. Dort mal mit ShortString ansehen. Siehe auch http://wiki.freepascal.org/Shortstring/de

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten