Autor Beitrag
OmNiBrAiN
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 08.05.03 14:55 
Hallöchen
Ich habe folgendes Problem: Ich will eine Art Kniffel programmieren und suche eine Möglichkeit, die 6 Variablen zu vergleichen (also dass das Programm erkennt, dass z.b. 3 von den gewürfelten Zahlen gleich sind), ohne für jeden möglichen Fall eine einzelne if-Anweisung schreiben zu müssen (das wären dann nämlich ne ganze Menge ^^)

gibt es da eine elegantere Lösung?
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 08.05.03 15:11 
Hallo,

wie währe es mit dem ansatz:
Du erstellst ein 6-Elementiges Array vom Typ Byte. Für jede mögliche Augenzahl ein Element.
Nun setzt du alle 6-Felder auf 0 (null). Dann wüfelst du und läufst di ergebnisse der Würfel in einer Schleife ab. Jedesmal wenn du nun eine 1 Findest erhöhst du den Wert des ersten Array Feldes um einen bei einer zwei das zweite Feld usw.
So hast du nachdem du die Würfel überprüft hast, eine Statistik welche Aufenzahl wie oft gewurfen wurde. Mit dier kannst du weiter arbeiten.

Gruß
Klabautermann
OmNiBrAiN Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 08.05.03 15:20 
das klingt doch schon super, danke :]
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 08.05.03 15:23 
Ich würde eigentlich eine Funktion schreiben, die mir die Anzahl der Würfel, die einen bestimmten Wert haben, ermittelt.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
function AnzahlWuerfelMitWert(Wert:Byte):Byte;
begin
  Result:=0;
  for i:=1 to WuerfelAnzahl do
    if Wuerfel[i]=Wert then
      Inc(Result);
end;


Um nun herauszufinden, ob irgendeine Augenzahl z.b. dreimal vorkommt, einfach die Werte 1-6 durchgehen und abbrechen, wenn so etwas gefunden.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function XMalGleicheWuerfe(X:integer):Boolean;
var i:Byte;
begin
  for i:=1 to 6 do
    if AnzahlWuerfelMitWert(i)=X then
    begin
      Result:=True;
      exit;
    end;
end;


Cu,
Udontknow
OmNiBrAiN Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 08.05.03 15:42 
ebenfalls interessant :>
ich werde mal sehen, wie ichs umsetze