public void reset() {
    if (!refresher.isRunning()) refresher.start();
    if (timer != null) timer.stop();
    // Create players
    winDelay = false;
    playersLeft = playerNum;
    playerList = new ArrayList<Tank>();
    for(int i = 0; i <= playerNum; i++) {
      switch(i) {
      case 1: createPlayer(Color.RED, 1); break;
      case 2: createPlayer(Color.BLUE, 2); break;
      case 3: createPlayer(Color.GREEN, 3); break;
      case 4: createPlayer(Color.PINK, 4); break;
      }
    }

    // Create powerbar
    powerBar = new Slider(0, FIELD_WIDTH, FIELD_HEIGHT);
    
    // Create field map
    fieldSprites = new LinkedList<Sprite>();
    
    // Create Bricks
    brick1 = new Brick(0, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick2 = new Brick(150, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick3 = new Brick(300, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT),  
        FIELD_WIDTH, FIELD_HEIGHT);
    brick4 = new Brick(450, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick5 = new Brick(600, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick6 = new Brick(750, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT),
        FIELD_WIDTH, FIELD_HEIGHT);
    brick7 = new Brick(900, 
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick8 = new Brick((int) (Math.random() * FIELD_WIDTH),
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick9 = new Brick((int) (Math.random() * FIELD_WIDTH),
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    brick10 = new Brick((int) (Math.random() * FIELD_WIDTH),
        FIELD_HEIGHT - (int) (Math.random() * FIELD_HEIGHT), 
        FIELD_WIDTH, FIELD_HEIGHT);
    fieldSprites.add(brick1);
    fieldSprites.add(brick2);
    fieldSprites.add(brick3);
    fieldSprites.add(brick4);
    fieldSprites.add(brick5);
    fieldSprites.add(brick6);
    fieldSprites.add(brick7);
    fieldSprites.add(brick8);
    fieldSprites.add(brick9);
    fieldSprites.add(brick10);

    
    // Create Dividers
    vert1 = new VertDivider((int) (Math.random() * FIELD_WIDTH),
        15, FIELD_WIDTH, FIELD_HEIGHT);
    vert2 = new VertDivider((int) (Math.random() * FIELD_WIDTH),
        15, FIELD_WIDTH, FIELD_HEIGHT);
    vert3 = new VertDivider((int) (Math.random() * FIELD_WIDTH),
        15, FIELD_WIDTH, FIELD_HEIGHT);
    
    horiz1 = new HorizDivider(1, FIELD_HEIGHT - 24, 
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz2 = new HorizDivider(1, FIELD_HEIGHT - 22, 
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz3 = new HorizDivider(1, FIELD_HEIGHT - 20,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz4 = new HorizDivider(1, FIELD_HEIGHT - 18,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz5 = new HorizDivider(1, FIELD_HEIGHT - 16,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz6 = new HorizDivider(334, FIELD_HEIGHT - 74,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz7 = new HorizDivider(334, FIELD_HEIGHT - 72,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz8 = new HorizDivider(334, FIELD_HEIGHT - 70,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz9 = new HorizDivider(334, FIELD_HEIGHT - 68,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz10 = new HorizDivider(334, FIELD_HEIGHT - 66,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz11 = new HorizDivider(667, FIELD_HEIGHT - 24,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz12 = new HorizDivider(667, FIELD_HEIGHT - 22,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz13 = new HorizDivider(667, FIELD_HEIGHT - 20,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz14 = new HorizDivider(667, FIELD_HEIGHT - 18,
        FIELD_WIDTH, FIELD_HEIGHT);
    horiz15 = new HorizDivider(667, FIELD_HEIGHT - 16,
        FIELD_WIDTH, FIELD_HEIGHT);
    fieldSprites.add(vert1);
    fieldSprites.add(vert2);
    fieldSprites.add(vert3);
    fieldSprites.add(horiz1);
    fieldSprites.add(horiz2);
    fieldSprites.add(horiz3);
    fieldSprites.add(horiz4);
    fieldSprites.add(horiz5);
    fieldSprites.add(horiz6);
    fieldSprites.add(horiz7);
    fieldSprites.add(horiz8);
    fieldSprites.add(horiz9);
    fieldSprites.add(horiz10);
    fieldSprites.add(horiz11);
    fieldSprites.add(horiz12);
    fieldSprites.add(horiz13);
    fieldSprites.add(horiz14);
    fieldSprites.add(horiz15);
    
    // Begin first turn
    currPlayer = 0;
    currentPlayer = playerList.get(currPlayer);
    nextTurn();

    // Create Turn timer
    timer = new Timer(ONE_SECOND, new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        turnTimer.setText(Integer.toString(timeCount));

        if (currentPlayer.isAlive) {
          playerStatus.setText(currentPlayer.name + " ");
          currentPlayer.velX = 0;
          currentPlayer.isTurn = true;
          timeCount--;
          if (timeCount <= 0) {
            nextTurn();
          }
        } else {
          nextTurn();
        }
      }
    });
    timer.start();

    playing = true;

    // Set component's focus on keyboard
    requestFocusInWindow();
  }