Autor Beitrag
Snippy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mo 04.08.03 14:40 
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

_________________
Carpe Diem!
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
For i := 0 to 5 Do TestString := TestString+IntToStr(Würfel(i));
GrosseStrasse := (Pos('12345',TestString)>0Or (Pos('23456',TestString)>0);



Ciao, teebee
Snippy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 61



BeitragVerfasst: Mo 04.08.03 15:56 
Uff!
Sorry aber das schnall ich ned^^

Cu und danke

_________________
Carpe Diem!
teebee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109


D6 Prof
BeitragVerfasst: Mo 04.08.03 16:20 
Was genau verstehst Du nicht? Wie hast Du denn Deine Zufallszahlen bisher organisiert?

Ciao, teebee
Nightmare_82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 260



BeitragVerfasst: Mo 04.08.03 17:20 
Wenn du einen Integer Array hast, machst du es folgendermaßen:
1. Sortieren und dann so:
ausblenden 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 // Wenn Differenz 1 ist Count erhöhen
      inc(Count)
    else if Diff <> 0 // Wenn Differenz 0 ist bleibt Count gleich
      Count:= 1// ansonsten von vorne anfangen
   if Count = 5 then // Wenn 5 mal ist es eine große Straße
     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-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: 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:

ausblenden 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+1or (b=i+1or (c=i+1or (d=i+1or (e=i+1and
     (a=i+2or (b=i+2or (c=i+2or (d=i+2or (e=i+2and
     (a=i+3or (b=i+3or (c=i+3or (d=i+3or (e=i+3then
     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.