Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Aufsummieren mehrerer Würfe eines Würfels
maxrus - Sa 08.10.11 18:06
Titel: Aufsummieren mehrerer Würfe eines Würfels
Hallo,
ich wollte ma ein Programm "Würfelsimulator" programmieren, wo es zwei Zahlen ausgegeben werden sollen, die Zahl der erfolgten Würfe und und die Summe der Augen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.FormCreate(Sender: TObject);
begin randomize;
end;
procedure TForm1.Button1Click(Sender: TObject); var Anzahl_der_Wurfe,Summe,k,w:integer; begin Summe:=0; Anzahl_der_Wurfe:=0; k:=Anzahl_der_Wurfe+1;
w:=Random(6)+1; label1.caption:='Wurf Nr'+' '+inttostr(k)+' : ' + inttostr(w); |
das Programm ist noch nicht zu ende geschrieben, aber ich wollte zwischendurch ausprobieren wie das programm denkt, und irgendwie zählt das Programm meine würfe nicht, muss ich dafür eine schleife machen????????
Moderiert von
Narses: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Windows API verschoben am Sa 08.10.2011 um 18:31
Horschdware - Sa 08.10.11 18:41
Anzahl der Würfe ist bei dir in der ButtonClick-Methode deklariert. Sobald diese Methode mit der Verarbeitung fertig ist, get der Wert in der Variable verloren.
(Stichwort: Lebensdauer einer Variablen)
Für deine Zwecke müsste die Variable für die Anzahl der Würfe etwa als Element des Formulars oder gar als globale Variable deklariert werden.
Die Forensuche hilft hier gerne weiter :-)
platzwart - Sa 08.10.11 18:57
Naja, schau dir halt an, was du dem Computer sagst - deine Anweisung für den Fall, dass der Button gedrückt wird, lautet: "Setze die Variablen 'Summe' und 'Anzahl_der_Wurfe' auf den Wert '0'". Und nun fragst du, warum der Computer nicht hochzählt. Die Antwort kannst du dir nun selber geben ;)
maxrus - Sa 08.10.11 19:01
Horschdware hat folgendes geschrieben : |
Anzahl der Würfe ist bei dir in der ButtonClick-Methode deklariert. Sobald diese Methode mit der Verarbeitung fertig ist, get der Wert in der Variable verloren.
(Stichwort: Lebensdauer einer Variablen)
Für deine Zwecke müsste die Variable für die Anzahl der Würfe etwa als Element des Formulars oder gar als globale Variable deklariert werden.
Die Forensuche hilft hier gerne weiter :-) |
Anzahl der Würfe muss man echt global deklarieren, das hat jetzt geklappt, Danke
---
Moderiert von
Narses: Beiträge zusammengefasst---
platzwart hat folgendes geschrieben : |
Naja, schau dir halt an, was du dem Computer sagst - deine Anweisung für den Fall, dass der Button gedrückt wird, lautet: "Setze die Variablen 'Summe' und 'Anzahl_der_Wurfe' auf den Wert '0'". Und nun fragst du, warum der Computer nicht hochzählt. Die Antwort kannst du dir nun selber geben ;) |
bin noch Anfänger,ich weiss ja noch nicht so genau wie das Programm denkt, gibts vllt gute Seiten wo man Delphi Schritt für Schritt kennelernen kann, momentan lerne ich das mit Delphi for Kids, aber ich find das Buch ist nicht wirklich für Kids, die ersten paar Seiten vllt für Kids aber dann ... :(
---
Moderiert von
Narses: Beiträge zusammengefasst---
Fertiges Programm:
Delphi-Quelltext
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:
| var Form1: TForm1; Summe, Anzahl_der_Wurfe:integer;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
begin randomize; Summe:=0; Anzahl_der_Wurfe:=0;
end;
procedure TForm1.Button1Click(Sender: TObject); var w:integer; begin Anzahl_der_Wurfe:=Anzahl_der_Wurfe+1; w:=Random(20)+1; Summe:=Summe+w; label1.caption:='Wurf Nr'+' '+inttostr(Anzahl_der_Wurfe)+' : ' + inttostr(w); label2.caption:='Summe'+' '+inttostr(Summe);
end;
procedure TForm1.Button2Click(Sender: TObject); begin ????? end;
end. |
Moderiert von
Narses: Delphi-Tags hinzugefügt
Horschdware - Sa 08.10.11 21:05
maxrus hat folgendes geschrieben : |
------->>>>>>>> jetzt möchte ich z.B die Werte die ich raus gekriegt habe auf Null setzen, wie mach ich das???
procedure TForm1.Button2Click(Sender: TObject);
begin
?????
end;
end. |
Anzahl_Wuerfe = 0;
vielleicht?
maxrus - Sa 08.10.11 21:35
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
ne das geht leider nicht :(
Delete - Sa 08.10.11 22:10
maxrus hat folgendes geschrieben : |
ne das geht leider nicht :( |
Umwerfende Fehlerbeschreibung. :roll: Was sagt der Compiler dazu? Und dann guck dir mal an, wie man eine Zuweisung macht und was ein Vergleich ist. Bitte auch bei Copy and paste den Kopf benutzen.
maxrus - Sa 08.10.11 22:33
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
es gibt kein Fehler, der setzt die Werte einfach nicht auf Null :(
Delete - Sa 08.10.11 22:40
Das muss eine Fehler geben! Das dürfte sich noch nicht mal übersetzen lassen, wenn es genauso in deinem Quelltext steht.
maxrus - Sa 08.10.11 23:20
Luckie hat folgendes geschrieben : |
Das muss eine Fehler geben! Das dürfte sich noch nicht mal übersetzen lassen, wenn es genauso in deinem Quelltext steht. |
Delphi-Quelltext
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:
| var Form1: TForm1; Summe,w, Anzahl_der_Wurfe:integer;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject); begin randomize; Summe:=0; Anzahl_der_Wurfe:=0; end;
procedure TForm1.Button1Click(Sender: TObject); var w:integer; begin Anzahl_der_Wurfe:=Anzahl_der_Wurfe+1; w:=Random(20)+1; Summe:=Summe+w; label1.caption:='Wurf Nr'+' '+inttostr(Anzahl_der_Wurfe)+' : ' + inttostr(w); label2.caption:='Summe'+' '+inttostr(Summe); end;
procedure TForm1.Button2Click(Sender: TObject); begin Anzahl_der_Wurfe:=0; end;
end. |
es gibt kein fehler, ich drücke button2 , und es passiert nichts
Moderiert von
Narses: Delphi-Tags hinzugefügt
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Horschdware - Sa 08.10.11 23:53
Vergisst du etwa, den für "Anzahl_der_Wuerfe" neu gesetzen Wert auch anzuzeigen?
Delete - So 09.10.11 03:56
Dann vergleiche mal, was jetzt in Zeile 30 steht und was du vorher gepostet hast.
maxrus - So 09.10.11 10:59
Luckie hat folgendes geschrieben : |
Dann vergleiche mal, was jetzt in Zeile 30 steht und was du vorher gepostet hast. |
---->>> Das war meine Frage, ich wollte mit Button2 alle werte auf Null setzen, mir wurde gesagt probiere es mit Anzahl_der_Wurfe:=0;
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Button2Click(Sender: TObject); begin ????? end;
end. |
----->>>> hier hab ich das gemacht!!!
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Button2Click(Sender: TObject); begin Anzahl_der_Wurfe:=0; end;
end. |
---->>>> Verstehe nicht was du meinst!?!??!
Moderiert von
Narses: Delphi-Tags hinzugefügt
---
Moderiert von
Narses: Beiträge zusammengefasst---
Horschdware hat folgendes geschrieben : |
Vergisst du etwa, den für "Anzahl_der_Wuerfe" neu gesetzen Wert auch anzuzeigen? |
aso ja, upssss....ma probieren
joa hat alles geklappt, Danke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!