[CMD]Konsolen Spiel mit Pfeiltasten



  • Hi Community!

    Wie kann man eigt. z.B ein Zeichen wie ">" oder so
    in einem CMD Fenster (Konsolen Anwendung) bewegen?
    Also mit welcher Funktion?

    Ich habe jetzt einige ASCII Spiele auf Youtube gesehen
    die das so machen.
    Würde mich interessieren

    Antworten brauchen nicht so detailiert sein 🙂

    MFG: N290



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hier:

    Mach einfach eine Funktion, die Eine Sondertaste abruft. Die Konstanten sind die werte für die Pfeiltasten

    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #define RE 77
    #define LI 75
    #define OB 72
    #define UN 80
    using namespace std;
    
    int Taste(void);
    
    int main (void){
    
        int key = Taste();
        switch (key){
               case RE:
    
               ...
        }    
    
        return 0;
    }     
    int Taste(void){
        int _key;
        _key=getch();
        if(_key==224)
        _key=getch();
        return _key;
    }
    


  • Ich hatte Langeweile..

    Die Erklärungen sind im Code:

    Tasten.h

    #ifndef TASTEN
    #define TASTEN
    
    #include <windows.h>
    #include <iostream>
    
    namespace taste {
    	const int Apfeil_oben   = 72; //die ASCII-tabellenwerte fuer die tasten
        const int Apfeil_unten  = 80;
        const int Apfeil_links  = 75;
        const int Apfeil_rechts = 77;
        const int Aesc          = 27;
        const int Aleer         = 32;
    
        void gotoxy(int X, int Y) { //wir verzichten mal auf prototypen
    		HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    		COORD pos;
    		pos.X = Y - 1;
    		pos.Y = X - 1;
    		SetConsoleCursorPosition(hCon, pos);
    	} //windows-funktion zum setzen der cursorposition
    
    	void pos_cout(int X, int Y, char zeichen) {
    		gotoxy(X, Y);
    		std::cout << zeichen;
    	}
    }
    
    #endif
    

    main.cpp:

    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    
    #include "Tasten.h"
    
    int main() {
    	using namespace std;
    	char Taste;
    	unsigned short Xpos = 1, Ypos = 1; //die position aufm bildschirm
    
    	cout << "<";
    
    	taste::pos_cout(5, 10, 'X'); //ein extra-zeichen ausgeben
    
    	do {
    		Taste = getch(); //zeichen eingeben lassen (ohne enter)
    		switch(Taste) { //taste auswerten
    			case taste::Apfeil_oben: //pfeil nach oben? dann..
    			case 'w': //wasd-steuerung akzeptiert
    			 taste::pos_cout(Xpos, Ypos, ' '); //lösche das alte zeichen vom bild
    			 if(Xpos > 1) --Xpos; //ist er noch nicht am rand, dann verringere Xpos
    			break;
    
    			case taste::Apfeil_unten:
    			case 's':
    			 taste::pos_cout(Xpos, Ypos, ' ');
    			 if(Xpos < 15) ++Xpos;
    			break;
    
    			case taste::Apfeil_rechts:
    			case 'd':
    			 taste::pos_cout(Xpos, Ypos, ' ');
    			 if(Ypos < 30) ++Ypos;
    			break;
    
    			case taste::Apfeil_links:
    			case 'a':
    			 taste::pos_cout(Xpos, Ypos, ' ');
    			 if(Ypos > 1) --Ypos;
    			break;
    
    			default: ; //nichts davon? egal
    		}
    		taste::pos_cout(Xpos, Ypos, '<'); //zeichne zeichen mit aktuellen koord.
    
    		if(Xpos == 5 && Ypos == 10) return 0; //zum spaß: wenn
    		//er das zeichen erreicht wird das prog beendet
    	} while(Taste != taste::Aesc); //solange nicht die esc-taste gedrueckt wurde
    }
    


  • @MGOS & Incocnito
    Danke!
    Werde es gleich mal testen


Log in to reply