Konsolen Matrix ??



  • kann ich sowas --> http://www.nerdland.de/img_bg/images/matrix.JPG <-- in der Konsole von Vista aniemeiren ? 😕

    mit dem habe ich nur waagrechte zeichen hinkriegen können !

    void strich (int x) {
        for(int a=1 ; a<=x; ++a)
    	cout << ":";
    	cout << endl;
    }
    .....
    int main () {
        strich (50000) ;
    ........
    }
    

    Es muss nicht dieselbe geschwindigkeit sein wie im Film !



  • C++Laie1 schrieb:

    kann ich sowas --> http://www.nerdland.de/img_bg/images/matrix.JPG <-- in der Konsole von Vista aniemeiren ? 😕

    mit dem habe ich nur waagrechte zeichen hinkriegen können !

    void strich (int x) {
        for(int a=1 ; a<=x; ++a)
    	cout << ":";
    	cout << endl;
    }
    .....
    int main () {
        strich (50000) ;
    ........
    }
    

    Es muss nicht dieselbe geschwindigkeit sein wie im Film !

    Was für ein Film?

    Und warum Konsolen-Matrix? Da musst schon rechnen...
    Große Matrizen sind nicht gerade einfach.



  • er will wohl sowas wie im matrix-film darstellen und nicht mit matrizien wie in der mathematik rechnen^^.

    Also folgendes:
    Du musst wohl zuerst einen kleinen Buffer für eine Zeile erstellen, indem du verschiedene Zeichen reinschreibst.

    Dann steckst du das ganze am besten in eine endlos Schleife, die durch das drücken von einer Taste beendet wird und welche den Text im Buffer ausgibt, löscht und wieder mit neuen zufälligen Werten füllt.

    Wird zwar nicht so schön wie das Original, aber ist wenigstens ein Anfang 😉



  • ENTER --> Vollbild/Fenster
    ESC   --> Abbruch
    
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <conio.h>
    
    #define FLAG 1
    
    typedef struct{
    	unsigned short x,y;
    }dimensions;
    
    void go_to_xy(unsigned short _x,unsigned short _y){
    	HANDLE console_handle=GetStdHandle(STD_OUTPUT_HANDLE);
    	COORD position;
    	position.X=_x-1; position.Y=_y-1;
    	SetConsoleCursorPosition(console_handle,position); 
    }
    
    dimensions get_console_dimensions(void){
    	CONSOLE_SCREEN_BUFFER_INFO info_buffer;
    	dimensions console_dimensions;
    	GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&info_buffer);
    	console_dimensions.x=info_buffer.srWindow.Right;
    	console_dimensions.y=info_buffer.srWindow.Bottom;
    	return console_dimensions;
    }
    
    unsigned char random_number(unsigned short _max,unsigned short _flag){
    	unsigned char random_value=(rand()%(2+_max));
    	if((random_value=='\a'||random_value=='\n')&&_flag!=FLAG)
    		return 0;
    	else
    		return random_value;
    }
    
    void SetConsoleModeFullscreen(){
    	const HMODULE kernel_dll=LoadLibraryA("kernel32.dll");
        typedef BOOL(WINAPI  *set_console_display_mode_fpt)(HANDLE,DWORD,PCOORD);
    	COORD dimension;
        set_console_display_mode_fpt set_console_display_mode=(set_console_display_mode_fpt)(GetProcAddress(kernel_dll,"SetConsoleDisplayMode"));
    	set_console_display_mode(GetStdHandle(STD_OUTPUT_HANDLE),1,&dimension);
        FreeLibrary(kernel_dll);
    	system("CLS");
    }
    
    void SetConsoleModeWindow(){
    	const HMODULE kernel_dll=LoadLibraryA("kernel32.dll");
        typedef BOOL(WINAPI  *set_console_display_mode_fpt)(HANDLE,DWORD,PCOORD);
    	COORD dimension;
        set_console_display_mode_fpt set_console_display_mode=(set_console_display_mode_fpt)(GetProcAddress(kernel_dll,"SetConsoleDisplayMode"));
    	set_console_display_mode(GetStdHandle(STD_OUTPUT_HANDLE),2,&dimension);
        FreeLibrary(kernel_dll);
    	system("CLS");
    }
    
    int main(void){
    	unsigned char consolemode=0;
    	SetConsoleModeWindow();
    	srand((unsigned int)(time(NULL)));
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    
    LOOP:
    	if(_kbhit()==1){
    		switch(_getch()){
    			case 0x1B : goto END; break;
    			case '\r' : if(consolemode==0){
    							SetConsoleModeFullscreen();
    							consolemode=1;
    						}
    						else{
    							SetConsoleModeWindow();
    							consolemode=0;
    						}
    						break;
    			default: fflush(stdin);
    		}
    	}
    	go_to_xy(random_number(get_console_dimensions().x,FLAG),random_number(get_console_dimensions().y,FLAG));
    	printf("%c",random_number(256,0));
    	goto LOOP;
    
    END:
    	return EXIT_SUCCESS;
    }
    


  • Der Code der von labrador geschriebn wurde ist genau das was ich wollte , 👍 👍 😃



  • Habe mich mit genau dem gleichen Problem befasst 🙂

    schau mal hier


Anmelden zum Antworten