Index: pong.cpp
===================================================================
--- pong.cpp	(revision eeece4e8ea23536fdef9123c508cc52c41593cbf)
+++ pong.cpp	(revision 363d5ff6cacd07f9ddd87fe6d70dab726a6f90ea)
@@ -96,10 +96,10 @@
 
    GLfloat points_paddle[] = {
-      -1.0f,  1.0f,  0.0f,
-      -1.0f,  0.7f,  0.0f,
-      -0.9f,  0.7f,  0.0f,
-      -1.0f,  1.0f,  0.0f,
-      -0.9f,  0.7f,  0.0f,
-      -0.9f,  1.0f,  0.0f,
+      -1.0f,  0.15f,  0.0f,
+      -1.0f, -0.15f,  0.0f,
+      -0.9f, -0.15f,  0.0f,
+      -1.0f,  0.15f,  0.0f,
+      -0.9f, -0.15f,  0.0f,
+      -0.9f,  0.15f,  0.0f,
    };
 
@@ -142,4 +142,5 @@
    float speed = 1.0f;
    float last_position = 0.0f;
+   float last_paddle_pos = 0.0f;
 
    double previous_seconds = glfwGetTime();
@@ -156,4 +157,5 @@
 
       model[12] = 0.0f;
+      model[13] = last_paddle_pos;
       glUniformMatrix4fv(location, 1, GL_FALSE, model);
 
@@ -166,4 +168,5 @@
       model[12] = last_position + speed*elapsed_seconds;
       last_position = model[12];
+      model[13] = 0.0f;
       glUniformMatrix4fv(location, 1, GL_FALSE, model);
 
@@ -179,4 +182,16 @@
       if (GLFW_PRESS == glfwGetKey(window, GLFW_KEY_ESCAPE)) {
          glfwSetWindowShouldClose(window, 1);
+      }
+      if (GLFW_PRESS == glfwGetKey(window, GLFW_KEY_UP)) {
+         last_paddle_pos += 1.0f * elapsed_seconds;
+         if (last_paddle_pos > 0.85f) {
+            last_paddle_pos = 0.85f;
+         }
+      }
+      if (GLFW_PRESS == glfwGetKey(window, GLFW_KEY_DOWN)) {
+         last_paddle_pos -= 1.0f * elapsed_seconds;
+         if (last_paddle_pos < -0.85f) {
+            last_paddle_pos = -0.85f;
+         }
       }
    }
