Aufsummieren mehrerer Würfe eines Würfels
spacer
Autor Nachricht
maxrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 18:06 
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.
ausblenden Delphi-Quelltext markieren
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 user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Windows API verschoben am Sa 08.10.2011 um 18:31
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 724
Erhaltene Danke: 53

Win XP professional, Win 7 Professional x64, Ubuntu
Delphi 5, Delphi 2005 Personal, Delphi 2006, Delphi XE, C++ Builder 5, PHP, SAP R/3
BeitragVerfasst: 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 :-)

_________________
Delphi: XE - OS: Windows 7 Professional x64
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic star
Beiträge: 1008
Erhaltene Danke: 67

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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 ;)

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 19:01 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconNarses: Beiträge zusammengefasst---

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconNarses: Beiträge zusammengefasst---

Fertiges Programm:
ausblenden volle Höhe Delphi-Quelltext markieren
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}

{ TForm1 }

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;

// 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.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 724
Erhaltene Danke: 53

Win XP professional, Win 7 Professional x64, Ubuntu
Delphi 5, Delphi 2005 Personal, Delphi 2006, Delphi XE, C++ Builder 5, PHP, SAP R/3
BeitragVerfasst: Sa 08.10.11 21:05 
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
------->>>>>>>> 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?

_________________
Delphi: XE - OS: Windows 7 Professional x64
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 21:35 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

ne das geht leider nicht :(
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Luckie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 11803
Erhaltene Danke: 146

WindowsXP Professional SP2
BDS2006, VS C++ Express, Eclipse (Java), Flex (Flash, AS)
BeitragVerfasst: Sa 08.10.11 22:10 
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
Gruß Michael
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 22:33 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

es gibt kein Fehler, der setzt die Werte einfach nicht auf Null :(
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Luckie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 11803
Erhaltene Danke: 146

WindowsXP Professional SP2
BDS2006, VS C++ Express, Eclipse (Java), Flex (Flash, AS)
BeitragVerfasst: 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.

_________________
Gruß Michael
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 08.10.11 23:20 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Das muss eine Fehler geben! Das dürfte sich noch nicht mal übersetzen lassen, wenn es genauso in deinem Quelltext steht.

ausblenden volle Höhe Delphi-Quelltext markieren
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}

{ TForm1 }

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 user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 724
Erhaltene Danke: 53

Win XP professional, Win 7 Professional x64, Ubuntu
Delphi 5, Delphi 2005 Personal, Delphi 2006, Delphi XE, C++ Builder 5, PHP, SAP R/3
BeitragVerfasst: Sa 08.10.11 23:53 
Vergisst du etwa, den für "Anzahl_der_Wuerfe" neu gesetzen Wert auch anzuzeigen?

_________________
Delphi: XE - OS: Windows 7 Professional x64
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Luckie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 11803
Erhaltene Danke: 146

WindowsXP Professional SP2
BDS2006, VS C++ Express, Eclipse (Java), Flex (Flash, AS)
BeitragVerfasst: So 09.10.11 03:56 
Dann vergleiche mal, was jetzt in Zeile 30 steht und was du vorher gepostet hast.

_________________
Gruß Michael
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
maxrus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: So 09.10.11 10:59 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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;
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
procedure TForm1.Button2Click(Sender: TObject);
begin
?????
end;

end.

----->>>> hier hab ich das gemacht!!!
ausblenden Delphi-Quelltext markieren
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 user profile iconNarses: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Vergisst du etwa, den für "Anzahl_der_Wuerfe" neu gesetzen Wert auch anzuzeigen?


aso ja, upssss....ma probieren

joa hat alles geklappt, Danke
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic star
Beiträge: 1008
Erhaltene Danke: 67

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: So 09.10.11 13:08 
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:

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 ... :(


>>> www.delphi-library.d...;highlight=crashkurs

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic starofftopic star
Nussknacker 2010/11 - 1. Rang
Beiträge: 445
Erhaltene Danke: 16

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: So 09.10.11 13:45 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
------->>>>>>>> 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?



user profile iconmaxrus hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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;
procedure TForm1.Button2Click(Sender: TObject);
begin
?????
end;

end.


----->>>> hier hab ich das gemacht!!!
procedure TForm1.Button2Click(Sender: TObject);
begin
Anzahl_der_Wurfe:=0;
end;

end.



---->>>> Verstehe nicht was du meinst!?!??!


Der kleine aber feine Unterschied liegt bei dem Doppelpunkt ohne den es einen Fehler geben muss (!)...

Nebenbei vermute ich mal, dass du in deiner Button2.Click-Prozedur nicht nur die Anzahl der Würfe auf Null setzen solltest, sonder auch die Summe. Denn sonst könnte es dir passieren, dass du nach dem Reset (Button2.Click-Prozedur) einmal neu würfelst, aber schon eine Summe von 23498175872938478732498112400987123467827364 hast. ;)

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home