class_docstr: Base (abstract) environment for interactive human play with gym.utils.play.
  
  Additionally to normal actions passed to underlying environment(s) it
  allows to pass special actions by `step` method.
  
  Special actions:
    RETURN_DONE_ACTION: Returns done from `step` to force gym.utils.play to
      call reset.
    TOGGLE_WAIT_ACTION: Change between real-time-play and wait-for-pressed-key
      modes.
    WAIT_MODE_NOOP_ACTION: perform noop action (when wait-for-pressed-key mode
    is on)
  
  For keyboard keys related to actions above see `get_keys_to_action` method.
  
  Naming conventions:
    envs_step_tuples: Dictionary of tuples similar to these returned by
      gym.Env.step().
      {
        "env_name": (observation, reward, done, info),
        ...
      }
      Keys depend on subclass.
class_docstr_tok: ["Base","(","abstract",")","environment","for","interactive","human","play","with","gym.utils.play",".","Additionally","to","normal","actions","passed","to","underlying","environment","(","s",")","it","allows","to","pass","special","actions","by","`","step","`","method",".","Special","actions",":","RETURN_DONE_ACTION",":","Returns","done","from","`","step","`","to","force","gym.utils.play","to","call","reset",".","TOGGLE_WAIT_ACTION",":","Change","between","real-time-play","and","wait-for-pressed-key","modes",".","WAIT_MODE_NOOP_ACTION",":","perform","noop","action","(","when","wait-for-pressed-key","mode","is","on",")","For","keyboard","keys","related","to","actions","above","see","`","get_keys_to_action","`","method",".","Naming","conventions",":","envs_step_tuples",":","Dictionary","of","tuples","similar","to","these","returned","by","gym.Env.step","(",")",".","{","``","env_name","''",":","(","observation",",","reward",",","done",",","info",")",",","...","}","Keys","depend","on","subclass","."]
docstr: Update underlying environment(s) total cumulative rewards.
docstr_tok: ["Update","underlying","environment","(","s",")","total","cumulative","rewards","."]
code: def _update_statistics(self, envs_step_tuples):
      """Update underlying environment(s) total cumulative rewards."""
      raise NotImplementedError
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import gym
  from gym.utils import play
  import numpy
  from tensor2tensor.bin import t2t_trainer
  from tensor2tensor.rl import player_utils
  from tensor2tensor.rl.envs.simulated_batch_env import PIL_Image
  from tensor2tensor.rl.envs.simulated_batch_env import PIL_ImageDraw
  from tensor2tensor.rl.envs.simulated_batch_gym_env import FlatBatchEnv
  from tensor2tensor.rl.rl_utils import absolute_hinge_difference
  from tensor2tensor.rl.rl_utils import full_game_name
  import tensor2tensor.rl.trainer_model_based_params
  from tensor2tensor.utils import registry
  import tensorflow.compat.v1
label_desc: Use image node_id 9 for calling the PlayerEnv obj's underlying member method code with example usage: obj._update_statistics(envs_step_tuples) without return types