Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
 
Delphi XE2 Professional
 
#33

Re: Schulprojekt: Spiel "Domino" programmieren!

  Alt 8. Feb 2010, 12:35
Zitat von He4dnut:
Aber beim besten Willen fällt mir keine schlaue Rechnung ein, mitder man jedem Stein seinen passenden Wert automatisch zuordnet. Zur Not würde ich auch einfach an einer Stelle der Unit manuell jedem Stein seine Werte zuordnen. Das ist halt einmal viel Arbeit, aber dann hat mans wenigstens einmal richtig ;-)
Vielleicht so : (schönen Gruß von Carl Friedrich Gauss)
Delphi-Quellcode:
PROCEDURE StoneToValues(stone:integer; var value1,value2:integer);
// var i,j,n:integer;
begin
   value1:=Trunc(Sqrt(stone*2)-0.5);
   value2:=stone-(Sqr(value1)+value1) div 2-1;
   // Oben die korrigierte Version.
   // Die auskommentierte Fassung liefert korrekte Werte, aber
   // es hat mir keine Ruhe gelassen, dass so ein triviales Ding auch noch ein IF ... benötigen soll.
   // i:=Trunc(Sqrt(stone*2+0.25)-0.5);
   // n:=(i*i+i) div 2;
   // if n>=stone then begin
   // value1:=i-1;
   // value2:=value1;
   // end else begin
   // value1:=i;
   // value2:=stone-n-1;
   // end;
end;
Oder für einfache Gemüter so :
Delphi-Quellcode:
PROCEDURE SimpleStoneToValues(stone:integer; var value1,value2:integer);
var i,j:integer;
begin
   for i:=0 to stone do
      for j:=0 to i do begin
         dec(stone);
         if stone=0 then begin
            value1:=i;
            value2:=j;
            exit;
         end;
      end;
end;
Beide Funktionen setzen voraus, daß die Steine bei 1 beginnend numeriert sind.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat