Gewöhne dir beim Programmdesign an, verschiedene Funktionalitäten in verschiedene Programmteile (bei C++ sinnvollerweise Klassen) zu kapseln, hier also z.B. die Nutzeraktionen und die Ausgabe, und presse nicht alles in eine Klasse.
Dazu ist natürlich ein kompletter Überblick über die Dinge notwendig.
Dann definierst du die Schnittstellen deiner Klassen, instanziierst die Objekte (das geschieht sinnvollerweise in main oder zumindest in ein und derselben Aufrufebene) und arbeitest vorrangig mit den Objekten und deren Schnittstellenmethoden und eben nicht mit Funktionen (Sinn der OOP).
#include <iostream>
#include <cstdlib>
#include <windows.h>
using namespace std;
struct Brett {
Brett::Brett() {
x = 3; y = 8; char z[10][8] = {
"ÉÍÍÍÍÍ»",
"º º",
"º º",
"º º",
"º º",
"º º",
"º º",
"º º",
"º @ º",
"ÈÍÍÍÍͼ" };
memcpy(pMap,z,sizeof z);
}
char pMap[10][8];
int x, y;
void left(){ if (pMap[y][x-1] == ' ') pMap[y][x--] = ' ', pMap[y][x] = '@'; }
void right(){ if (pMap[y][x+1] == ' ') pMap[y][x++] = ' ', pMap[y][x] = '@'; }
void up(){ if (pMap[y-1][x] == ' ') pMap[y--][x] = ' ', pMap[y][x] = '@'; }
void down(){ if (pMap[y+1][x] == ' ') pMap[y++][x] = ' ', pMap[y][x] = '@'; }
void sp(int choosecolor)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), choosecolor);
}
void s()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void print()
{
for (int i = 0; i < 10; i++)
{
sp(697);
cout << pMap[i] << "\n";
s();
}
system("pause>nul");
}
};
class Player
{
Brett *brett;
void getKey();
bool game_running;
void clearscreen();
public:
Player(Brett&b){
game_running = true; brett = &b;
}
void run();
};
void Player::run()
{
while (game_running == true)
{
clearscreen();
brett->print();
getKey();
}
}
void Player::getKey()
{
if (GetAsyncKeyState(VK_LEFT))
{
brett->left();
}
else
if (GetAsyncKeyState(VK_RIGHT))
{
brett->right();
}
else
if (GetAsyncKeyState(VK_UP))
{
brett->up();
}
else
if (GetAsyncKeyState(VK_DOWN))
{
brett->down();
}
else
if (GetAsyncKeyState(VK_ESCAPE))
{
game_running = false;
exit(0);
}
}
void Player::clearscreen()
{
HANDLE hOut;
COORD Position;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
Position.X = 0;
Position.Y = 0;
SetConsoleCursorPosition(hOut, Position);
}
int main()
{
Brett brett;
Player player(brett);
player.run();
}