class_docstr: Frozen lake involves crossing a frozen lake from Start(S) to Goal(G) without falling into any Holes(H)
  by walking over the Frozen(F) lake.
  The agent may not always move in the intended direction due to the slippery nature of the frozen lake.
  
  
  ### Action Space
  The agent takes a 1-element vector for actions.
  The action space is `(dir)`, where `dir` decides direction to move in which can be:
  
  - 0: LEFT
  - 1: DOWN
  - 2: RIGHT
  - 3: UP
  
  ### Observation Space
  The observation is a value representing the agent's current position as
  current_row * nrows + current_col (where both the row and col start at 0).
  For example, the goal position in the 4x4 map can be calculated as follows: 3 * 4 + 3 = 15.
  The number of possible observations is dependent on the size of the map.
  For example, the 4x4 map has 16 possible observations.
  
  ### Rewards
  
  Reward schedule:
  - Reach goal(G): +1
  - Reach hole(H): 0
  - Reach frozen(F): 0
  
  ### Arguments
  
  ```
  gym.make('FrozenLake-v1', desc=None, map_name="4x4", is_slippery=True)
  ```
  
  `desc`: Used to specify custom map for frozen lake. For example,
  
      desc=["SFFF", "FHFH", "FFFH", "HFFG"].
  
      A random generated map can be specified by calling the function `generate_random_map`. For example,
  
      ```
      from gym.envs.toy_text.frozen_lake import generate_random_map
  
      gym.make('FrozenLake-v1', desc=generate_random_map(size=8))
      ```
  
  `map_name`: ID to use any of the preloaded maps.
  
      "4x4":[
          "SFFF",
          "FHFH",
          "FFFH",
          "HFFG"
          ]
  
      "8x8": [
          "SFFFFFFF",
          "FFFFFFFF",
          "FFFHFFFF",
          "FFFFFHFF",
          "FFFHFFFF",
          "FHHFFFHF",
          "FHFFHFHF",
          "FFFHFFFG",
      ]
  
  `is_slippery`: True/False. If True will move in intended direction with
  probability of 1/3 else will move in either perpendicular direction with
  equal probability of 1/3 in both directions.
  
      For example, if action is left and is_slippery is True, then:
      - P(move left)=1/3
      - P(move up)=1/3
      - P(move down)=1/3
  
  ### Version History
  * v1: Bug fixes to rewards
  * v0: Initial versions release (1.0.0)
class_docstr_tok: ["Frozen","lake","involves","crossing","a","frozen","lake","from","Start","(","S",")","to","Goal","(","G",")","without","falling","into","any","Holes","(","H",")","by","walking","over","the","Frozen","(","F",")","lake",".","The","agent","may","not","always","move","in","the","intended","direction","due","to","the","slippery","nature","of","the","frozen","lake",".","#","#","#","Action","Space","The","agent","takes","a","1-element","vector","for","actions",".","The","action","space","is","`","(","dir",")","`",",","where","`","dir","`","decides","direction","to","move","in","which","can","be",":","-","0",":","LEFT","-","1",":","DOWN","-","2",":","RIGHT","-","3",":","UP","#","#","#","Observation","Space","The","observation","is","a","value","representing","the","agent","'s","current","position","as","current_row","*","nrows","+","current_col","(","where","both","the","row","and","col","start","at","0",")",".","For","example",",","the","goal","position","in","the","4x4","map","can","be","calculated","as","follows",":","3","*","4","+","3","=","15",".","The","number","of","possible","observations","is","dependent","on","the","size","of","the","map",".","For","example",",","the","4x4","map","has","16","possible","observations",".","#","#","#","Rewards","Reward","schedule",":","-","Reach","goal","(","G",")",":","+1","-","Reach","hole","(","H",")",":","0","-","Reach","frozen","(","F",")",":","0","#","#","#","Arguments","``","`","gym.make","(","'FrozenLake-v1","'",",","desc=None",",","map_name=","''","4x4","''",",","is_slippery=True",")","``","`","`","desc","`",":","Used","to","specify","custom","map","for","frozen","lake",".","For","example",",","desc=","[","``","SFFF","''",",","``","FHFH","''",",","``","FFFH","''",",","``","HFFG","''","]",".","A","random","generated","map","can","be","specified","by","calling","the","function","`","generate_random_map","`",".","For","example",",","``","`","from","gym.envs.toy_text.frozen_lake","import","generate_random_map","gym.make","(","'FrozenLake-v1","'",",","desc=generate_random_map","(","size=8",")",")","``","`","`","map_name","`",":","ID","to","use","any","of","the","preloaded","maps",".","``","4x4","''",":","[","``","SFFF","''",",","``","FHFH","''",",","``","FFFH","''",",","``","HFFG","''","]","``","8x8","''",":","[","``","SFFFFFFF","''",",","``","FFFFFFFF","''",",","``","FFFHFFFF","''",",","``","FFFFFHFF","''",",","``","FFFHFFFF","''",",","``","FHHFFFHF","''",",","``","FHFFHFHF","''",",","``","FFFHFFFG","''",",","]","`","is_slippery","`",":","True\/False",".","If","True","will","move","in","intended","direction","with","probability","of","1\/3","else","will","move","in","either","perpendicular","direction","with","equal","probability","of","1\/3","in","both","directions",".","For","example",",","if","action","is","left","and","is_slippery","is","True",",","then",":","-","P","(","move","left",")","=1\/3","-","P","(","move","up",")","=1\/3","-","P","(","move","down",")","=1\/3","#","#","#","Version","History","*","v1",":","Bug","fixes","to","rewards","*","v0",":","Initial","versions","release","(","1.0.0",")"]
code: def close(self):
      if self.window_surface is not None:
          import pygame
  
          pygame.display.quit()
          pygame.quit()
  
file_path: gym/gym/envs/toy_text/frozen_lake.py
imports: from contextlib import closing
  from io import StringIO
  from os import path
  from typing import List, Optional
  import numpy
  from gym import Env, logger, spaces, utils
  from gym.envs.toy_text.utils import categorical_sample
  from gym.error import DependencyNotInstalled
label_desc: Use image node_id 8 for calling the FrozenLakeEnv obj's underlying member method code with example usage: obj.close() without return types