Konsolenspiel: Cursorsteuerung meiner Figur



  • Hallo zusammen,

    ich habe vor mir C++ beizubringen, dazu lese ich gerade das Buch C++ von A bis Z.

    Das lesen alleine einen ja nicht zum Programmierer macht, wollte ich mir mal ein kleines
    Spiel (Snake) programmieren.

    Aber es scheitert schon an der Steuerung meiner Figur (noch ist es keine Schlange ^^).
    Da die Schlange sich ja von selber bewegen soll, muss dies in einer Schleife geschehen.
    Das Problem ist jetzt, wie Ändere ich die Richtung der Schlange? Ich arbeite unter Linux.

    Ich habe versucht mit Signalen zu arbeiten, aber dann scheitere ich daran, das
    CURSOR-UP, CURSOR-DOWN, CURSOR-LEFT, CURSOR-RIGHT keine Signale auslösen,
    die ich abfangen könnte (zumindest weiß ich nicht wie).

    Ich hoffe ich habe mich einigermaßen Verständlich ausgedrückt 😃

    MfG

    schnabel



  • Signale kannst Du unter C so abrufen:

    #include <stdio.h>
    
    int main(void)
    {
    	int ch;
    
    	while ( ch != 'x' )
    	{
    		ch = getch();
    
    		if ( ch == 80 )
    			puts("DOWN");
    		else if ( ch == 75 )
    			puts("LEFT");
    		else if ( ch == 77 )
    			puts("RIGHT");
    		else if ( ch == 72 )
    			puts("UP");
    		else
    			;
    	}
    	getch();
    	return 0;
    }
    

    Statt der Meldung kannst Du andere Anweisungen einfügen.



  • Soweit ich weiß gibt es unter Linux kein getch()...

    Ich hatte mir das Bsp. von Pronix besorgt... Das funktioniert
    dann aber so wenn ich z.B. "w a s d" zum Steuern benutze würde
    sich die Figur mit getch() nur bewegen, wenn ich eine Taste drücke
    also pro Tastendruck eine Zeile/Spalte weiter. Ich habe aber vor
    das sich die Schlange permanent bewegt und ich mit den Tasten
    nur die Richtung ändere...

    MfG



  • Hat das noch keiner gemacht?
    Oder ist die Frage unverständlich?

    MfG



  • stdin?



  • Direkt die Tastatur (Interrupt 09h wenn ich mich nicht täusche) abfragen?

    edit: ne, scheint 16h zu sein und nicht 09h... --> http://www.datasource.de/programmierung/tab13_biosint16h.html
    😉

    ndT Lupo

    Er war einer der wenigen Verleger, die stets
    auf dem Teppich blieben. Er war Teppichverleger.

    ^Markus M. Ronner^



  • hier gibts ne conio-Emulation für Linux
    http://www.gerald-friedland.de/fractor/linux-conio-1.02.tgz

    Die "Figur" muß timergesteuert, z.B. in einer Schleife, mit einer gemerkten Richtung bewegt werden. Dazwischen wird die Richtung der Bewegung durch den Tastendruck geändert.


Anmelden zum Antworten