Countdown machen?
-
EDIT:Siehe unten
Hi! Ich wollte zum Spaß einfach mal so nen Programm machen wo man sozusagen ne Selbstzerstörung angibt. Dann sein Zeitlimit. Danach soll das Zeitlimit runterlaufen und entweder jede Sekunde ne printf("Noch %.2f Minuten \n",zeit);
oder nach alles 10 Sekunden.Weiss aber nicht genau wie das geht. Wollte es mit for Schleife machen aber es geht irgentwie nicht.
Bin nicht so gut in C mach es noch nicht lange aber könnt ihr mir vielleicht etwas helfen. Hier der bisherige Code:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char p[20]; char p2[20]="Wesker"; int ergebnis; float zeitlimit; int n; printf("WILLKOMMEN!\n"); printf("PASSWORT FUER SELBSTZERSTOERUNG:\n"); gets(p); int strcmp(const char *p,const char *p2); ergebnis=strcmp(p,p2); if(ergebnis==0) { printf("RICHTIG! ZEITLIMIT IN MINUTEN EINGEBEN:(z.B. 12.00)\n"); scanf("%f",&zeitlimit); printf("IN %.2f MINUTEN EXPLODIERT DIESER PC! BITTE SICHERHEITSABSTAND EINNEHMEN!\n", zeitlimit); // Hier müsste ich doch jetzt weiter machen oder? } else { printf("ZUGRIFF VERWEIGERT!:\n"); system("PAUSE"); return 0; } system("PAUSE"); return 0; }
Hm hab es jetzt etwas anders gemacht. Jetzt laufen die zahlen herunter. In Sekunden geht also sehr schnell wenn man wenig eingibt. Aber war ja nur mal zum testen <aber irgentwie kommt das BOOM nicht oO
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char p[20]; char p2[20]="Wesker"; int ergebnis; float zeitlimit; int n; printf("WILLKOMMEN!\n"); printf("PASSWORT FUER SELBSTZERSTOERUNG:\n"); gets(p); int strcmp(const char *p,const char *p2); ergebnis=strcmp(p,p2); if(ergebnis==0) { printf("RICHTIG! ZEITLIMIT IN SEKUNDEN EINGEBEN:\n"); scanf("%f",&zeitlimit); printf("IN %.2f MINUTEN EXPLODIERT DIESER PC! BITTE SICHERHEITSABSTAND EINNEHMEN!\n", zeitlimit); for(zeitlimit=zeitlimit;zeitlimit>=0;zeitlimit--) printf("IN %.2f MINUTEN EXPLODIERT DIESER PC! BITTE SICHERHEITSABSTAND EINNEHMEN!\n", zeitlimit); // BOOM erscheint nicht oO? if(zeitlimit==0) printf("BOOM!!\n"); } else { printf("ZUGRIFF VERWEIGERT!:\n"); system("PAUSE"); return 0; } system("PAUSE"); return 0; }
-
Ich würde das so machen:
#include <string> #include <iostream> #include <Windows.h> using namespace std; int main() { int timer; string pass; cout<<"WILLKOMMEN!"<<endl; cout<<"PASSWORT FUER SELBSTZERSTOERUNG: "; cin>>pass; if("passwort" == pass){ cout<<"RICHTIG! ZEITLIMIT IN SEKUNDEN EINGEBEN (z.B. 30): "; cin>>timer; while(timer > 0){ system("cls"); cout<<"IN "<< timer <<" MINUTEN EXPLODIERT DIESER PC! BITTE SICHERHEITSABSTAND EINNEHMEN!"<<endl; Sleep(1000); timer--; } }else{ cout<<"ZUGRIFF VERWEIGERT!"<<endl; } system("cls"); cout<<"KABOOOM!!!!"<<endl; system("pause"); return 0; }
Sorry ist ein bißchen c++ drin.
gruß smilingman.
-
Cool! Ich hab mal dieses system(cls) gelöscht. Wofür ist das denn? Startet der Pc dann wirklich neu??
Naja kann leider kein C++.
Gibts noch jemanden der das für mich in C erklären kann. Würd das gern in C nachmachen. Oder geht das da nicht?EDIT: YEAH hab es selbst geschafft ^^
Btw, gibt es systemaufruf der den Pc neustartet oder was anderes macht?
-
also system("cls") startet nicht deinen PC neu sondern löscht nur den
Inhalt der Konsole, sodass nicht alles untereinander steht.Alles was du brauchst ist eigentlich die Sleep-Funktion aus meiner Version.
Diese Wartet die angegebene Zeit in millisekundenz.B:
Sleep(1000) //wartet 1000 Milisekunden also 1 Sekunde
die Sleep-Funktion befindet sich in der Windows.h also:
#include <Windows.h>
Die C++ Version hat nur den Unterschied das die Ein-und Ausgabe über
cin und cout erfolgt sonst ist es das selbe wie bei deiner Version
...solltest du also hinbekommen das in dein Program zu übernehmen...Ein Systemaufruf um dein PC runterzufahren währe:
system("shutdown -s");
ist oder sollte aber bei den meisten PC's deaktivierts sein.
gruß smilingman
-
falls es auch unter unixen laufen soll:
#ifdef WIN32 #include <windows.h> #else #include <unistd.h> #endif void Doze (unsigned int seconds) { #ifdef WIN32 Sleep (seconds*1000); #else (void)sleep (seconds); #endif }