Autor Beitrag
-delphin-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Fr 03.06.05 08:29 
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+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+1 -> 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.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 03.06.05 13:30 
Probiers mal so:
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+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';

_________________
We are, we were and will not be.
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Sa 04.06.05 09:22 
hm also mit noch einer klammer drum ( insgesamt 3) funktioniert es wenigstens bei 3-4-5-6 ordnungsgemäß. hab das jetzt 3mal geschrieben einmal für i:=i, für i:=2 und i:=3, dann gehts, ist aber umständlich, also wenn jemand noch einen besseren code hat, bin ich auch froh drüber (;
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 04.06.05 09:41 
Sag noch mal bitte genau, was kleine, und was große Strasse ist. Aber folgendes. Hast du nicht in einem anderen Thread nach der Sortierung der Würfel gefragt? Wenn du die Würfel nämlich aufsteigend sortiert hast, dann kannst du das in etwa so machen: (UNd ich hab die Würfel mal in ein Array gespeichert)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
max:=0;
aufsteigendefolge:=0;
for i:=1 to 5 do 
begin
  if würfel[i]+1 = Würfel[i+1] then // der nächste Würfel ist um eins größer
    inc(aufsteigendefolge) // merken, dass die Strasse eins länger ist
  else // die Strasse ist unterbrochen
  begin
    if aufsteigendefolge>max then // hat man eine längere Straße gefunden?
      max:=aufsteigendefolge;
      //und meinetwegen die Zahlen, die die Straße bilden, irgendwie merken, in einem String, einem Zahlenarray, was auch immer
    aufsteigendefolge:=1; // hier fängt dann ja quasi eine neue potentielle Straße an
  end;   
  if max=5 then showmessage('Große Straße');
  if max=4 {oder wars 3?} then showmessage('kleine Straße');
end;

_________________
We are, we were and will not be.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Sa 04.06.05 10:54 
ich würde die Würfel von Anfang an sortieren. Es geht ja nicht nur um kleine/große Strasse. Was ist mit 3er Pasch usw. ? Du wirst an allen Ecken und Kanten eine Sortierung brauchen, außer wenn es keine Figur ergibt bzw. diese schon verbraucht ist und der Wert benötigt wird. Das Problem läßt sich zumindest so weit verkleinern, daß man nur 2 benachbarte Zahlen vergleichen muß. Voraussetzung dafür ist allerdings eine Sortierung. Mache ein Array [1..5] und gucke, daß die Würfel da drin sind. Dann kann man schön übersichtlich die Figuren ermitteln mit for i := 1 to 5 do blabla.

P.S.: sehe gerade Gausi hat ja schon ein Beispiel geschrieben unter meiner Voraussetzung. @Gausi: noch nie gepokert ? Das gehört doch zum Allgemeinwissen. :mahn: :mrgreen:

_________________
Gruß
Hansa