Ausgabe nur kurz anzeigen
-
Mein Code:
#include <iostream> #include <conio.h> using namespace std; namespace taste{ const int p_oben = 72; const int p_unten = 80; const int p_rechts = 77; const int p_links = 75; const int leertaste = 32; const int esc = 27; } void spielfeld(int &x, bool &schuss){ char feld[10][10]= {{'_','_','_','_','_','_','_','_','_','_'},//0 {'_','_','_','_','_','_','_','_','_','_'},//1 {'_','_','_','_','_','_','_','_','_','_'},//2 {'_','_','_','_','_','_','_','_','_','_'},//3 {'_','_','_','_','_','_','_','_','_','_'},//4 {'_','_','_','_','_','_','_','_','_','_'},//5 {'_','_','_','_','_','_','_','_','_','_'},//6 {'_','_','_','_','_','_','_','_','_','_'},//7 {'_','_','_','_','_','_','_','_','_','_'},//8 {'_','_','_','_','_','_','_','_','_','_'}};//9 // 0 1 2 3 4 5 6 7 8 9 if(x<0){ x=0; } else if(x>9){ x=9; } else{ } if(schuss==true){ for(unsigned int i=0;i<9;i++){ feld[i][x]='|'; } //y ist die Spalte //x ist die Zeile //X Bewegt sich auf x (Zeile) } feld[9][x]='X'; system("CLS"); for(unsigned int y=0;y<10;y++){ //Gibt das Spielfeld aus 0-9 if(y==0){ } else{ cout << "\n"; } for(unsigned int x=0;x<10;x++){ cout << feld[y][x]; } } schuss=false; } int main(){ int eingabe=0, x=0; bool schuss=false; spielfeld(x, schuss); do{ eingabe=getch(); switch(eingabe){ case taste::p_oben: schuss=true; spielfeld(x, schuss); break; case taste::p_unten: break; case taste::p_rechts: x++; spielfeld(x, schuss); break; case taste::p_links: x--; spielfeld(x, schuss); break; } }while(eingabe!=taste::esc); return 0; }Mein Problem ist ich würde gerne das wenn ich nach oben komme die Reihe von "|", nur einmal kurz gezeigt wird. Ich habe nun damit rumgespielt bekomme es aber nicht hin.
-
Soll die Ausgabe nur in der Konsole ausgegeben werden? (Konsolen-spiel)
Falls ja, wäre meine Idee einfach nochmal eine Ausgabe (oder mehr) zu machen wo das '|' wieder weg ist. Klar kann man dann hoch scrollen, aber das ist dass einzige was mir für die Konsole einfällt.
-
Ausgabe nur kurz anzeigen:
#include <windows.h> void ClearScreen(void) { CONSOLE_SCREEN_BUFFER_INFO csbi; COORD target = {0, 0}; DWORD written; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ', csbi.dwSize.X * csbi.dwSize.Y, target, &written); FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7, csbi.dwSize.X * csbi.dwSize.Y, target, &written); } void SetWindowExt(int x, int y, int yMulti = 1) { SMALL_RECT sr_window = {0, 0, x - 1, y - 1}; COORD extension; CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); extension.X = max(x, csbi.dwMaximumWindowSize.X); extension.Y = max(y, csbi.dwMaximumWindowSize.Y); SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), extension); SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &sr_window); extension.X = x; extension.Y = y * yMulti; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), extension); } void DruckSimpleText(int x, int y, char const *text) { COORD target = {x, y}; DWORD written; WriteConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), text, strlen(text), target, &written); } void SetCursorVisible(BOOL v) { CONSOLE_CURSOR_INFO ci; GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ci); ci.bVisible = v; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ci); } int main() { SetWindowExt(30, 30); ClearScreen(); SetCursorVisible(false); for(int i = 0; i < 10; ++i) { DruckSimpleText(i, i, "kurz Hallo"); Sleep(1000); DruckSimpleText(i, i, " "); } SetCursorVisible(true); }