Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 3 of 3

Thread: Having trouble translating in Tile Engine

  1. #1
    Junior Member Newbie
    Join Date
    Feb 2012
    Location
    Maine
    Posts
    3

    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.

    Code :
    #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, &amp;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, &amp;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, &amp;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, &amp;tex0 ); // Delete our texture, simple enough.
    }
    void FreeTexture1( GLuint tex1 )
    {
      glDeleteTextures( 1, &amp;tex1 ); // Delete our texture, simple enough.
    }
    void FreeTexture2( GLuint tex2 )
    {
      glDeleteTextures( 1, &amp;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(&amp;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:
    Code :
    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?

  2. #2
    Member Regular Contributor
    Join Date
    Apr 2010
    Posts
    493

    Re: Having trouble translating in Tile Engine

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

    Code :
    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.

  3. #3
    Junior Member Newbie
    Join Date
    Feb 2012
    Location
    Maine
    Posts
    3

    Re: Having trouble translating in Tile Engine

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

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •