Grafische Darstellung



  • moin
    würd gern ma wissen obs ne möglichkeit gibt einen balken aus 10 zeichen einzufügen der nach jeder falschen eingabe um ein zeichen kleiner wird
    gibts da was?



  • sicherlich gibt's sowas, es kommt auf den GUI Toolkit an, den du verwendest. Hier findest du keine Vernünftige Antwort, am besten hier suchen/fragen.



  • HansiSchmausi schrieb:

    moin
    würd gern ma wissen obs ne möglichkeit gibt einen balken aus 10 zeichen einzufügen der nach jeder falschen eingabe um ein zeichen kleiner wird
    gibts da was?

    Moin,
    du kannst auch das ASCII Konsolen Toolkit benutzen. Für nen Balken.
    Guckst du:

    #include <stdio.h>
    #include <stdlib.h> // rand
    #include <time.h>	// time
    
    #define LEN 10
    unsigned char pwd[LEN+1];
    
    void clearbuf()
    {
    	setvbuf(stdin,NULL,_IONBF,0);
        setvbuf(stdin,NULL,_IOFBF,BUFSIZ);
    }
    
    void make_pwd() 
    {
    	int i;
    	memset(pwd, 0, LEN+1);
    
    	srand( (unsigned)time( NULL ) );
    
    	for( i=0; i<LEN; i++ )
    			pwd[i] = ((float)0x5A-0x41)/RAND_MAX*rand()+0x41;
    }
    
    int pwd_ok( char* str )
    {
    	return strcmp( str, pwd ) == 0;
    }
    
    int disclaimer()
    {
    	puts("\x03\x03\x03 Welcome to Proggingmanias Password Guess \x03\x03\x03");
    	puts("         -- \xC5 GuEsS RiGhT oR DiE \xC5 -- ");
    	puts("\nWarning !");
    	puts("In this game, most probably you will die.");
    	puts("In other words: to survive is almost impossible.");
    	puts("This game is much harder than Galgenm\x84nnchen!");
    	puts("If you realy want to continue, type 'y' and hit Enter.");
    
    	clearbuf();
    	return getchar() == 'y';
    }
    
    int bye()
    {
    	puts("Good bye little coward.");
    	return 0;
    }
    
    int gratulation()
    {
    	puts("\n\nWell done!");
    	puts("I don't know how you made it, but you have won !");
    	puts("Did you use a debugger ?");
    	return 0;
    }
    
    int die_harder()
    {
    	printf("This password could have been saved your live: %s\n", pwd );
    	puts("But you can't know this, because \xC5 YoU ArE DeAd \xC5 ");
    	puts("\x02");
    	return 0;
    
    }
    
    void show_trials(char* balken)
    {
    	char backspaces[35]={0};
    	memset(backspaces, '\b', 34 );
    	printf( "		        ");
    	printf(balken);
        printf(backspaces);
    }
    
    int main()
    {
    	int i,n=1;
    	char input[LEN+1]={0};
    	unsigned char balken[LEN+1]={0};
    	memset(balken, 0xDB, LEN);
    
     	if( !disclaimer() )
    		return bye();
    
    	make_pwd();
    
    	puts("Ok, here we go.");
    	puts("Save your live by typing the correct password.");
    	puts("You have 10 trials, the password length is 10 characters.s\n" );
    
    	printf("Password Guess		");
    	printf( "Trials to live\n");
    
    	for ( i=LEN; i>0; balken[--i]=0 )
    	{
    		show_trials(balken);
    		clearbuf();
    		fgets( input, LEN+1, stdin );
    
    		if ( pwd_ok(input) )
    			return gratulation();
    	}
    
    	die_harder();
    	getchar();
    	return 0;
    }
    

    Wenn es dir zuviel Quelltext ist, hier ist eine abgespeckte Version:

    void balken_demo_light()
    {
    	#define LEN 10
    	int i;
    	unsigned char balken[LEN+1]={0};
    	memset(balken, 0xDB, LEN);
    
    	for ( i=LEN; i>0; balken[--i]=0 )
    	{
    		puts(balken);
    	}
    }
    

    🙂


Anmelden zum Antworten