Zufalls-Bilderzuweisung
-
Hi Leute,
habe mir vorgenommen Memory als Übung mit dem C++ Builder zu programmieren (nein keine Schulaufgabe).
Ich bin nun soweit ich besitze ein Array "Karten", es hat 16 Elemente, die Elemente sind zufällig in einem Bereich 1-8 zugewiesen. Jede Zahl kommt 2 Mal vor (Paare).
Sprich z.B.:
Karten[16] = 2,3,1,2,3,4,1,5,7,8,6,7,8,5,4,6 (srand wurde benutzt)
Jetzt komme ich aber zu dem Problem mit der Bilderzuweisung, wie löse ich das am besten. Mein Prototyp funktioniert auch schon, doch die Rechenarbeit ist enorm, ich prüfe jede Möglichkeit mit jedem Image.
z.B.:
if (Karten[0] == 1 || Karten[0] == 2) Image1->Picture->LoadFromFile("img/Bild1.jpg"); if (Karten[0] == 3 || Karten[0] == 4) Image1->Picture->LoadFromFile("img/Bild2.jpg"); if (Karten[0] == 5 || Karten[0] == 6) Image1->Picture->LoadFromFile("img/Bild3.jpg"); if (Karten[0] == 7 || Karten[0] == 8) Image1->Picture->LoadFromFile("img/Bild4.jpg"); if (Karten[0] == 9 || Karten[0] == 10) Image1->Picture->LoadFromFile("img/Bild5.jpg"); if (Karten[0] == 11 || Karten[0] == 12) Image1->Picture->LoadFromFile("img/Bild6.jpg"); if (Karten[0] == 13 || Karten[0] == 14) Image1->Picture->LoadFromFile("img/Bild7.jpg"); if (Karten[0] == 15 || Karten[0] == 16) Image1->Picture->LoadFromFile("img/Bild8.jpg"); //================================================================= if (Karten[1] == 1 || Karten[1] == 2) Image2->Picture->LoadFromFile("img/Bild1.jpg"); if (Karten[1] == 3 || Karten[1] == 4) Image2->Picture->LoadFromFile("img/Bild2.jpg"); if (Karten[1] == 5 || Karten[1] == 6) Image2->Picture->LoadFromFile("img/Bild3.jpg"); if (Karten[1] == 7 || Karten[1] == 8) Image2->Picture->LoadFromFile("img/Bild4.jpg"); if (Karten[1] == 9 || Karten[1] == 10) Image2->Picture->LoadFromFile("img/Bild5.jpg"); if (Karten[1] == 11 || Karten[1] == 12) Image2->Picture->LoadFromFile("img/Bild6.jpg"); if (Karten[1] == 13 || Karten[1] == 14) Image2->Picture->LoadFromFile("img/Bild7.jpg"); if (Karten[1] == 15 || Karten[1] == 16) Image2->Picture->LoadFromFile("img/Bild8.jpg"); ...
In dem Prototyp habe ich es noch mit 16 verschiedenen Werten gemacht, das müsste auch mit 8 gehen oder? (Paare)
So sollte in dem neuen eine Schleife durchlaufen die jeweils die Bilder (1.bmp-8.bmp) auf die Image1-16 verteilt, dieses sollte nach Position im Array passieren. Sprich wenn Karten[i] = 3,7,1 so hat Image1->Picture 3.bmp usw. ist das realisierbar, denn ich stoße dabei irgendwie an meine Grenzen.
// Kann ich die 16 Images eigentlich auch als Array erzeugen, sodass ich ihnen über eine Schleife die Werte zuweisen kann?
Kleine Frage damit ich keinen neuen Thread aufmachen muss:
- Wie realisiere ich es das man eine MessageBox mit OK abschliesst und danach mein Programm geschlossen und direkt danach automatisch wieder geöffnet wird, geht das ?Danke schonmal für jegliche Hilfe
Schattenfang
-
Ohne jetzt alles gelesen zu haben (habs eilig): benutze statt tausender if's bitte switch oder wenigstens else vor den if's, dann rattert das Programm nicht noch die restlichen Möglichkeiten durch, wenn eine if-Bedingung mal true war
-
Hallo
Warum benuzt du denn nicht einfach eine for schleife?
Und schau dir mal TImageList an.
wNw
-
Hallo,
also zusammengefasst: Nimm eine for-Schleife, in die du eine switch-Anweisung schreibst. Mit der Schleife durchläufst du das Karten-Array, mit switch weist du die Bilder zu.
Tip noch von mir: erstell' dir vorher einen Zeiger auf das Karten-Array, den du in der Schleife benutzt. Am Besten legst du den Zeiger auf das Ende des Array und dekrementierst dann, das ist ziemlich schnell...
MfG