     })
 
   update_msg: ->
-    if @maze.is_target([@x, @y, @z])
+    if @maze.is_finish([@x, @y, @z])
       msg = MazeUI3D.msg['win']
     else if @maze.passage_exists([[@x, @y, @z], [@x, @y, @z + 1]]) or @maze.passage_exists([[@x, @y, @z - 1], [@x, @y, @z]])
       msg = MazeUI3D.msg['updown']

      if unvisited_neighbors.length > 0
        neighbor = choice(unvisited_neighbors)
        passage = [cell, neighbor]
        target = neighbor
        passage.sort()
        @passages[passage] = true
        visited_cells[neighbor] = true

            context.lineWidth = 1
            context.strokeStyle = 'black'
            context.stroke()
          if @maze.is_finish([x, y, z])
            # paint finish mark 
            context.beginPath()
            context.arc(71 * x + 71 / 2, 71 * y + 71 / 2, 21, 0, 2 * Math.PI, false)
            context.lineWidth = 10
