Hilfe bei Schiebe puzzle
-
Hallo zusammen!
Habe angefangen ein Schiebepuzzle in BCB6 zu programmieren.
Hab ein Formular mit 3*3 Images erstellt wobei das 9. Bild wie luft behandelt werden soll da man ja ein leeres Feld zum schieben braucht.Mein Problem ist jetzt folgendes hat einer eine Idee wie ich prüfen kann welches Feld jetzt frei und welche belegt sind.
Hab zwei 2dimensionale Arrays angelegt einmal um jeweils die Top position festzuhalten und eines für die Left pos. zu erfassen.
mfg koRxx
-
da hast du verschiedene möglichkeiten..
du musst das einfach irgendwo abspeichern zB:
- in Tag abspeichern
- ein 2 dimensionales int/bool array, wo du beim leeren feld eine 1 reinschreibst
- wenn das leere image ein bestimmtes bild hat, den pfad prüfen zB: "ImageLeerGrau.bmp"
etc..du musst das einfach irgendwo zwischenspeichern..
-
wenn du wirklich für jedes Bild ein Steuerelement verwendesn willst, dann
verwende doch einfach nur 8. Du kannst dir dann die 9 Positionen speichern
wo ein Bild sein kann und dann verschiebst du die Steuerelemente.Du musst dir einfach eine kleine Tabelle erstellen:
int iX [] = {100, 200, 300}; int iY [] = {100, 200, 300};damit hast du alle Positionen.
um jetzt eine Position abzufragen:bool PosEmpty(int X, int Y) { if ((P1->Top == Y && P1->Left == X) || (P2->Top == Y && P2->Left == X) || (P3->Top == Y && P3->Left == X) || (P4->Top == Y && P4->Left == X) || (P5->Top == Y && P5->Left == X) || (P6->Top == Y && P6->Left == X) || (P7->Top == Y && P7->Left == X) || (P8->Top == Y && P8->Left == X)) return false; return true; }dann kannst du so eine Position abfragen:
if (PosEmpty(iX[0], iY[0])) ShowMessage("Position 0/0 ist leer"); if (PosEmpty(iX[1], iY[0])) ShowMessage("Position 1/0 ist leer"); // ...