Spielautomat..Zahlendurchlauf stoppen

bigfella

Erfahrenes Mitglied
Hallo!
Möchte einen Spielautomat programmieren.(wie: "Einarmiger Bandit")
Zahlen gehen von 0 bis 7.
Insgesamt gibt es drei Zahlenstellen.
Der Spieler kann auf die Ermittlung der Zahlen Einfluss nehmen,
indem er eine "Stopp"-Taste drückt.

Wie realisiert man sowas?
Wie ich eine Zufallszahl generiere weiß ich schon.
Code:
srand( (unsigned)time( NULL ) ); 
zufall=rand()%8+0; 
cout<<zufall;

Aber nicht wie man per Stopptaste die erste Zahlenstelle,
bei erneutem drücken die zweite Zahlenstelle und schließlich die dritte Zahlenstelle
stoppt.
Betätigt der Spiele überhaupt nicht die Stopptaste,
so halten die Zahlen nach einer festgelegten Zeit selbständig an.

Kann mir da bitte jemand weiterhelfen?
 
moin


Ok, mal ganz Stumpf:
Code:
for(int i=0; i< 5000; i++)
{
    Sleep(1);
    if(_kbhit())
    {
        getch();
        cout<<rand()%8+0; 
        break;
    }
    if(i == 4900)
    {
        cout<<rand()%8+0; 
        break;
    }
}
Und das drei mal hintereinander.
Ist aber ungetestet.


mfg
umbrasaxum
 
Danke für die schnelle Antwort.
Wie lautet bitte der Code für die sleep() bzw. die kbhit() Funktion?
 
Hab ich eingebunden, jedoch erscheinen folgende Fehlermeldungen:
"call to undefinded function "_kbhit"
"call to undefinded function "Sleep"

Borland compiler 5.01
 
Hi..ich nochmal..
Hab weng ausprobiert und würde nun gern folgendes wissen:
Bräucht bei dem sleep irgendwas, dass ich bei Druck einer Taste weiterspringen kann.
Kann mir da bitte jemand helfen?

Außerdem bekomm ich immer noch ne Fehlermeldung bei der sleep funktion.
(..."undefined symbol sleeb (unsigned int) ..") obwohl ich die funktion schon als prototyp deklariert habe...

Code:
int r1=0, r2=0, r3=0;

        time_t t;
        srand((unsigned) time(&t));
        r1=(rand()%10);
        int i=0;



        r1 = (rand()%10);
		  r2 = (rand()%10);
        r3 = (rand()%10);

        cout << "\nDie Rollen laufen: ";


        		cout << r1;
            sleep(3);
            cout << r2;
            sleep(3);
            cout << r3;
 
Zuletzt bearbeitet:
moin


Die Funktion heisst ja auch "Sleep"! Mit nem großen S! Und du gibst die Zeit in milli Sekunden an, und 3 milli Sekunden merkst du garnicht!

Und nein du kannst Sleep nicht abbrechen, aber wie du sowas machen könntest hab ich oben weiter schon beschrieben.
Oder nochmal ein bischen anders:
Code:
for(int i=0; i<5000; i++)
{
    Sleep(1);
    if(_kbhit())
    {
        getch();
        break;
    }
}
So wird maximal 5000 milli Sekunden gewartet, es kann aber auch abgebrochen werden.


mfg
umbrasaxum
 
Dazu mal ne andere Frage:

Wenn ich bei dem ausführbaren Code die Esc -Taste drücke, kommt die if-anweisung.
Wenn ich irgendeine andere Taste drücke die else-anweisung.
Wie lautet die Zahl für die Leertaste?

Code:
int c;
  int extended = 0;
  c = getch();
  if (c==27)
    extended = getch();
  if (extended)
    cout<<"The character is extended\n";
  else
    cout<<"The character isn't extended\n";
 
Zurück