Hallo,
also hier der code:
player.pas:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| unit player;
interface uses SysUtils, Classes;
type PlayerClass = class(TObject) constructor Create;
private NumDelivery: double; public NumCount, NumPercent, NumResult: double; procedure CalculateDelivery(PlayerX: string); procedure CalculateAcceptance(NumDelivery: double); end;
implementation uses PlayerGui;
constructor PlayerClass.Create; begin end;
procedure PlayerClass.CalculateDelivery(PlayerX: string); begin if PlayerX = 'A' then begin if PlayerGui.Form1.PlayerAResult_Title4.Text = '' then begin NumCount:= StrToFloat(PlayerGui.Form1.PlayerAValue_Title2.Text); PlayerGui.PlayerB.NumDelivery:= 100; end else NumCount:= StrToFloat(PlayerGui.Form1.PlayerAResult_Title4.Text);
NumPercent:= StrToFloat(PlayerGui.Form1.PlayerAValue_Title3.Text);
NumDelivery:= NumCount*NumPercent; NumCount:= NumCount-NumDelivery;
PlayerGui.PlayerB.CalculateAcceptance(NumDelivery); end else if PlayerX = 'B' then begin if PlayerGui.Form1.PlayerBResult_Title4.Text = '' then NumCount:= StrToFloat(PlayerGui.Form1.PlayerBValue_Title2.Text) else NumCount:= StrToFloat(PlayerGui.Form1.PlayerBResult_Title4.Text);
NumPercent:= StrToFloat(PlayerGui.Form1.PlayerBValue_Title3.Text);
NumDelivery:= NumCount*NumPercent; NumCount:= NumCount-NumDelivery;
PlayerGui.PlayerA.CalculateAcceptance(NumDelivery); end end;
procedure PlayerClass.CalculateAcceptance(NumDelivery: double); begin NumCount:= NumCount+NumDelivery; end; end. |
playergui.pas:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| unit PlayerGui;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, player;
type TForm1 = class(TForm)
PlayerNameA_Title2: TLabel; Title1: TLabel; Title2: TLabel; PlayerNameB_Title2: TLabel; Title3: TLabel; PlayerNameA_Title3: TLabel; PlayerNameB_Title3: TLabel; Title4: TLabel; PlayerNameA_Title4: TLabel; PlayerNameB_Title4: TLabel; PlayerAValue_Title2: TEdit; PlayerBValue_Title2: TEdit; PlayerAValue_Title3: TEdit; PlayerBValue_Title3: TEdit; ButtonCalculate: TButton; PlayerAResult_Title4: TEdit; PlayerBResult_Title4: TEdit;
procedure ButtonCalculateClick(Sender: TObject); procedure FormCreate(Sender: TObject);
private public end;
var Form1: TForm1; var PlayerA, PlayerB: player.PlayerClass;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin PlayerA:= PlayerClass.Create; PlayerB:= PlayerClass.Create; end;
procedure TForm1.ButtonCalculateClick(Sender: TObject); begin PlayerA.CalculateDelivery('A'); PlayerB.CalculateDelivery('B');
Form1.PlayerAResult_Title4.Text:= FloatToStr(PlayerA.NumCount); Form1.PlayerBResult_Title4.Text:= FloatToStr(PlayerB.NumCount); end;
end. |
so, die rechnung wäre ja nun:
(bei Abgaben: PlayerA: 0,16 - PlayerB: 0,17)
PlayerA: Nimmt 100 aus dem TextFeld rechnet ihn mal 0,16;
100*0,16 = 16;
das ist der anteil den er abgibt an PlayerB:
100-16 = 84; // für sich selber, weil er die ja abgibt.
dann ruft er eine funktion auf, um diese 16 an den anderen spieler zu übermitteln damit er sie addieren kann...
das selbe macht dannach playerB,
die ergebnisse müssten also lauten:
PlayerA: 101 (100-16(100*0,16); 84+17(100*0,17) = 101)
PlayerB: 99 (100-17(100*0,17); 83+16(100*0,16) = 99)
aber die, die er ausrechnet sind:
PlayerA: 101;
PlayerB: 83;
und weil der wer 83 bei PlayerB ist, er aber 99 sein müsste, und das ergebnis von 100-17 genau 83 entspricht, denke ich addiert er die abgabe von PlayerA (16) nicht dazu.
Die Abgabe von PlayerA (16) an PlayerB erfolgt aber bevor, das Programm auf 83 kommen kann um dann mit 16 auf 99 zu kommen..
naja ich hoffe das hast du verstanden
//EDIT:
yuhu, habe den Fehler selber gefunden!! - Danke für deine Hilfe obbschtkuche!!!!!!!
mfg
neon