Punktezählung
-
hi,
ich habe ein problem mit meiner punktezählung.
Also ich habe ein spiel geschrieben, wo man für einen buttonklick im richtigen moment einen Punkt für einen ButtonKlick bekommen soll.das ist der richtige moment:
//Ein Button der über einen anderen liegt verschwindet
case 1:this->button1->Size=System::Drawing::Size(0, 0); break;Punktezählung sieht dann so aus:
//Klickt man auf den darunter liegenden button bekommt man nun punkte
if(zufallszahl=0,1,2,3,4,5,6,7,8)
punktestand++;
else
;}
Das ganze läuft natürlich viel zu schnell durch um auf den button zu klicken. Deshalb habe ich es zuerst mit sleep versucht, dann bleibt zwar die chance um auf den button zu klicken, aber es wird nix gezählt, weil ja das programm schläftdann habe ich es mit folgenden versucht
int t = time(NULL);
while(time(NULL) < (t +1));damit bleibt der button natürlich auch für eine sekunde sichtbar, aber
da kommt einem wahrscheinlich das break in die quere, da nach break wahrscheinlich die zufallszahl sofort zurück gesetzt wird, dadurch bleibt einem auch zu wenig zeit um auf den button zu klicken.hat jemand eine ahnung, was ich noch schreiben könnte???
-
- Zum Auslösen eines Ereignissen nach einer bestimmten Zeit nimm lieber
System::Windows::Forms::Timer
MSDN - Wenn du Zeitabstände messen möchtest
System::DateTime::Now
undSystem::TimeSpan
-
Pseudocode: d.h. copy&paste&run is nicht
int punkte; // in dem Konstrukor { timer->Tick = gcnew EventHandler(this, &meineKlasse::h); button->Click= gcnew EventHandler(this, &meineKlasse::j); } // in der Klasse: ab hier TimeSpan zwischenzeit; function h(Object^ sender, EventArgs^ e) { if(button unsichtbar) // Button sichtbar machen und { timer->stop(); timer->intervall = 1000; // 1 Sekunde zeit den button zu drücken button_anzeigen(); // Funktion anlegen zwischenzeit = DateTime::Now; timer->start(); } else // Der Spieler hätte ihn sehen könnan aber nicht gedrückt { timer->stop(); // Funktion anlegen Button_nicht_getroffen(); // Funktion anlegen // punkt/leben abzeihen oder Game over } function j(Object^ sender, EventArgs^ e) { timer->stop(); punkte++; timer->intervall = erhalte_Zufaals_Zahl(); // Funktion anlegen; Button_verstecken(); // Funktion anlegen; timer->start; }
- Zum Auslösen eines Ereignissen nach einer bestimmten Zeit nimm lieber
-
[quote="Rhombicosidodecahedron"]
Z.17 if(button unsichtbar) // Button sichtbar machen und
quote]
wenn du mir sagst, wie ik dis schreiben muss...dann hätte ich das gelöst
weil
if(this->button19->Size=System::Drawing::Size(0, 0);)
kann i ja net schreiben...ich weiß nämlich net wie ich dis schreiben muss damit festgestellt wird, dass der button halt die größe(0,=0) besitzt...so würde natürlich ne fehlermeldung kommen
-
button->Visible = true
vielleicht, oderif(button->Visible)
-
Rhombicosidodecahedron schrieb:
button->Visible = true
vielleicht, oderif(button->Visible)
Nein...hab ich alles schon probiert
-
Nein ich meinte mit
button->Visible = false
die Schaltfäche verstecken und mitbutton->Visible = true
anzeigen und mitif(button->Visible)
überprüfen ob sie sichtbar ist.
Sonst nimmif(button->Size.IsEmpty)
.Edit: Sprache und Codetags optimiert
-
Rhombicosidodecahedron schrieb:
Nein ich meinte mit
button->Visible = false
die Schaltfäche verstecken und mitbutton->Visible = true
anzeigen und mit mitif(button->Visible)
überprüfen ob sie sichtbar ist.
Sonst nimmif(button->Size.IsEmpty)
.Ja ich hatte es schon mit visible probiert ...weiß also was du meinst...aber unsichtbare buttons kann man net anklickn und auf den dadrunter auch net zugreifen...deshalb hab ich ihn mit umstellen der größe sozusagen weggezaubert
aber dis andere mit isempty werd ich ma kurz probieren
-
Nein... irgendwas mit -> darf man in der if-Anweisung wohl gar net schreiben, weil dis was zum ausführen is und net zum prüfen, also sprich keine bedingung
-
Klingt jetzt komisch aber bei mir geht:
if(button2->Size.IsEmpty) button2->Size = button1->Size; else button2->Size = System::Drawing::Size::Empty;
ohne Probleme.
-
Rhombicosidodecahedron schrieb:
Klingt jetzt komisch aber bei mir geht:
if(button2->Size.IsEmpty) button2->Size = button1->Size; else button2->Size = System::Drawing::Size::Empty;
ohne Probleme.
Mein Fehlermeldung is dann folgende:
Nur statische Datenmember können innerhalb einer Verweisklasse oder eines Werttyps initialisiert werden.hab ich da wat vergessen zu schreiben
-
entschuldigung mein fehler...hab meine letzten versuch noch net komplett wieder rausgenommen war was anderes...ich probiere es glecih nochmal mit dem emty
-
entschuldigung mein fehler...hab meine letzten versuch noch net komplett wieder rausgenommen war was anderes...ich probiere es glecih nochmal mit dem emty
-
Nee es läuft zwar aber er zählt die punkte trotzdem nur für ne millisekunde, anstat sie zu zählen solangeder button weg is.
für ne erklärung wie timewaitable funktioniert wäre ich echt dankbar
CreateWaitableTimer(); // Timer erzeugen
SetWaitableTimer(); // Timer auf 1 ms stellen
WaitForSingleObject(); // Warten bis 1 ms rum ist
das is erstma dis was ich dafür brauche...allerdings mus da noch was in klammern rein...ich hab zwar schon mehrere beispiele gesehen,aber irgendwie hmmm...
kann mir jemand sagen, was ich in die klammern schreiben muss um 900millisekundn abzuwarten?
-
So etwas in der Richtung
http://support.microsoft.com/kb/184796/deQuelle: Google-Suche "createabletimer" 3. Eintrag
-
@Der_Kai:
Grundlagenbuch und ein Duden wäre für Dich bestimmt nicht schlecht.
Aber lass Dir alles vorkauen um nix lernen zu müssen.Garbage can
-
Rhombicosidodecahedron schrieb:
So etwas in der Richtung
http://support.microsoft.com/kb/184796/deQuelle: Google-Suche "createabletimer" 3. Eintrag
Die Seite hat ich auch schon...aber wie gesagt...ich kann mit diesen fachspezifischen erklärungen net so gut...
da ich dis net gelernt habe...is das halbes fachchinesisch...deswegen versuche ich es etwas mehr anfänger zu erfragen, damit ich net dumm bleibt^^ps: @garbage can: wer sich alles allein beibringen kann is a genie und is mia noch nie über den weg gelaufen
und die geschichte mit dem waitable timer sieht für mich extrem kompliziert und übelst unverständlich aus...