저는 아직 C++ 및 프로그래밍에 익숙하지 않지만 좋은 학습 시간을 갖고 있습니다. 지금까지 간단히 WASD 키를 사용하여 화면에서 "#"을 움직여야하는 작고 매우 간단한 ncurses 프로그램을 작성했습니다.새로운 함수 내에서 클래스 변수를 수정할 수 없습니다.
첫 번째 기능인 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'를 "변경할 수 없음"이란 무엇을 의미합니까? 컴파일시 오류가 발생합니까? 그것은 런타임에 아무 일도하지 않습니까? 디버그 인쇄물을 추가 했습니까? –
화면 테두리를 확인하여 화면 바깥으로 그려 내지 않도록 할 수 있습니다. – hochl
죄송합니다. Jonathan이 범위에서 player.x가 정의되지 않았다는 불만을 표시하는 컴파일러를 지정하는 것을 잊어 버렸습니다. 또한 hochl 이후에 할거야 ;-) – maximida