Einzelnen Beitrag anzeigen

Bausch

Registriert seit: 7. Jan 2010
8 Beiträge
 
#1

Zwei Fragen zum ersten Programm

  Alt 7. Jan 2010, 16:39
Hey Leute,
ich programmier gerade mit Delphi 6 mein erstes richtiges Programm, sollte so ein Monopoly-Verschnitt werden^^.
Aufjedenfall komme ich bei zwei Problemen nicht weiter:
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.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Wuerfel2:=1;
end;

procedure TForm1.BtWuerfelClick(Sender: TObject);
var i:integer;
begin
For i:=1 To 16 Do
      begin
      Felder[i].Visible:=false;
      end; //alle Felder werden unsichtbar

Wuerfel1:=random(6)+1;
    aktFeld:= Wuerfel1 + Wuerfel2 ;
    Felder[aktFeld].Visible:= true;
    Wuerfel2:= aktFeld;

    If (aktFeld > 16)
        then
           begin
           aktFeld:=aktFeld - 16;
           Felder[aktFeld].Visible:= true;
           Gekauft[aktFeld].Visible:= false;
           aktBetrag:= aktBetrag + 100; //Geh über Los(+100)
           FEGeld1.Value:= aktBetrag;
           end ;

...
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?

2. Dass man Felder kaufen kann, habe ich mittlerweile auch implementiert (ein Gekauft-Feld wird dann sichtbar). Nun arbeite ich daran, dass der Spieler bezahlen muss, wenn er wieder auf dieses Feld kommt. Das ist leider ein bisschen schwierig, da ich praktisch mit Gekauft[aktFeld].Visible:=true arbeite (Notiz: das Array besteht aus Images), und hier solche Verzweigungen a la If (Gekauft[aktFeld].Visible:=true) then... nicht funktionieren. 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?

Ich hoffe ihr könnt mir helfen, wie gesagt: Mein erstes Programm^^. Seid also nicht böse, wenn das ein oder andere doof erscheint ;D
  Mit Zitat antworten Zitat