AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Problem mit Schleifen/Array/??? - Brettspiel Mastermind
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Schleifen/Array/??? - Brettspiel Mastermind

Ein Thema von ka8578 · begonnen am 15. Okt 2020 · letzter Beitrag vom 19. Okt 2020
 
ka8578

Registriert seit: 15. Okt 2020
1 Beiträge
 
Delphi 10.3 Rio
 
#1

Problem mit Schleifen/Array/??? - Brettspiel Mastermind

  Alt 15. Okt 2020, 18:27
Hallo liebes Forum,

ich bin neu hier, (fachfremd) in Informatik unterrichtender Lehrer und bastele gerade an einem Projekt für meinen Wahlpflichtkurs im Jahrgang 10. Ich möchte das Brettspiel "Mastermind" als Smartphone-App umsetzen und stecke nun seit zwei Tagen fest. Leider weiß ich nicht mal, welche die passende Überschrift für mein Problem ist (siehe Titel). Sorry, hier jedenfalls die Infos ...

Ziel d. Spiels:
Das Programm generiert fünf Zufallsfarben, der Spieler muss sie mit möglichst wenigen Versuchen erraten. Er erhält nach jedem Versuch eine Rückmeldung, wie viele richtige Farben er hatte etc. Einen Screenshot des (noch im Rohbau befindlichen) Layouts habe ich angehängt.


Mein Problem:
Ich nutze zur Darstellung 60 TRectangles (12 Reihen mit je 5 Stück), welche dann mit einer Farbe befüllt werden. Ich wollte es vermeiden, 60 Zeilen Code nach dem Schema
Delphi-Quellcode:
Form1.Rec1_1.Fill.Color := TAlphaColorRec.Blue;
Form1.Rec1_2.Fill.Color := ...
...
Form1.Rec12_5.Fill.Color := ... ;
zu schreiben. Ich habe mir gedacht, dass das auch einfacher und effektiver gehen muss und es mit einer for-Schleife (und Arrays) nach folgendem (erstmal vereinfachten) Schema probiert:
Delphi-Quellcode:
...
// Array-Deklaration:
  rechteckenamen: array[1..5] of String;
  rechtecke: array[1..5] of TRectangle;
...
// Befüllen des 1. Arrays (Namen d. Rectangle zunächst als string):
  for I := 1 to 5 do
    rechteckenamen[I] := 'Form1.Rec1_'+inttostr(I) ;

// zum Testen die Namen auf nem Label anzeigen (ja, es klappt!)
  Form1.LbTest.Text := string(rechteckenamen[1])+#13#10 +
    string(rechteckenamen[2])+#13#10 +
    string(rechteckenamen[3])+#13#10 +
    string(rechteckenamen[4])+#13#10 +
    string(rechteckenamen[5])+#13#10 ;

// Befüllen d. 2. Arrays (Umwandlung von string nach TRectangle)
  for J := 1 to 5 do
    rechtecke[J] := TRectangle(rechteckenamen[J]) ;

// wieder Testen (ja, es klappt)
  Form1.LbTest2.Text := string(rechtecke[1])+#13#10 +
    string(rechtecke[2])+#13#10 +
    string(rechtecke[3])+#13#10 +
    string(rechtecke[4])+#13#10 +
    string(rechtecke[5])+#13#10 ;
Soweit funktioniert alles. Sobald ich aber versuche, die im 2. Array gespeicherten und korrekt benannten Rechtecke mit einer Farbe zu versehen (und z.B. die folgende Code-Zeile hinzufüge) ...
  rechtecke[1].Fill.Color := TAlphaColorRec.Blue; ... dann bekomme ich von RAD Studio zwar keine Fehler angezeigt, aber beim Ausführen des Programms (und Klick auf den entsprechenden Button) eine Fehlermeldung "Zugriffsverletzung bei Adresse ... in Modul ..." (siehe Anhang) angezeigt.

Ich bin hier irgendwie mit meinem Latein (bzw. meinen bescheidenen Programmierkenntnissen) am Ende und wäre daher sehr dankbar über ein paar Tipps ...
  • ... wo oben mein Fehler liegt,
  • ... bzw. ob ich komplett auf dem Holzweg bin und mein Vorhaben so wie beschrieben gar nicht realisierbar ist,
  • ... oder es sowieso ganz anders viel besser/einfacher ginge.
Ich hoffe, ich habe nichts Wichtiges vergessen.
Vielen Dank schonmal und viele Grüße

Christoph

PS.: Ich habe diesen Post nach bestem Wissen und Gewissen erstellt. Auch die hier im Forum zu findenden Beiträge zum Brettspiel Mastermind haben mir bei meinem Problem leider nicht weitergeholfen.
Angehängte Grafiken
Dateityp: png screenshot-mastermind.png (15,7 KB, 27x aufgerufen)
Dateityp: png screenshot-mastermind-fehler.png (3,0 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz