#ifndef _PLAYER_H_
#define _PLAYER_H_ 

class Player
{
	public: 
		Player(WINDOW* win, int y, int x, char c); 
		void mvUp(); 
		void mvDown(); 
		void mvLeft(); 
		void mvRight();
		int getMv(); 
		void display(); 

	private: 
		int  xLoc, yLoc, xMax, yMax; 
		char playerChar; 
		WINDOW * curWin; 	
};


Player::Player(WINDOW* win, int y, int x, char c)
{
	curWin = win; 
	xLoc = x; 
	yLoc = y;
	getmaxyx(curWin, yMax, xMax); 
	keypad(curWin, true); 
	playerChar = c;
}

void Player::mvUp()
{
	mvwaddch(curWin,yLoc, xLoc, '.');	
	yLoc --;	
	if(yLoc < 1)
	{
		yLoc = 1; 
	}
}
 
void Player::mvDown()
{
	mvwaddch(curWin,yLoc, xLoc, '.');	
	yLoc ++;	
	if(yLoc > yMax-2)
	{
		yLoc = yMax-2; 
	}
}
 
void Player::mvLeft()
{
	mvwaddch(curWin,yLoc, xLoc, '.');	
	xLoc --;	
	if(xLoc < 1)
	{
		xLoc = 1; 
	}
}
 
void Player::mvRight()
{
	mvwaddch(curWin,yLoc, xLoc, '.');	
	xLoc ++;	
	if(xLoc > xMax-2)
	{
		xLoc = xMax-2; 
	}
}

int Player::getMv()
{
	int choice = wgetch(curWin); 
	switch(choice)
	{
		case KEY_UP:
			mvUp(); 
			break; 
		case KEY_DOWN:
			mvDown(); 
			break; 
		case KEY_LEFT:
			mvLeft(); 
			break; 
		case KEY_RIGHT:
			mvRight();
			break; 
		default:
			break; 
	}
	return choice;
}
 
void Player::display()
{
	mvwaddch(curWin,yLoc, xLoc, playerChar);	
}
 


#endif
