You are not logged in.

  • Login

ReviloTS

Unregistered

1

Sunday, May 1st 2011, 8:10pm

Bild in C++ für wenige Sekunden einblenden lassen (Graphische Oberfläche)

Hallo;
ich soll von der Schule aus ein Nimm- bzw. Streichholzspiel programmieren...
Ich komme auch ganz gut klar und mein Grundgerüst steht...Nur möchte ich immer wenn der Computer zieht(1,2, oder 3 Streichhölzer) ein Bild für 2 Sekunden einblenden lassen...danach soll das Bild wieder verschwinden und der Spieler zieht seine 1,2 oder 3 Streichölzer und dann wieder das Bild und der Computer zieht....Soweit ist alles prpgrammiert der Computer zieht logisch seine Streichhölzer und im großen und ganzen ist das Spiel spielbar...nur halt diese eine Sache.

Ich nehme auch gerne andere Lösungsvorschläge entgegen...Das Problem ist einfach nur das nachdem der Spieler gezogen hat verschwinden auch schon im selben Moment die Streichhölzer die der Computer zieht....

Ich danke im vorraus...Mfg.

2

Sunday, May 1st 2011, 9:08pm

In c++ gibt es doch sicherlich ein sleep-Funktion, oder nicht?

3

Sunday, May 1st 2011, 10:09pm

was für eine grafische oberfläche?

ReviloTS

Unregistered

4

Monday, May 2nd 2011, 10:02am

was für eine grafische oberfläche?
na ich hab visual studio 2008 und wenn man auf datei -> neu -> neues projekt -> windows forms-anwendung öffnet kann man doch was mit graphischer oberfläche programmieren...

und zu dieser sleep-funktion....kenn ich nicht...wie gesagt beschäftige mich zum ersten mal mit c++......und in der tool-box find ich diese funktion nicht...

mfg.

5

Monday, May 2nd 2011, 10:18am

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream> 
#include <windows.h> 
using namespace std; 
 
int main() 
{ 
for(int i = 0; i <= 5; ++i) 
{ 
 
cout << "This is the text, please wait..." << endl; 
Sleep(2000); 
} 
 
cout << endl; 
cout << "Ok, press the ENTER button to exit." << endl; 
 
 
cin.get(); 
return 0; 
}






Quelle: http://www.c-plusplus.de/forum/190320

Das ist halt ein Beispiel wie man die Funktion benutzen könnte.
1 Sekunde = 1000 Millisekunden



mfg

ReviloTS

Unregistered

6

Monday, May 2nd 2011, 10:36am

Danke für deine schnell Antwort .. ich glaube das bringt mir aber keinen Vorteil. Wenn ich nämlich eine Eingabe mache und
danach unterbrechen will, bringt mir cin.get(); nichts, da eine
Eingabe bereits vorhanden ist.

ich möchte ja nach dem klicken auf die button 1,2 oder 3 eine 2 sekunden unterbrechung haben...in dieser zeit soll der computer ziehen und dann soll das bild verschwinden und ich kann wieder ziehen.,..usw.

ReviloTS

Unregistered

7

Monday, May 2nd 2011, 11:03am

ich habs jetzt..ging doch mit der sleep funktion..danke an alle....

kann geschlossen werden....

mfg

ReviloTS

Unregistered

8

Monday, May 2nd 2011, 2:12pm

Hello again....

Leute leider ist mein Problem doch noch nich behoben...ich habe nun zwar die Sleep funktion eingebaut...und zwar so


Source code

1
2
3
4
5
6
7
8
9
	void load()
		{
			pictureBox32->Visible = true;
			label7->Visible = true;
			Sleep(1000);
			pictureBox32->Visible = false;
			label7->Visible = false;
			
		}


...und meine computer zieht funktion sieht so aus:

Source code

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
40
41
42
43
44
45
46
47
48
49
50
void ComputerZieht( )
		{ 

			if(anzahl>0)
			{
		        int ziehe;
				verstecke();
				load();
				
				ziehe = (rand()%2+1);
				if(anzahl==6)
					ziehe=1;
					label2->Text = Convert::ToString(anzahl);
				if(anzahl==5)
					ziehe=1;
					label2->Text = Convert::ToString(anzahl);
				if(anzahl==4)
					ziehe=3;
					label2->Text = Convert::ToString(anzahl);
				if(anzahl==3)
					ziehe=2;
					label2->Text = Convert::ToString(anzahl);
				if(anzahl==2)
					ziehe=1;
					label2->Text = Convert::ToString(anzahl);
				if(ziehe==1)
					anzahl--;
					label2->Text = Convert::ToString(anzahl);
				if(ziehe==2)
					anzahl=anzahl-2;
					label2->Text = Convert::ToString(anzahl);
				if(ziehe==3)
					anzahl=anzahl-3;
					label2->Text = Convert::ToString(anzahl);
			
				if(anzahl<=0)
			{
				MessageBox::Show("Herlzlichen Glückwunsch, Du hast gewonnen!!!:-)");
				gewonnen=gewonnen++;
				label4->Text = Convert::ToString(gewonnen);
			}
			HoelzchenDarstellen( anzahl );	
			zeige();
			
			
			
			}
			

		}


so eigentlich müsste es so gehen nur...wartet der computer jetzt 2 sekunden bis er zieht nur das bild wird in den 2 sekunden trotzdem nicht angezeigt, sondern nur danach wieder für einen augenschlag (fast nicht zu erkennen) warum ist das so????

ich verstehs echt nich und brauche dringend hilfe......bitte

9

Monday, May 2nd 2011, 6:15pm

So offensichtlich ist das nicht, das es der Designer von Visual Studio ist. Könnte auch Gtk oder qt (etc) sein.
DieToolbox von Visualstudio bietet wenn ich mich recht erinnere ein Objekt "Timer". Damit kann man auch sowas machen, da Sleep denke ich das ganze Programm einfriert.
Kenne mich da aber weniger aus.

Social bookmarks