對於C++和編程,我還是比較新的,但學習時間很長。我正在編寫一個小型,非常簡單的ncurses程序,到目前爲止,只需使用WASD鍵在屏幕上移動一個「#」即可。無法修改新函數中的類變量
問題是我無法在第一個函數Update()中更改player.x。
下面是代碼:
#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;
}
任何投入將是有益的!
你是什麼意思,你是「無法」改變'player.x'?它會給你一個編譯時錯誤嗎?它在運行時什麼都不做?你有沒有嘗試添加調試打印? – 2012-03-26 01:59:04
您可能需要檢查屏幕邊框,以便您不會在屏幕外畫圖。 – hochl 2012-03-26 02:03:14
抱歉喬納森我忘了指定編譯器抱怨player.x沒有在這個範圍內定義。也hochl我會這樣做後;-) – maximida 2012-03-26 02:17:25