[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 interessierenAntworten 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