Having trouble translating in Tile Engine

So I’m having trouble translating the board in this tile engine.

I want to make it so that when the player hits ‘a’ the board would move right so it would give the illusion that the player would be moving left, and so the player would always be in the middle of the screen.

#include < stdio.h >
#include < stdlib.h >
#include < GL/glut.h >
#include < GL/gl.h >

//PROGRAM VARIABLES
void dec(void)
{
}

bool keyStates[256] = { 0 }; // Create an array of boolean values of length 256 (0-255)  
bool keySpecialStates[256] = { 0 };// Create an arroy of boolean values of length 246 (0-245)

float scenePlacementX =  0.0f ;
float scenePlacementY =  0.0f ;
float scenePlacementZ = -25.0f;

float tilePlacementX = 0;
float tilePlacementY = -1.0f;

float playerPlacementX = 0;
float playerPlacementY = 0;

GLuint tex0 = 0;
GLuint tex1 = 0;
GLuint tex2 = 0;

float tilePosX = 0, tilePosY = 0;

float xPos = 0, yPos = 0, zPos = 0, xRot = 0, yRot = 0, angle = 0.0;

int Map1[50][50] = 
{
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
	{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};

int Player[50][50] = 
{
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};

//PROGRAM VARIABLES

GLuint LoadTexture( const char* filename, int width, int height)
{
	unsigned char * data;
    FILE * file;

	file = fopen( filename, "rb" ); // We need to open our file
    if ( file == NULL ) return 0; // If our file is empty, set our texture to empty

	data = (unsigned char *)malloc( width * height * 3 ); // Assign the nessecary memory for the texture

	fread( data, width * height * 3, 1, file ); // read in our file
    fclose( file ); //close our file, no point leaving it open

	glGenTextures( 1, &tex0 ); // then we need to tell OpenGL that we are generating a texture
    glBindTexture( GL_TEXTURE_2D, tex0 ); // now we bind the texture that we are working with
	glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); // set texture environment parameters The parameter GL_MODULATE will blend the texture with whatever is underneath, setting it to GL_DECAL will tell the texture to replace whatever is on the object.

	glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );

	glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); //Here we are setting the parameter to repeat the texture instead of clamping the texture to the edge of our shape.
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

	gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data );
    free( data ); // free the texture
    return tex0; // return the texture data
}

GLuint LoadTexture1( const char* filename, int width, int height)
{
	unsigned char * data;
    FILE * file;

	file = fopen( filename, "rb" ); // We need to open our file
    if ( file == NULL ) return 0; // If our file is empty, set our texture to empty

	data = (unsigned char *)malloc( width * height * 3 ); // Assign the nessecary memory for the texture

	fread( data, width * height * 3, 1, file ); // read in our file
    fclose( file ); //close our file, no point leaving it open

	glGenTextures( 1, &tex1 ); // then we need to tell OpenGL that we are generating a texture
    glBindTexture( GL_TEXTURE_2D, tex1 ); // now we bind the texture that we are working with
	glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); // set texture environment parameters The parameter GL_MODULATE will blend the texture with whatever is underneath, setting it to GL_DECAL will tell the texture to replace whatever is on the object.

	glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );

	glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); //Here we are setting the parameter to repeat the texture instead of clamping the texture to the edge of our shape.
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

	gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data );
    free( data ); // free the texture
    return tex1; // return the texture data
}

GLuint LoadTexture2( const char* filename, int width, int height)
{
	unsigned char * data;
    FILE * file;

	file = fopen( filename, "rb" ); // We need to open our file
    if ( file == NULL ) return 0; // If our file is empty, set our texture to empty

	data = (unsigned char *)malloc( width * height * 3 ); // Assign the nessecary memory for the texture

	fread( data, width * height * 3, 1, file ); // read in our file
    fclose( file ); //close our file, no point leaving it open

	glGenTextures( 1, &tex2 ); // then we need to tell OpenGL that we are generating a texture
    glBindTexture( GL_TEXTURE_2D, tex2 ); // now we bind the texture that we are working with
	glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); // set texture environment parameters The parameter GL_MODULATE will blend the texture with whatever is underneath, setting it to GL_DECAL will tell the texture to replace whatever is on the object.

	glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR );

	glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); //Here we are setting the parameter to repeat the texture instead of clamping the texture to the edge of our shape.
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

	gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data );
    free( data ); // free the texture
    return tex2; // return the texture data
}

void FreeTexture0( GLuint tex0 )
{
  glDeleteTextures( 1, &tex0 ); // Delete our texture, simple enough.
}
void FreeTexture1( GLuint tex1 )
{
  glDeleteTextures( 1, &tex1 ); // Delete our texture, simple enough.
}
void FreeTexture2( GLuint tex2 )
{
  glDeleteTextures( 1, &tex2 ); // Delete our texture, simple enough.
}

void renderTile(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Map1[h][w] == 0)
			{
				glBindTexture( GL_TEXTURE_2D, tex0);
			}
			else if (Map1[h][w] == 1)
			{
				glBindTexture( GL_TEXTURE_2D, tex1);
			}
			glPushMatrix();
			glTranslatef(h, -w, 0);

			glBegin (GL_QUADS);
			glTexCoord2d(0.0, 0.0);
			glVertex3f(0.0, 0.0, 0.0);

			glTexCoord2d(1.0, 0.0);
			glVertex3f(1.0, 0.0, 0.0);

			glTexCoord2d(1.0, 1.0);
			glVertex3f(1.0, 1.0, 0.0);

			glTexCoord2d(0.0, 1.0);
			glVertex3f(0.0, 1.0, 0.0);
			glEnd();
			glPopMatrix();
		}
	}
}

void renderPlayer(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Player[h][w] == 1)
			{
				glBindTexture( GL_TEXTURE_2D, tex2);
				glPushMatrix();
				glTranslatef(w, -h, 0);

				glBegin (GL_QUADS);
				glTexCoord2d(0.0, 0.0);
				glVertex3f(0.0, 0.0, 0.0);

				glTexCoord2d(1.0, 0.0);
				glVertex3f(1.0, 0.0, 0.0);

				glTexCoord2d(1.0, 1.0);
				glVertex3f(1.0, 1.0, 0.0);
	
				glTexCoord2d(0.0, 1.0);
				glVertex3f(0.0, 1.0, 0.0);
				glEnd();
				glPopMatrix();
			}
		}
	}
}

void playerLeft(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Player[h][w] == 1)
			{
				
				Player[h][w] = 0;
				Player[h][w -= 1] = 1;
			}
		}
	}
}

void playerRight(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Player[h][w] == 1)
			{
				Player[h][w] = 0;
				Player[h][w += 1] = 1;
			}
		}
	}
}

void playerUp(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Player[h][w] == 1)
			{
				Player[h][w] = 0;
				Player[h -= 1][w] = 1;
			}
		}
	}
}

void playerDown(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Player[h][w] == 1)
			{
				Player[h][w] = 0;
				Player[h += 1][w] = 1;
			}
		}
	}
}

void Update(int value)
{
	glutPostRedisplay();
	glutTimerFunc(25, Update, 0);
}

void display (void)
{	
	glClearColor(0.f, 0.f, 0.f, 1.f); // Clear the background of our window to red
	glClear(GL_COLOR_BUFFER_BIT); // Clear the color buffer
	glLoadIdentity(); // Load the identity matrix to reset drawing loaction
	glEnable( GL_TEXTURE_2D );
	glTranslatef(-25, 25, -50);

	renderTile();
	renderPlayer();

	glutSwapBuffers(); // Flushes everything above to the window
}

void reshape (int width, int height)
{
	glViewport(0, 0, (GLsizei)width, (GLsizei)height); // Sets viewport to size of the window
	glMatrixMode(GL_PROJECTION); // Switch to the projection matrix so that we can manipulate how our scene is viewed  
	glLoadIdentity(); // Reset the projection matrix to the identity matrix so that we don't get any artifacts (cleaning up)
	
	gluPerspective(60, (GLfloat)width / (GLfloat)height, 0.1, 100.0); // FOV, Aspect ratio, Near and Far rendering values.

	glMatrixMode(GL_MODELVIEW); // Switch back to Model matrix to draw objects.
}

void keyOperations(void)
{
	if (keyStates['a']) 
	{
	glTranslatef(1, 0, 0);
	}
	if (keyStates['b']) 
	{
	
	}
	if (keyStates['c']) 
	{
		
	}
	if (keyStates['d']) 
	{
	playerRight();
	}
	if (keyStates['e']) 
	{
		
	}
	if (keyStates['f']) 
	{
		
	}
	if (keyStates['g']) 
	{
		
	}
	if (keyStates['h']) 
	{
		
	}
	if (keyStates['i']) 
	{
		
	}
	if (keyStates['j']) 
	{
		
	}
	if (keyStates['k']) 
	{
		
	}
	if (keyStates['l']) 
	{
		
	}
	if (keyStates['m']) 
	{
		
	}
	if (keyStates['n']) 
	{
		
	}
	if (keyStates['o']) 
	{
		
	}
	if (keyStates['p']) 
	{
		
	}
	if (keyStates['q']) 
	{
		
	}
	if (keyStates['r']) 
	{
		
	}
	if (keyStates['s']) 
	{
		playerDown();
	}
	if (keyStates['t']) 
	{
		
	}
	if (keyStates['u']) 
	{
		
	}
	if (keyStates['v']) 
	{
		
	}
	if (keyStates['w']) 
	{ 
		playerUp();
	}
	if (keyStates['x']) 
	{
		
	}
	if (keyStates['y']) 
	{
		
	}
	if (keyStates['z']) 
	{
		
	}
	if (keyStates[27]) // ESCAPE
	{
		exit(0);
	}
}

void keySpecialOperations(void) 
{  
	if (keySpecialStates[GLUT_KEY_LEFT]) 
	{ 
		// Blah
	} 
}  

void keyPressed (unsigned char key, int x, int y)
{		
	keyStates[key] = true; // Set the state of the key to pressed
	keyOperations();
}

void keyUp (unsigned char key, int x, int y)
{
	keyStates[key] = false; // Set the state of the key to unpressed
	keyOperations();
}

void keySpecial (int key, int x, int y)
{
	keySpecialStates[key] = true; // Set the state of the key to pressed
	keySpecialOperations();
}

void keySpecialUp (int key, int x, int y)
{
	keySpecialStates[key] = false; // Set the state of the key to unpressed
	keySpecialOperations();
}



int main(int argc, char **argv)
{
	glutSetKeyRepeat(GLUT_KEY_REPEAT_OFF);
	
	glutInit(&argc, argv); // Initialize GLUT 
	glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); // Sets up a single buffered display / Alpha
	glutInitWindowSize (500, 500); // Window size
	glutInitWindowPosition (100, 100); // Window position
	glutCreateWindow ("OpenGL Window"); // Create window
	
	glMatrixMode (GL_PROJECTION);
	glLoadIdentity ();
	glOrtho (0, GLUT_WINDOW_WIDTH, GLUT_WINDOW_HEIGHT, 0, 0, 1);
	glMatrixMode (GL_MODELVIEW);

	glutReshapeFunc(reshape); // Uses our reshape function for reshaping the window
	glutDisplayFunc(display); // Uses our display function for display
	glutKeyboardFunc(keyPressed); // Uses our keyPressed function for keyboard interaction
	glutKeyboardUpFunc(keyUp);// Uses our keyUp function for keyboard interaction when keys are released
	glutSpecialFunc(keySpecial);
	glutSpecialUpFunc(keySpecialUp);

	glutTimerFunc(25, Update, 0);

	tex0 =  LoadTexture("C:/Users/Adrian/Desktop/CodeImages/Dirt.raw", 16, 16);
	tex1 = LoadTexture1("C:/Users/Adrian/Desktop/CodeImages/Bedrock.raw", 16, 16);
	tex2 = LoadTexture2("C:/Users/Adrian/Desktop/CodeImages/Player.raw", 8, 8);

	glutMainLoop(); // Enter main display loop

	FreeTexture0(tex0);
	FreeTexture1(tex1);
	FreeTexture2(tex2);
}

I think the reason for it not translating when I hit ‘a’ is because this function:

void renderTile(void)
{
	for (int h = 0; h < 50; h++)
	{
		for (int w = 0; w < 50; w++)
		{
			if (Map1[h][w] == 0)
			{
				glBindTexture( GL_TEXTURE_2D, tex0);
			}
			else if (Map1[h][w] == 1)
			{
				glBindTexture( GL_TEXTURE_2D, tex1);
			}
			glPushMatrix();
			glTranslatef(h, -w, 0);

			glBegin (GL_QUADS);
			glTexCoord2d(0.0, 0.0);
			glVertex3f(0.0, 0.0, 0.0);

			glTexCoord2d(1.0, 0.0);
			glVertex3f(1.0, 0.0, 0.0);

			glTexCoord2d(1.0, 1.0);
			glVertex3f(1.0, 1.0, 0.0);

			glTexCoord2d(0.0, 1.0);
			glVertex3f(0.0, 1.0, 0.0);
			glEnd();
			glPopMatrix();
		}
	}
}

is constantly redrawing at set coordinates with
glTranslatef(h, -w, 0);

So, does anyone know how I could make it so that I could translate the board?

Your keyboard function modifies the modelview matrix to move the camera and your display function clears the modelview matrix (as your comment says :wink: )


glLoadIdentity(); // Load the identity matrix to reset drawing loaction

You either need to remove the glLoadIdentity() and replace it with a gl{Push,Pop}Matrix pair around the drawing functions or keep track of the camera position in your own variables and apply that as the first thing directly after resetting the modelview matrix.

Just tried this, worked perfectly!
Thank you so much.