Ich bin noch relativ neu in C++ und Programmierung, aber ich habe eine gute Zeit zu lernen. Ich schreibe ein kleines, sehr einfaches ncurses-Programm, das bisher mit den WASD-Tasten einfach ein "#" um den Bildschirm bewegen soll.Klassenvariable kann nicht innerhalb der neuen Funktion geändert werden
Das Problem ist, ich bin nicht in der Lage, player.x in der ersten Funktion Update() zu ändern. Hier
ist der Code:
#include <iostream>
#include <ncurses.h>
using namespace std;
class Player
{
public:
int x;
int y;
};
void Update()
{
int z;
z = getch();
if(z == 97) //A key
{
player.x--;
}
if(z == 100) //D key
{
player.x++;
}
if(z == 119) //W key
{
player.y--;
}
if(z == 115) //S key
{
player.y++;
}
}
void Draw(int xPos, int yPos)
{
clear();
mvprintw(yPos,xPos,"#");
refresh();
}
int main()
{
initscr();
noecho();
int doContinue;
Player player;
do
{
Update();
Draw(player.x, player.y);
}while((doContinue=getch()) != 27);
endwin();
return 0;
}
Jede Eingabe wäre hilfreich!
Was meinen Sie, Sie sind" unfähig "' player.x' zu ändern? Gibt es einen Fehler bei der Kompilierung? Tut es zur Laufzeit nichts? Haben Sie Debug-Ausdrucke ausprobiert? –
Sie können nach dem Bildschirmrand suchen, damit Sie nicht außerhalb des Bildschirms zeichnen. – hochl
Sorry Jonathan Ich habe vergessen, den Compiler anzugeben war beschweren player.x wurde in diesem Bereich nicht definiert. Auch hochl mach ich danach ;-) – maximida