![]() |
Kniffel
Ich will kniffel programmieren. ich hab auch schon fast alles fertig. außer dei große und die kleine straße. die würfel sind TLabels. wie schauff ich es jetzt dass er erkennt wann es ne kleine straße is??? (ich denk es weiß jeder was ne kleine oder auch große straße bei kniffel is)
thx schon mal mfg hellwalker |
Hi,
Weiß es jetz nich ganz auswendig, aber ne kleine Straße sind doch 4 Würfel deren Zahlen immer um 1 größer sind als der vorherige Würfel, oder? Dann gibts ja drei Möglichkeiten für ne kleine Straße. 1-4, 2-5, 3-6. Oder? Heißt, dass 3 und 4 schonmal in jeder kleinen Straße vorkommen (aber wie gesagt, bin mir nich mehr ganz sicher). Musst also (wenn du die Würfelzahlen ausschließlich auf Labels anzeigst) 4 verschiedene If- Abfragen machen. Einmal musst du abfragen, ob zwei der Labels die Zahlen 3 und 4 anzeigen. Wenn das gegeben ist, müssen entweder noch die Zahlen 1 und 2, 2 und 5, oder 5 und 6 angezeigt werden. Das müsstest du dann alles mit If- Abfragen machen. Was anderes außer If- Abfragen würd mir jetz grad auch nich einfallen. Du könntest dir natürlich sonen Typen wie TShiftState machen, den du dann z.B. TZahl nennst und dann strukturell so aufbaust wie Shiftstate. Dann könntest du Abfragen machen wie
Delphi-Quellcode:
Isn Bissken kürzer als die LabelCaptions abzufragen und miteinander zu vergleichen.
if (sechs in Zahl) and (fuenf in Zahl) then
Und mit der großen Straße würds dann ja ganz ähnlich ablaufen. Bis dann, S - tefano |
des stimmt schon
aber wie mach ich es dass er praktisch abfragt ob in irgendeinem der 5 label ne 3 oder 4 is? oder muss ich da für jedes label ne neue if abfrage machen??? wie müsste ich es schreiben dass er schaut ob in label1, label2,label3, label4 oder label5 ne 3 oder 4 is? könnte mir einer vielleicht den code für diese zeile schreiben??? |
Hallo,
wenn die Labels noch "durchnummeriert" sind, dann kommst Du da mit FindComponent weiter. Ansonsten mit if's und " if StrToint(Label1.Caption) = 3 then ". Grüsse, Daniel :hi: |
und wie funktioniert findcomponent??? (sry aba ich hab da echt keine ahnung)
|
Hallo,
das Du noch nicht weisst wie es geht ist ja nicht schlimm, aber das Du hier fertigen Code erwartest schon! Es gibt hier eine Suche, FindComponent wurde schon sehr fot behandelt. Ausserdem hat Deine Tastatur dir F1-Taste, damit erreicht man die OH von Delphi. Grüsse, Daniel :hi: |
Moin !
Ich könnte mir vorstellen das das mit sets funktionieren würde ! |
Hi,
Achja, so hieß das. Wieder am Beispiel von TShiftState (oben erwähnt):
Delphi-Quellcode:
Das sagt die Delphi- Hilfe dazu. Sowas könntest du dir doch dann auch mit deinen Zahlen machen. Prüfen kannstes dann wie oben beschrieben.
type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
Allerdings... was ist wenn eine Zahl mehrmals da ist? Dann bräuchte man von jeder Zahl 6 durchnummerierte Elemente in dieser Struktur. Also z.B. fuenf1, fuenf2, fuenf3, fuenf4, fuenf5 und fuenf6. Wenn du dann deine Zahlen ermittelt hast machst du diese dann von 1 bis 6 voll. Also wenn z.B. der dritte und der fünfte Würfel ne Zwei zeigen, dann musst du zwei1 und zwei2 in das set schreiben. Dementsprechend müsste dann die Prüfung auch etwas abgewandelt werden... In ein Set schreiben kannst du (wenn ich mich nicht irre) so:
Delphi-Quellcode:
Bin mir nich ganz sicher ob es so richtig ist, aber so hab ichs in Erinnerung.
//Am Beispiel der Buttons von Messagedlg
//Erstmal die Deklaration des Sets type TMsgDlgBtn = (mbNone, mbOk, mbCancel, mbYes, mbNo, mbAbort, mbRetry, mbIgnore); TMsgDlgButtons = set of TMsgDlgBtn; //so, jetz das Set "vollmachen" procedure SchreibZahlenInSet; var sett: TMsgDlgButtons; begin //am Beispiel mit den zwei Zweien oben; und nochn paar andere Zahlen rein sett:= [zwei1, zwei2, eins1, drei1, drei2, fuenf1]; //Gucken ob ne 6 im Set is if (sechs1 in sett) then showmessage('juhu') else showmessage('Gerade erst das Set gesetzt und jetz nach ner 6 suchen?! Tses...'); end; Und auf diese Weise musst du halt dein Set nach dem Generieren der Zufallszahlen mit Werten füllen, und dann später auf Zahlen abfragen. Das is ja eigentlich nur Schreibarbeit. Bis dann, S - tefano |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 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