Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Ich bin neu hier im Board und ich beschäftige mich jetzt mit C++ und ich bin in diesem gebiet, leider, noch ein noob.
Dennoch habe ich versucht mein Problem selber zu lösen, aber ich komme einfach nicht darauf. Ich habe auch im Netz recherchiert und nichts diesbezüglich gefunden.
So, aber nun genug mit dem geschwafel, hier ist mein Problem:
Wie man im Bild 1 sieht, erstelle ich ein kleines minni Gehirnjoggingspiel.
Dort werden einfache Rechenarten angegeben, wo man das richtige Ergebnis lösen soll und dieser sagt dir dann, ob die Lösung richtig ist oder nicht.
Label4 ist es, dass mir sagt ob es richtig ist, oder nicht.
Label5 u. 6 sollen dafür da sein, um mir zu sagen wie oft ich die Sachen falsch oder richtig gerechnet habe.
Jedoch tut er es nicht wirklich xD Ich kriege immer eine 1. Sowohl bei Label5, wenn ich was richtig gemacht habe oder wenn ich was falsch gemacht habe bei label6. Aber er zählt nicht irgendwie richtig.
ich will es ja z.B. so haben, dass ich meinetwegen es 6 mal richtig gemacht habe und was weiß ich, 24 mal falsch "
Also eine richtige aufzählung.
Hier sind mal die anderen Bilder, um es besser verstehen zu können, was ich da überhaupt mache.
Ich habe versucht das ganze in die Schleife einzubauen, dass, wenn es richtig ist das es dann 1 + Punkt gibt.
Ich weiß net, wie ich ihn zum hochzählen bekomme.
Ich dachte es mir so, wenn 1 schon steht und nochmal was richtig ist, rechnet er nochmal +1. Ergebnis wäre ja dann 2.
Oh, man, ihr schüttelt euch bestimmt die Köpfe und fragt, wie doof der Junge doch ist... aber wie gesagt, ich habe es selbst hin und her versucht und ich gebe selbst zu ein Noob zu sein und bitte um eure hilfe.
PS: Wenn ihr mir helft, dann hätte ich, wenn es geht dazu eine kleine Erläuterung, da ich auch verstehen will, wieso das so gemacht werden muss.
Einfach nen Codeschnipsel hergeben, wäre die Lösung, aber ohne Erklärung dazu, wäre mir nicht geholfen, denke ich.
Wenn das dein Code ist, dann gibt es folgende Probleme:
- Die beiden Variablen werden nach dem Funktionsaufruf gelöscht -> der Wert wird nicht gespeichert.
- Die Variablen werden nicht erhöht.
Da ich leider nicht weiß, ob sich statische Variablen in C# gleich verhalten wie in C++, kann ich dir nur die Möglichkeit mit Membervariablen (der Klasse) zeigen. (ich hoffe, der Code ist korrekt; ich kann kein C#)
Ich dachte es mir so, wenn 1 schon steht und nochmal was richtig ist, rechnet er nochmal +1. Ergebnis wäre ja dann 2.
Nein
die
C-/C++-Quelltext
1
i1 =+1;
bedeutet nicht, dass die zahl um eins erhöht wird. der compiler
interpretiert es einfach als vorzeichen, was eh wegfällt.
selbst wenn in dem ergebnisstring "+1" stehen würde, kommt
da keine addition raus.
du musst zuerst den schon in der box stehenden text in einen
"int" umwandeln (da ich mich nicht mit cli/forms/dotnet/whatever
auskenne, rate ich mal wie das geht )
C-/C++-Quelltext
1
int temp = System::Convert::ToInt32(this->label5->Text);
danach kannst du diesen wert, eine ganz normale zahl, beliebig erhöhen:
C-/C++-Quelltext
1
2
3
4
5
6
7
8
temp = temp +1;
// oder
temp +=1;
// oder
temp++;
// oder
++temp;
// ....
zum schluss dann das ganze wieder in einen string packen und in das
label setzen:
C-/C++-Quelltext
1
this->label5->Text = temp.ToString();
kurze zusammenfassung:
C-/C++-Quelltext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (lerg == lergebnis)
{
this->label4->Text ="Richtig";
int temp = System::Convert::ToInt32(this->label5->Text);
++temp;
this->label5->Text = temp.ToString();
}
else
{
this->label4->Text ="Falsch";
int temp = System::Convert::ToInt32(this->label5->Text);
++temp;
this->label6->Text = temp.ToString();
}
Da ich leider nicht weiß, ob sich statische Variablen in C# gleich verhalten wie in C++, kann ich dir nur die Möglichkeit mit Membervariablen (der Klasse) zeigen. (ich hoffe, der Code ist korrekt; ich kann kein C#)
Ist kein C#. (Das wäre um einiges schöner. ) Ist C++/CLI (oder wie auch immer das .NET-C++-Zeugs heisst.)
Wieso ich das schreibe: Bin ich eigentlich der einzige, der dieses C++/CLI-Zeug unglaublich hässlich findet? Oo
Ich habe es jetzt so gemacht, wie es geschrieben wurde.
Ich habe temp, als integer zugewiesen(ich habe es einfach mal versucht). Wenn ich es aber weglasse, passiert der gleiche Fehler.
Wenn ich temp = temp + 1;
// oder
temp += 1;
// oder
temp++;
// oder
++temp;
// ....
auch weglasse, dann kommt auch der Fehler. Es muss also am Prüfe Button liegen. Sobald ich darauf klicke kommt der Fehler.
ich kenne mich mit der Funktion mit temp nicht aus, da muss ich mich noch schlau drüber machen "
Ansonsten, wenn ich zu meiner alten Funktionsweise rübergehe, habe ich keine Fehlermeldung, aber das alte Prob noch immer. Oh Gott, ich bin ein Problemfall