Tastatureingaben
-
Hi Leute ich bin grad dabei ein kleines 'ballerspiel' in ner konsole zu proggen. Nun müsste ich auf die Tastatur zugreifen, d.h. z.b. auf die Pfeiltasten. Wie geht sowas?
Bitte helft mir!
danke schonmal
-
#include <windows.h> #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; void gotoxy(int x,int y) { COORD cur={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cur); } int main() { int x=10,y=20; gotoxy(x,y); char chr; do{ chr=getch(); if ((chr==224) || (chr==0)){ chr=getch(); switch(chr){ case 75: gotoxy(x-1,y); break; case 77: gotoxy(x+1,y); break; case 80: gotoxy(x,y-1); break; case 72: gotoxy(x,y+1); break; } } }while(true); system("pause"); return 0; }
ich wollte damit den cursor durch die pfeiltasten frei beweglich machen
aber irgendwie funktioniert das nicht
weiß jemand woran es liegt?
-
Probiers mal so:
#include <windows.h> #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; void gotoxy(int x,int y) { COORD cur={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),cur); } int main() { char chr; int x=10,y=20; gotoxy(x,y); do{ chr=getch(); if (kbhit()) chr=getch(); // Neu switch(chr){ case 75: gotoxy(x-1,y); break; case 77: gotoxy(x+1,y); break; case 80: gotoxy(x,y-1); break; case 72: gotoxy(x,y+1); break; default: continue; // Neu } } }while(true); system("pause"); return 0; }
-
Das läuft nur, wenn nur Pfeiltasten eingegeben wurden, schau mal in der FAQ unter "Einlesen von Sonderzeichen"
MfG SideWinder
-
ok danke schonmal ihr habt mir echt geholfen ichhab jetzt bloß noch ein problem
wie macht man das,wiez.b. bei pong, es eine leiste an der seite gibt,die sich bewegt und auch glaub ich vom cursor gezeichnet wird, und gleichzeitig ein zweiter cursor den Ball zeichnet???
die position zu bestimmen von dem ball is ja kein problem und eigentlich auch nicht, dass der sich bewegt, aber normalerweise kann sollte man bei pong ja nicht nur zuschauen können wie schön der ball fliegt sondern auch darauf reagieren könnenalso kann man irgendwie einfach einen zweiten cursor einbauen?und wenn ja wie?
bin für jede hilfe dankbar...
-
Nein, aber du kannst ein Ascii-Zeichen malen das wie ein Block aussieht, weiß den Code jetzt allerdings nicht auswendig. Funktioniert aber ganz gut
MfG SideWinder
-
wie nen block zeichnen? die zeichen für den ball und das brett an der seite hab ich ja bloß ich kannn die ncht aufeinmal zeichnen
-
Beistriche setzen hilft, ich habe jetzt lange Zeit gebraucht um zu verstehen was du willst.
Wieso kannst du die nicht auf einmal zeichnen?
gotoxy(ballx,bally); cout << ballzeichen; gotoxy(brettx,bretty); cout << brettzeichen;
MfG SideWinder
-
ich zeichne mit dem cursor erst einmal das brett an der seite. da das aber sich dauernd bewegen muss, brauch ich den cursor eigentlich dauernd, um die neue position vom brett zu zeichnen(bewegung). aber der ball soll sich ja auch bewegen. wenn ich das mit einem cursor mache, muss ich erstens dauernd von der brettposition zur ballposition springen und zweitens kann man dann die position von dem brett nicht verändern, während sich der ball bewegt(soll ja flüssig aussehen)
das ist mein problem ich hab das auch schon in nem anderen prog versucht. das war ein kleiner shooter. und immer wenn ich geschossen habe, konnte ich die position von dem cursor, der die schussposition markiert, nicht ändern.
ich denke bei pong is sowas ein echtes problem oder nicht?
oder kann man da irgendwie das auge austricksen?