title: Error: attempt to index global 'playerBul' (a nil value)
body: <p>The error is saying:</p>
  
  <blockquote>
    <p>game.lua:171: attempt to index global 'playerBul' (a nil value)</p>
  </blockquote>
  
  <p>Sorry if I put too much unnecessary code, I just do not know what is causing this error. </p>
  
  <p>here are all the files for this game: </p>
  
  <p><strong>menu.lua:</strong></p>
  
  <pre><code>local menu = {}
  local bannermenu; 
  local selection;
  
  menu.name = 'Menu'
  
  local function play()
  mode = require('game')
  mode.load()
  end 
  
  local options = {
  {['text'] = 'Play', ['action'] = play},
  {['text'] = 'Exit', ['action'] = love.event.quit}
  
  }
  
  function menu.load() 
  bannermenu = love.graphics.newImage(BANNER)
  selection = 1 
  pointer = love.graphics.newImage(POINTER)
  mode = menu 
  end 
  
  function menu.update() 
  return mode 
  end 
  
  function menu.draw() 
  love.graphics.draw(bannermenu, 200,10)
  for i = 1,#options do 
      if i == selection then 
          love.graphics.draw(pointer, 300, 200 + i *20)
      end 
      love.graphics.printf(options[i].text,0,200 + i * 20,   love.graphics.getWidth(), 'center')
  end 
  end 
  
  function menu.keypressed(key)
  if key == "up" then 
      selection = (selection - 2)%(#options) + 1 
  elseif key == "down" then 
      selection = (selection) % (#options) + 1 
  elseif key == "return" then 
      options[selection].action() 
  elseif key == "escape" then
       love.event.quit() 
  end 
  end 
  
  return menu 
  </code></pre>
  
  <p><strong>main.lua</strong></p>
  
  <pre><code>TITLE = 'Die Aliens Die!'
  PLAYER_BULLET = 'Images/playerbullet.png'
  ENEMY_BULLET = 'Images/enemybullet.png'
  HEALTH_IMG = 'Images/life.png'
  ENEMY_UFO = { 
  
  ENEMY_1 = 'Images/enemy1.png',
  ENEMY_2 = 'Images/enemy2.png',
  ENEMY_3 = 'Images/enemy3.png'
  }
  PLAYER_IMG = 'Images/spaceship.png'
  YOU_WIN = 'Images/win.png'
  BANNER = 'Images/banner.png' 
  POINTER = 'Images/pointer.png'
  
  function love.load() 
  love.window.setTitle(TITLE)
  mode = require "menu"
  mode.load() 
  end 
  
  function love.draw()
  mode.draw()
  end 
  
  function love.keypressed(key, isrepeat) 
  mode.keypressed(key)
  end 
  
  function love.update(dt)
  mode.update(dt) 
  end 
  </code></pre>
  
  <p><strong>game.lua</strong></p>
  
  <pre><code>local game = {}
  local playerShip = {}
  local alienUFO = {}
  local bullets = {}
  local alienBullets = {}
  local playerBullets = {}
  local aliens = {{},{},{},{},{},{},{},{},{},{}}
  local health = 3 
  local score = 0 
  local level = 1 
  local alienMovement = true 
  local healthImage;
  local alienQty = 0 
  local pause 
  
  --local function gameOver()
  
  --local function gamwWin()
  
  local function clearTable(t)
  for i = #t,1,-1 do 
      table.remove(t,i)
  end
  end
  
  local function clearAliens()
  for i=#aliens,1,-1 do 
      for j = #aliens[i],1,-1 do 
          table.remove(aliens[i],j)
      end
  end
  end
  
  local function insertAliens()
  alienQty = 0 
  for i=1,4 do 
      for j =1,10 do 
          local alien = {}
          alien.x = (j-1) *alienUFO.width + 10 
          alien.y = (j-1) *alienUFO.width + 35 
          if level ==2 then 
              alien.life = 2 
          if level == 3 then 
              alien.life = 3 
          end
          table.insert(aliens[j], alien)
          alienQty = alienQty + 1 
      end
  end
  end
  end 
  
  local function initGame()
  clearTable(playerBullets)
  clearTable(alienBullets)
  clearAliens()
  insertAliens()
  playerShip.x = love.graphics.getWidth() / 2 - playerShip.width /2 
  end 
  
  local function playerShoot()
  local bullet = {}
  playerShip.x = playerShip.x + 32
  playerShip.y = playerShip.y + 10 
  table.insert(playerBullets, bullet)
  end
  
  local function AlienShoot(x,y)
  local bullet = {}
  bullet.x = alienUFO.width/2 
  bullet.y = y -5 
  table.insert(alienBullets, bullet)
  end 
  
  local function playerShots(dt)
  if next(playerBullets) ~= nil then 
      for i = #playerBullets,1,-1 do 
          playerBullets[i].y = playerBullets[i].y - dt*           playerBullets.bulletSpeed   
          if playerBullets[i].y &lt; 0 then 
              table.remove(playerBullets,i)
          else 
              for j = #aliens, 1,-1 do 
                  for k = #aliens[j],1,-1 do 
                      if next(playerBullets) ~= nil and playerBullets[i] ~= nil     and
                          aliens[j][k].x &lt;= playerBullets[i].x and aliens[j]  [k].x + 50 &gt;= playerBullets[i].x
                          and aliens[j][k].y &lt;= playerBullets[i].y and aliens[j]  [k].y + 47 &gt;= playerBullets[i].y then 
                          table.remove(playerBullets, i)
                          if level == 2 and aliens[j][k].life &gt; 0 then 
                              aliens[j][k].life = aliens[j][k].life - 1 
                          if level == 3 and aliens[j][k].life &gt; 0 then 
                              aliens[j][k].life = aliens[j][k].life - 1 
                          else 
                              table.remove(aliens[j], k) 
                              alienQty = alienQty - 1 
                              score = score + 100 
                          end 
                          break 
                      end
                  end
              end
          end
      end
  end
  end
  
  local function PlayerShot()
  health = health - 1 
  if health == 0 then 
      love.event.quit() -- COME BACK HERE FOR LOSE 
  end
  end
  
  local function AlienShots(dt)
  if next(alienBullets) ~= nil then 
      for i = #alienBullets,1,-1 do 
          alienBullets[i].y = alienBullets[i].y + dt * alienUFO.bulletSpeed
          if alienBullets[i].y &gt; love.graphics.getHeight() then 
              table.remove(alienBullets, i)
          elseif playerShip.x &lt;= alienBullets[i].x and playerShip.x +   playerShip.width &gt;= alienBullets[i].x 
              and playerShip.y &lt;= alienBullets[i].y and playerShip.y +  playerShip.height &gt;- alienBullets[i].y then 
              table.remove(alienBullets, i)
              PlayerShot()
          end
      end
  end
  end
  
  local function nextLVL()
  level = level + 1 
  if level == 2 then 
      alienUFO.image = love.graphics.newImage(alienUFO.ENEMY1)
      alienUFO.speed = 100 
      alienUFO.shotProb = 20
      alienUFO.bullet = alienBul.image 
      initGame()
  elseif level == 3 then 
      alienUFO.image = love.graphics.newImage(alienUFO.ENEMY2)
      initGame()
  elseif level &gt; 3 then 
      love.event.quit() -- COME BACK HERE FOR WIN 
  end
  end 
  
  
  function game.load() 
  pause = false 
  level = 1 
  health = 3 
  score = 0 
  playerShip.speed = 300 
  playerShip.bulletSpeed = 300 
  playerShip.width = 75 
  playerShip.height = 71 
  alienUFO.speed = 70 
  alienUFO.width = 50 
  alienUFO.height = 47 
  alienUFO.ENEMY1 = ENEMY_UFO.ENEMY_1 
  alienUFO.ENEMY2 = ENEMY_UFO.ENEMY_2 
  alienUFO.ENEMY3 = ENEMY_UFO.ENEMY_3 
  alienUFO.bulletSpeed = 300 
  alienUFO.image = love.graphics.newImage(alienUFO.ENEMY3)
  playerShip.IMAGE = PLAYER_IMG
  playerShip.image = love.graphics.newImage(playerShip.IMAGE)
  healthImage = love.graphics.newImage(HEALTH_IMG)
  playerShip.x = love.graphics.getWidth() / 2 - playerShip.width/2 
  playerShip.y = love.graphics.getHeight() - 100 
  playerBul.image = love.graphics.newImage(PLAYER_BULLET)
  alienBul.image = love.graphics.newImage(ENEMY_BULLET)
  initGame()
  end 
  
  function game.draw()
  if pause then 
      love.graphics.print('GAME PAUSED',love.graphics.getWidth()/2 - 20,20)
  end 
  
  if next(playerBullets) ~= nil then 
      for i = 1, #playerBullets do 
          love.graphics.draw(playerBul.image, playerBullets[i].x,    playerBullets[i].y)
      end
  end
  
  if next(alienBullets) ~= nil then 
      for i = 1, #alienBullets do 
          love.graphics.draw(alienBul.image, alienBullets[i].x,    alienBullets[i].y) 
      end
  end
  
  if next(aliens) ~= nil then 
      for i = 1, #aliens do 
          for j = 1, #aliens[i] do 
              love.graphics.draw(alienUFO.image, aliens[i][j].x, aliens[i][j].y)
          end
      end
  end 
  
  love.graphics.print('Score: '..score, love.graphics.getWidth() - 100,20)
  love.graphics.draw(playership.image, playership.x, playerShip.y)
  for i = 1, lives do 
      love.graphics.draw(healthImage, 10+ 1 * 15,20)
  end 
  end 
  
  function game.update(dt)
      if not pause then 
          if alienQty == 0 then 
              nextLVL()
          end 
  
          if love.keyboard.isDown("right") then 
              playerShip.x = playerShip.x + dt * playerShip.speed 
          elseif love.keyboard.isDown("left") then 
              playerShip.x = playerShip.x - dt * playerShip.speed 
          end 
          if love.keyboard.isDown(" ") then 
              playerShoot() 
          end 
          playerShots(dt)
          AlienShots(dt)
          if love.math.random(1,100) &lt; alienUFO.shotProb then 
              local r = love.math.random(1,#aliens)
              if next(aliens[r]) ~= nil then 
                  alienShoot(aliens[r][#aliens[r]].x, aliens[r][#aliens[r]].y)
              end 
          end 
  
          if alienMovement then 
              for i = 1, #aliens do 
                  for j = 1, #aliens[i] do 
                      aliens[i][j].x = aliens[i][j].x + dt * alienUFO.speed
                      if aliens[i][j].x + alienUFO.width + 2 &gt;=    love.graphics.getWidth() then 
                          alienMovement = false 
                      end
                  end
              end
          else 
              for i =1, #aliens do 
                  for j = 1, #aliens[i] do 
                      aliens[i][j].x = aliens[i][j].x - dt * alienUFO.speed 
                      if aliens[i][j].x - 2 &lt;= 0 then 
                          alienMovement = true 
                      end
                  end
              end
          end
          if playerShip.x &lt; 0 then 
              playerShip.x = 0 
              elseif playerShip.x &gt; love.graphics.getWidth() - 75 then 
                  playerShip.x = love.graphics.getWidth() -75
              end 
          end 
      end 
  end
  
  function game.keypressed(key)
      if key =='p' then 
          pause = not pause 
      end 
  end
  
  return game 
  </code></pre>