Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zwei Fragen zum ersten Programm

  Alt 7. Jan 2010, 16:53
Hallo, herzlich Willkommen!

Zitat von Bausch:
1. Hier geht es um das "Runden-drehen". Ich habe 16 Felder momentan, starte beim 1. und springe vom 16. wieder auf das 1., klar wie Monopoly halt. Ich habe das ganze zunächst provisorisch gelöst, indem ich, sobald das aktuelle Feld des Spielers über 16 geht, das ganze minus 16 subtrahiert wird, und er sozusagen von 17-16=1 wieder startet.
[...]
Das dumme ist nur, dass, wenn es in die dritte Runde geht, das [aktFeld] praktisch über 32 geht, das Programm streikt. Ist ja auch klar, da dann das [aktFeld] 17 wär und es dieses nicht gibt. Wie löse ich dieses Problem?
Setze doch das Feld auf 1 anstelle 16 zu subtrahieren. Zum Zählen der Runden kannst du eine separate Variable nutzen. (Edit: Das hier ist Murks, du musst schon subtrahieren)

Delphi-Quellcode:
if aktFeld > 16 then
begin
  aktFeld := 1;
  inc(RundenNum); // oder RundenNum := RundenNum + 1;
end;
Zitat von Bausch:
Kein Boolean-Ausdruck gibt er mir hier aus. Wie könnte ich es nun schaffen, dass er mir irgendwie erkennt, dass des Feld bereits gekauft wurde? Gekauften Feldern eine eigene Variable zuweisen?
Du kannst dafür ein Record anlegen, das ist im Prinzip eine Zusammenfassung mehrerer Variablen.

Delphi-Quellcode:
type
  TFeld: record
    Img: TImage;
    Gekauft: Boolean;
  end;

var
  Felder: array[1..16] of TFeld;
Dann kannst du so darauf zugreifen:

if Felder[aktFeld].Gekauft then Und die Variablen natürlich beim Kaufen setzen etc.

Grüße, Matze

Edit: Das, was Medium geschrieben hat ist natürlich korrekt. So genau habe ich deinen Code nicht angesehen. Dann kommst du evtl. um das Record herum für den Anfang.
Edit 2: Ach jetzt verstehe ich, warum du 16 subtrahierst. Das musst du dann schon machen. ich bin grad bissl durcheinander.
  Mit Zitat antworten Zitat