Mir fehlt die Idee für die Lösung :(
-
Hallo.
Ich versuche gerade nen kleines Würfelspiel zu programmieren.Wenn man auf den Button1 (Würfeln) klickt, generiert er zwei Zufallszahlen in den beiden Editfelder.
Wenn man auf den Button2 (Wurf ausblenden) klickt, kommen anstatt die Zahlen zwei X X (zum ausblenden eben) in den Felder.
Bishier klappt alles soweit.
Aber ich bekomm es nicht hin:
Wenn man auf Button3 (Wurf wieder einblenden) klickt, soll er den ALTEN Wurf wieder anzeigen.
Wenn ich ganz normal wieder die Funktion oder so aufrufe, generiert er mir ja sofort neue.
Hier mal der Code von den drei Buttons:
void CnewgoDlg::OnBnClickedButton1() // WÜRFELN { CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1); CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2); CString str; srand( (unsigned)time( NULL ) ); // Initialisiert den Random-Generator mit der akt. Zeit in Sek int w1,w2; w1 = rand()%6+1; w2 = rand()%6+1; str.Format(_T("%d"), w1); pEdit2->SetWindowText(str); str.Format(_T("%d"), w2); pEdit1->SetWindowText(str);//Das Ergebnis wird im Edit-Feld angezeigt } void CnewgoDlg::OnEnChangeEdit1() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here } void CnewgoDlg::OnBnClickedButton2() //WURF AUSBLENDEN { CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1); //ID's werden übergeben?! CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2); CString str; str.Format(_T("X")); pEdit2->SetWindowText(str); str.Format(_T("X")); pEdit1->SetWindowText(str); } void CnewgoDlg::OnBnClickedButton3() //WIEDER EINBLENDEN { // Bei dem Button soll der alte Wurf wieder angezeigt werden }
-
In Standard-C++ gibts keine Buttons. Sicher dass du im richtigen Forum bist? Lies dir bitte auch die mit "wichtig" markierten Threads hier im Forum durch.
-
Ehm ja denn verschiebs mal ins MFC pls
-
Naja ehm wobei die Lösung ja in c++ erfolgt....
-
Es gibt zufällig dieses Forum: MFC (Visual C++)
Das sagt alles oder?
-
Du musst das Ergebnis von Wurf 1 in einer Variablen zwischenspeichern. Auch sollte der Zufallsgenerator nur einmal initialisiert werden und nicht vor jedem neuen Wurf.
-
aso jetz erst richtig verstanden, sorry. Du musst dir wohl den letzten Wurf abspeichern, z.B. als Attribute der Klasse. Dann kannst du beim Klick auf den dritten button die alten Werte wieder hervorholen (und musst sie beim Klick auf Button 1 natürlich neu setzen)
-
Mach doch einfach w1 und w2 Member der Klasse (und nicht lokale Variable), dann hast du sie sowohl beim Würfeln, als auch später beim Wiederanzeigen...
-
Lösung: merk dir die beiden Würfelzahlen w1 und w2 in Klassenmembern (statt lokalen Variablen)
P.S: MFC ist grottig, such dir auf Dauer eine bessere GUI
-
Mach in die Klasse z.B. zwei Membervariablen m_w1str und m_w2str vom Typ CString rein und dann:
void CnewgoDlg::OnBnClickedButton1() // WÜRFELN { CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1); CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2); CString str; srand( (unsigned)time( NULL ) ); // Initialisiert den Random-Generator mit der akt. Zeit in Sek int w1,w2; w1 = rand()%6+1; w2 = rand()%6+1; m_w1str.Format(_T("%d"), w1); pEdit1->SetWindowText(m_w1str); m_w2str.Format(_T("%d"), w2); pEdit2->SetWindowText(m_w2str);//Das Ergebnis wird im Edit-Feld angezeigt } void CnewgoDlg::OnEnChangeEdit1() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here } void CnewgoDlg::OnBnClickedButton2() //WURF AUSBLENDEN { CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1); //ID's werden übergeben?! CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2); pEdit2->SetWindowText(_T("X")); pEdit1->SetWindowText(_T("X")); } void CnewgoDlg::OnBnClickedButton3() //WIEDER EINBLENDEN { pEdit1->SetWindowText(m_w1str); pEdit2->SetWindowText(m_w2str); }