![]() |
String.Grid- Schulprojekt
Hi!
Ich bin neu im Forum und möchte euch ersteinmal alle begrüßen! Aber nun auch schon mein erstes Problem:
Delphi-Quellcode:
diesen Quelltext möchte ich nun so umgestalten das ich in jeder Spalte alle Zahlen vorfinde, zufällig angeordnet und keine doppelt. Mhh... und ich hab jetzt gerade keine Idee! Kann mir eventuell jemand helfen?
procedure TForm1.BitBtn2Click(Sender: TObject);
var i,nummer:byte; begin randomize; //Zufallsgenerator initialisieren i:=0; repeat inc(i); repeat nummer:=random(8)+1; //Zahl zwischen 1 und 8 würfeln until stringgrid1.cells[1,nummer]<>''; stringgrid1.cells[2,i]:=stringgrid1.cells[1,nummer]; //inSpalte 2 kopieren repeat nummer:=random(8)+1; until stringgrid1.cells[2,nummer]<>''; stringgrid1.cells[3,i]:=stringgrid1.cells[1,nummer]; repeat nummer:=random(8)+1; until stringgrid1.cells[3,nummer]<>''; stringgrid1.cells[4,i]:=stringgrid1.cells[1,nummer]; until i=8; end; Danke! |
Re: String.Grid- Schulprojekt
Hallo, willkommen in der DP. Ein paar Gedanken zu Deinem Problem:
1. Randomize sollte einmalig im Programm aufgerufen werden (z.B. OnCreate). 2. Für die erste Spalte ist das noch einfach (Zufallszahl zwischen eins und acht) 3. Bei den nächsten Spalten dasselbe, allerdings mit der Zusatzbedingung: Zahl darf in den Vorgängerspalten noch nicht enthalten sein, Du musst also das "until" jeweils erweitern. ;) Ich hoffe, Dir weitergeholfen zu haben. |
Re: String.Grid- Schulprojekt
Hi,
ich hoffe, ich habe die Aufgabe richtig verstanden. Ist es richtig, dass in jeder Zeile des Stringgrids alle Zahlen von 1 bis 8 zufällig angeordnet werden sollen? Mein Ansatz dazu wäre dieser: (Pseudocode)
Delphi-Quellcode:
Mit der Variable Zahl kannst du dann weiterarbeiten (z.B. in das Stringgrid schreiben).
var
schon_gezogen: set [1..8] of integer; Zahl: integer; ... schon_gezogen := []; for i := 1 to 8 do begin repeat zahl := random(8)+1; until not (Zahl in schon_gezogen); schon_gezogen := schon_gezogen + [zahl]; end; ... |
Re: String.Grid- Schulprojekt
Ahh...danke! D.h. ich muss also für das Until eine Bedingung erstellen die die Zahlem mit der Vorgängerspalte vergleicht!? Mhh na gut...wenn jemand noch irgent einen Einfall hat währe ich sehr dankbar, da ich den kleinen "Psyeudotext" nich so richtig zum laufen bringe...
PS: Das ganze is eigentlich dazu da um Bilder zufällig in image Feldern anzuzeigen,um später daraus Memory zu erstellen. Das soll meine Info Abschlussarbeit von der 11´ten werden. Bis nächsten Freitag...ohoh... trotzdem danke!! |
Re: String.Grid- Schulprojekt
Ahh...Hallo!
O.K. jetzt läuft das erstmal, nun kann ich 12 Bilder auf 12 Imgae Feldern zufällig verteilen! Super. Naja fast....jetzt muss ich diese 12 ausgewählten Bilder nochmal anzeigen lassen (wie gesagt, memory ich brauche alle Bilder zweimal...=) Da hab ich mir nun so gedacht ich brauchte ein ImageFeld wie z.B: (Pseudocode=):
Delphi-Quellcode:
Und ich werde aus der Delphi- Hilfe net so richtig schlau! Kann mir jemand helfen?? Danke!
image(jetzt die Variable, die die Nummer des Imagefeldes bestimmt).Picture.LoadFromFile(datei);
... |
Re: String.Grid- Schulprojekt
Hi,
ich würde die Bilder lieber in eine ![]() ![]() |
Re: String.Grid- Schulprojekt
Danke! Hab ich nun auch gelöst. Hab mich aber doch für die stringgrid variante entschieden, läuft so sehr gut. Jetzt hab ich alle 12 bilder zweimal auf 24 bildflächen. Jetzt muss ich sie ja noch unter einander verknüpfen, weis jemand wie man nun per 24 buttons das ganze untereinander verknüpfen kann, mit einer repeat schleife, oder so?! Danke!
|
Re: String.Grid- Schulprojekt
Wozu brauchst du denn auf einmal Buttons? Ich dachte, du nimmst das Stringrid.
Wenn du es mit Buttons (am besten mit TBitBtn, diese Komponente kann ein Bild anzeigen) machen willst, man das Stringrid also nicht sieht, würde ich ein zweidimensionales Array of TBitBtn vorschlagen. Den "Wert" des feldes, also das angezeigte Bild in Form einer ID, kannst du ja im "Tag"-Attribut des BitBtns unterbringen. Um zu prüfen, ob die richtigen Felder angeklickt wurden, brauchst du dann nur noch das Array Feld für feld durchzugehen und die "Tag"-Attribute zu vergleichen. Ich denke, das bekommst du hin :wink: |
Re: String.Grid- Schulprojekt
Hi!
Ahh also wenn ich das ricjtig verstehe kann ich BitBtn auch zufällig it Bildern belegen? Ich dachte immer die Bilder muss ich richtig "in den Button" laden, also mit dem OI. Mhh also wenn das geht war je meine ganze arbeit mit den stringgrids umsonst. Mhh ... also ich versuche es mal! Bye THX! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz