Also dein Code oben ist noch nich so recht Anwendungstauglich
Da du 4* _getche() hintereinander hast wirst du Probleme dabei haben rauszufinden, was der Nutzer wirklich will
Übrigens solltest du mal lieber _getch() statt _getche() verwenden, denn ich kann mir nicht vorstellen, dass es in diesem Fall gewünscht ist, dass der Tastendruck im Consolenfenster angezeigt wird
Schau dir mal folgenden Code an:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <iostream>
// angenommen der Header für die extra Funktionen aus der FAQ heißt console.h
#include <console.h>
int main()
{
player hero; // player sollte mindestens Position und Zeichen des Helden beinhalten und initialisieren
char userselection=0; // wird später mit _getch() verwendet
bool run=true;
Console::cursor(0);
std::cout << Console::manip_gotoxy(hero.x, hero.y) << hero.sign;
while (run)
{
userselection=_getch();
if (userselection=='q' || userselection=='Q') // Quit
{
run=false;
}
std::cout << Console::manip_gotoxy(hero.x, hero.y) << ' '; // Alte Playerposition leer zeichnen
if (userselection=='w' || userselection=='W') // Up
{
hero.y -=1;
}
if (userselection=='s' || userselection=='S') // Down
{
hero.y +=1;
}
if (userselection=='a' || userselection=='A') // Left
{
hero.x -=1;
}
if (userselection=='d' || userselection=='D') // Right
{
hero.x +=1;
}
std::cout << Console::manip_gotoxy(hero.x, hero.y) << hero.sign; // neue Pos. zeichnen (sign == Playerzeichen)
}
return 0;
}
|
// €dit:
Das Console::manip_gotoxy hab ich nicht direkt aus der FAQ sondern dabei beziehe ich mich auf meinen Code aus dem Thread, der mit der FAQ verlinkt ist. Gemäß FAQ müsste das Player zeichnen in 2 Schritten gehen:
|
C-/C++-Quelltext
|
1
2
|
Console::gotoxy(player.x, player.y);
std::cout << player.sign;
|
€dit2: (fehlerbehebung)
player durch hero ersetzt
Console:: hinzugefügt
€dit3:
Console::cursor(0) hinzugefügt, damits besser ausschaut und den Playre am Start erstma zeichnen lassen.