Entwickler-Ecke
Sonstiges (Delphi) - Große Straße (Kniffel) auswerten???
Snippy - Mo 04.08.03 14:40
Titel: Große Straße (Kniffel) auswerten???
Ich code gerade ein Kniffel für 3 Spieler und stehe nun vor dem Problem der großen Straße!
Ich habe 5 Zufallszahlen und wenn da eine Große Straße zu erkennen ist, dann soll ein Label die Punktzahl 40 anzeigen!
So weit so gut, aber wie mache ich es, dass ne große Straße erkannt wird, die ja auch so aussehen kann: 5,3,4,2,1
Hoffe ihr könnt mir da helfen^^
Cu und THX
teebee - Mo 04.08.03 15:05
Du musst auf jeden Fall mal Dein Array mit den Würfeln sortieren. (Stichwort Bubblesort - ist zwar sehr langsam, dafür sehr einfach und bei sechs Würfeln absolut ok).
Dann könntest Du aus den Würfel-Feldern einen String basteln und schauen, ob Du '12345' bzw. '23456' darin findest:
Delphi-Quelltext
1: 2:
| For i := 0 to 5 Do TestString := TestString+IntToStr(Würfel(i)); GrosseStrasse := (Pos('12345',TestString)>0) Or (Pos('23456',TestString)>0); |
Ciao, teebee
Snippy - Mo 04.08.03 15:56
Uff!
Sorry aber das schnall ich ned^^
Cu und danke
teebee - Mo 04.08.03 16:20
Was genau verstehst Du nicht? Wie hast Du denn Deine Zufallszahlen bisher organisiert?
Ciao, teebee
Nightmare_82 - Mo 04.08.03 17:20
Wenn du einen Integer Array hast, machst du es folgendermaßen:
1. Sortieren und dann so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function grosseStrasse : Boolean; VAR Count : Integer; Diff : Integer; begin Count:= 1; Result:= false; for i:= low(arr) to high(arr)-1 do begin Diff:= arr[i+1] - arr[i] ; if Diff = 1 inc(Count) else if Diff <> 0 Count:= 1; if Count = 5 then Result:= true; end; |
Für die kleine Straße müßtest du nur die 5 durch ne 4 ersetzen.
Habs nicht getestet sollte aber gehn.
-delphin- - Mi 01.06.05 22:13
Also ich habe diesen Code hier zu einer kleinen Straße geschrieben, der sich natürlich auf eine große erweitern lässt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| i:=1; i:=i+1; for i:=1 to 3 do If (a=i) or (b=i) or (c=i) or (d=i) or (e=i) and (a=i+1) or (b=i+1) or (c=i+1) or (d=i+1) or (e=i+1) and (a=i+2) or (b=i+2) or (c=i+2) or (d=i+2) or (e=i+2) and (a=i+3) or (b=i+3) or (c=i+3) or (d=i+3) or (e=i+3) then SGUnten.Cells[0,3]:='30'; |
Nur leider sagt er immer, daß es eine kleine Straße ist, egal welchen Ausfall die Würfel haben, auch bei 3-3-4-4-4 z.b.
Woran liegt das und wie kann ich es beheben? Weil normalerweise müsste er die Schleife durchmachen, bis i=3 ist, dann die erste Zeile als true abstempeln (3 ist ja dabei), dann die zweite Zeile auch (i+4 -> 4 ist dabei -> true), aber dann müsste er false sagen, weil 5 (i+2 -> 3+2) ja gar nicht dabei ist. Trotzdem kommt ne kleine Straße bei heraus. Ausnahme ist 0-0-0-0-0 (Startwürfel), da passiert nix.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!