Ping Pong in Ansi C verzweifle



  • Big Brother schrieb:

    Damit kann man sehr gut animierte Ascii Grafiken flimmerfrei auf dem Bildschirm tanzen lassen.

    das hier musste dafür nehmen: http://freshmeat.net/projects/libcaca/
    🙂



  • Big Brother schrieb:

    Damit kann man sehr gut animierte Ascii Grafiken flimmerfrei auf dem Bildschirm tanzen lassen.

    Aber nicht ruckelfrei 😃 wegen dem doofen, groben Buchstabenzellen-Raster.
    Also wenn du mich fragst, ich würde das nicht in der Console machen.
    Wenns schon unbedingt Konsole sein muss, dann sowas hier
    http://www.brackeen.com/vga/intro.html
    und dann in nem Dos Emulator wie DOSBox laufen lassen oder so.

    ;fricky schrieb:

    das hier musste dafür nehmen: http://freshmeat.net/projects/libcaca/

    Wie ist da die Ausgabe, im Text Modus(Buchstabenzellen) oder Pixelmode?
    Ich glaube im Textmodus, dann wird der Ping Pong Ball ziemlich ruckelig laufen:

    #include <windows.h> 
    
    typedef int bool;
    enum boolean{false, true};
    
    HANDLE hIn, hOut;
    
    #define BLANK ' '
    #define BALL '*'
    #define SLEEP_TIME 70
    
    bool init_console() {
    	hOut = GetStdHandle ( STD_OUTPUT_HANDLE );
    	hIn = GetStdHandle ( STD_INPUT_HANDLE );
    	return hOut != INVALID_HANDLE_VALUE && hIn != INVALID_HANDLE_VALUE; 
    }
    
    void gotoxy ( short x, short y ) { 
    	COORD pos; pos.X = x, pos.Y =  y;
    	SetConsoleCursorPosition ( hOut, pos ); 
    }  
    
    int main() {
    	int x = 0, y = 0;
    	if ( false == init_console() ) return 0;
    	while(1) {
    		gotoxy ( x, y );
    		putchar(BALL);
    		Sleep(SLEEP_TIME);
    		gotoxy ( x, y );
    		putchar(BLANK);
    		x++, y++;
    		if ( x == 79 ) x = 0;
    		if ( y == 24 ) y = 0;
    	}
    	return 0;
    }
    


  • Big Brother schrieb:

    ;fricky schrieb:

    das hier musste dafür nehmen: http://freshmeat.net/projects/libcaca/

    Wie ist da die Ausgabe, im Text Modus(Buchstabenzellen) oder Pixelmode?
    Ich glaube im Textmodus, dann wird der Ping Pong Ball ziemlich ruckelig laufen:

    textmodus, wie sich das gehört für solche klassiker.
    🙂



  • Big Brother schrieb:

    ...
    int main() {
    	int x = 0, y = 0;
    	if ( false == init_console() ) return 0;
    	while(1) {
    		gotoxy ( x, y );
    		putchar(BALL);
    		Sleep(SLEEP_TIME);
    		gotoxy ( x, y );
    		putchar(BLANK);
    		x++, y++;
    		if ( x == 79 ) x = 0;
    		if ( y == 24 ) y = 0;
    	}
    	return 0;
    }
    

    mach so:

    int main() 
    {
       int x = 0;
       int y = 0;
       int xd = 1;
       int yd = 1;
       if (false == init_console()) 
          return 0;
       while(1) 
       {
          gotoxy (x, y);
          putchar (219);
          Sleep (SLEEP_TIME);
          gotoxy (x, y);
          putchar (BLANK);
          x += xd; 
          y += yd;
          if (x % 79 == 0)
             xd = -xd;
          if (y % 24 == 0) 
             yd = -yd;
        }
    }
    

    🙂



  • ;fricky schrieb:

    textmodus, wie sich das gehört für solche klassiker.
    🙂

    Ok, wer also Lust auf Ruckel Ping Pong hat, machts im Textmodus. :p



  • ;fricky schrieb:

    mach so:

    Cool, damit hätten wir schonmal ne Begrenzung. Muss man nicht so weit laufen, den Ball zu holen, wenn er den Spieltisch verlässt.



  • Big Brother schrieb:

    ;fricky schrieb:

    textmodus, wie sich das gehört für solche klassiker.

    Ok, wer also Lust auf Ruckel Ping Pong hat, machts im Textmodus.

    den elektronenstrahl steuern, so wie die uralt atari-konsolen, kann so'n blöder PC ja nicht.
    🙂



  • Hi, also ich bin jetzt schon viel weiter heute morgen wusst ich nichtmal was in Dimensionales Array ist, jetzt hab ich schonmal ein Feld Programmierert und Grenzen Gesetzt (:

    Kann mir jemand sagen wie ich jetzt weiter mache wie bewege ich den Ball selbstständig?

    #include <iostream> 
    #include <stdio.h> 
    #include <conio.h> 
    using namespace std; 
    
    int main() 
    { 
    
    int pressed; 
    int i=0,j=0; 
    char f=32; 
    char a= 205; 
    char b=186;
    char lo=201;
    char ro=187;
    char lu=200;
    char ru=188;
    char s = 248;
    char m=124;
    int selectedx = 1;
    int selectedy = 1;
    
    char feld[20][74] = { 
    {lo,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,ro}, 
    {b,s,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b},
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b},
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {b,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,m,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,b}, 
    {lu,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,ru}
    }; 
    
    while( 1 == 1 ) 
    { 
    
    pressed = getch();
    feld[selectedy][selectedx] = f;
    if( pressed == 72 && selectedy > 1 ){
    
    	selectedy = selectedy - 1;
    }
    if( pressed == 75 && selectedx > 1 ){
    	selectedx = selectedx - 1;
    }
    if( pressed == 77 && selectedx < 72 ){
    	selectedx = selectedx + 1;
    }
    if( pressed == 80 && selectedy < 18 ){
    	selectedy = selectedy + 1;
    }
    
    feld[selectedy][selectedx] = s;
    
    system("cls");
    for (i=0;i<=19;i++) 
    {
        for(j=0;j<=73;j++){ 
                          cout<<char((feld[i][j]));    
    	}
         cout<<endl; 
    } 
    
    }
    
    }
    

    [cpp]



  • Juice191 schrieb:

    Kann mir jemand sagen wie ich jetzt weiter mache wie bewege ich den Ball selbstständig?

    nimm den code von big brother, der macht das. als nächstes musste noch die schläger bewegen (google mal nach 'kbhit' und so).
    🙂



  • Such mal nach Beispielen zur Funktion ReadConsoleInput. Damit lassen sich Maus/Tastatur Ereignisse und deren Koordinaten abfangen/abfragen.
    Wenn die Mods nicht immmer alles löschen würden...



  • wer bitte schreibt ein ping-pong spiel für cmd???
    dass ist doch erstens arg langsam
    und sieht zweitens besch***** aus

    beschäftige dich doch einfach mal mit ner grafiklib allegro war glaub ich sehr leicht:)
    http://www.c-programmieren.com/Allegro-Tutorial.html

    und ansonsten kann man nur zur winapi und den tausenden von grafiklibs bis zu directx raten


Anmelden zum Antworten