俄罗斯方块模拟器(tetris 游戏),Python库地址:

https://gitee.com/devilmaycry812839668/gym-tetris

在Python3.7环境下亲测可用:

安装:

pip install gym-tetris

安装好后测试代码:

from nes_py.wrappers import JoypadSpace
import gym_tetris
from gym_tetris.actions import MOVEMENT env = gym_tetris.make('TetrisA-v0')
env = JoypadSpace(env, MOVEMENT) done = True
for step in range(5000):
if done:
state = env.reset()
state, reward, done, info = env.step(env.action_space.sample())
env.render() env.close()

由于上面代码运行过快,不易观察,于是给出修正代码:

from nes_py.wrappers import JoypadSpace
import gym_tetris
from gym_tetris.actions import MOVEMENT import time env = gym_tetris.make('TetrisA-v0')
env = JoypadSpace(env, MOVEMENT) done = True
for step in range(5000):
if done:
state = env.reset()
state, reward, done, info = env.step(env.action_space.sample())
print(info)
env.render()
time.sleep(0.5) env.close()

运行图:

该游戏也可以使用命令启动,进行随机或者人为交互:

命令:

gym_tetris -e <environment ID> -m <`human` or `random`>

其中,

<environment ID>  可以是:

TetrisA-v0

TetrisA-v1

TetrisA-v2

TetrisA-v3

TetrisB-v0

TetrisB-v1

TetrisB-v2

TetrisB-v3

如:

gym_tetris -e TetrisA-v0 -m random

如:

gym_tetris -e TetrisA-v0 -m human

消除的行数与得分关系:(游戏规则)

引自:http://news.4399.com/gonglue/elsfangkuai/xinde/m/321661.html

俄罗斯方块是通过消除填满的行数来进行计分的,最高同时消除4行。消除行数最高,分数得到也就越多。

1.消除1行得10分,因为单行消除时最简单的,分数高不到哪去。

2.消除2行得30分,分数开始激增了,30分还不错。

3.消除3行得60分,分数更高,但是难度也是随之增加。

4.消除4行得100分,用这个来打高分是最快的,但是一不小心就可能挂掉。

这里说的几行是指一次性消除的行数。

==============================================================

其中,使用该模拟器与环境交互时返回的info消息的格式如下:

更多消息参看项目说明文件。

==============================================================

补充一下:

info 信息中的 board_height  是指当前落底的方块最高的高度:

可以看到上图中落底方块的最高高度为4, 于是 board_height 的数值为4 。

在  'statistics'   中, 方块的种类分别表示为:

'T'

'J'

'Z'

'O'

'S'

'L'

'I'

而每一种类型由于可以选择变形,变形不同样式后又用不同字符串表示:

r  、 l  、u 、 d    分别代表 right, left, up ,down 四个变形格式。

v,h 分别代表 垂直和水平。

如:块类型 T, 他可以被表示为四种变化格式,"Tr", "Tl", "Tu", "Td"    , 这也是'current_piece'中所进行的表示。

块类型I, 可以表示为 v, h 两个格式,于是有 "Iv",    "Ih" 这两种'current_piece'中所进行的表示 。

next_piece 可以指出下一个新块的类型,如下图,"I"块(和‘I块的两个具体格式  Iv 或 Ih 无关’)的下一个块为‘Td’块:

===========================================================

该游戏进行 human 模式 人为交互是 ,上下左右使用   w、a、s、d 键, 变形使用 O 或 P 键。

亲测可用的 Linux(Ubuntu18.04下)可运行的俄罗斯方块游戏的仿真环境—————————可用于强化学习算法的游戏模拟器环境的更多相关文章

  1. Linux - Ubuntu18.04下更改apt源为阿里云源

    进入apt目录,备份原来的源地址 cd /etc/apt mv ./source.list ./source.list.bak 修改源文件source.list vim source.list 更换阿 ...

  2. Linux下通过crontab及expect实现自动化处理 --亲测可用

    #!/usr/bin/expect -fspawn /home/scripts/bckup.shexpect "Enter password: "  send "WWQQ ...

  3. Ubuntu18.04下MySQL8.0和Navicat15的安装与使用

    目录 一.MySQL8.0安装 二.Navicat安装并与MySQL连接 一.MySQL8.0安装 注意:若直接 sudo apt install mysql-server,你会发现安装后的版本是5. ...

  4. C#.NET中对称和非对称加密、解密方法汇总--亲测可用

    C#.NET中对称和非对称加密.解密方法汇总--亲测可用   在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...

  5. 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用

    一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...

  6. Kubernetes_手把手打镜像并运行到k8s容器上(亲测可用)

    一.前言 本文使用两个机器 192.168.100.150 是master节点,192.168.100.151 是node1 节点,如下: 演示三个示例,第一个示例wordpress博客系统是指将别人 ...

  7. IntelliJ13+tomcat+jrebel实现热部署(亲测可用)

       网上有很多介绍intellij idea整合jrebel插件实现热部署的文章,但是有的比较复杂,有的不能成功,最后经过各种尝试,实现了整合,亲测可用!步骤说明如下:   一.先下载jrebel安 ...

  8. IDEA 使用Mybatis效率飞起来的必备工具:MybatisCodeHelperPro 最新破解版,亲测可用!

    IDEA 2018.3.5 最新版本亲测可用. Git地址:https://github.com/pengzhile/MyBatisCodeHelper-Pro-Crack/releases 下载最新 ...

  9. Ubuntu18.04下安装搜狗输入法

    Ubuntu18.04下安装搜狗输入法 第一步:安装 fcitx输入框架 sudo apt-get install fcitx 第二步:在官网下载 Linux 版本搜狗输入法 https://piny ...

  10. Windows10安装pycocotools方法,亲测可用!

    如果遇到:No module named 'pycocotools' 错误,说明你的环境需要安装pycocotools,以下介绍在Windows10下安装pycocotools的方法,这是本人结合看过 ...

随机推荐

  1. idea编译报错 静态Map初始化报错java.lang.ExceptionInInitializerError

    idea编译报错 静态Map初始化报错java.lang.ExceptionInInitializerError package cc.mrbird.utils; import java.util.H ...

  2. .Net Core5.0中Autofac依赖注入整合多层,项目中可直接用

    一.配置Autofac替换内置DI 1.安装Nuget包:Autofac,Autofac.Extensions.DependencyInjection 2.Program.cs中CreateHostB ...

  3. Mirror多人联网发布阿里云

    Mirror多人联网发布阿里云 新建模板小书匠 将mirror网络地址和端口选为你阿里云服务器上开放的公网地址和端口 IP与端口 2. 在阿里云服务器安全组中开放你所制定的端口 开放阿里云端口 3. ...

  4. Fastjson基础环境配置与Java基础概念

    Preface 此篇系列文章将会从 Java 的基础语法开始,以 Fastjson 的各个反序列化漏洞分析为结尾,详细记录如何从一个具有基础面向对象编程但毫无 Java 基础的小白成长为了解 Fast ...

  5. 攻防世界——Misc新手练习区解题总结<4>(11、12题)

    第十一题ext3: 方法一:挂载 需要工具:kali虚拟机 下载附件后得到一个linux的系统光盘,我们用kali挂载一下 mount 123 /mnt//123为要挂载的文件名 寻找flag.txt ...

  6. 【论文阅读】GRI: General Reinforced Imitation and its Application to Vision-Based Autonomous Driving

    Column: December 30, 2021 11:01 PM Last edited time: January 10, 2022 4:45 PM Sensor/组织: 3 RGB; 曾经短暂 ...

  7. 实测952Mbps!四路千兆网PCIe拓展方案,国产工业级!

    测试环境说明 运行系统:Debian-11.8 评估板:TL3588-EVM(RK3588J) 模块:PCIe扩展2/4路千兆网口模块 方案:无锡沐创N500L-AM2C-DD.N500L-AM4C- ...

  8. const isProduction = process.env.NODE_ENV === 'production'; 作用

    一. process 要理解 process.env.NODE_ENV 就必须要了解 process,process 是 node 的全局变量,并且 process 有 env 这个属性, 但是没有 ...

  9. 第二部分:关键技术领域的开源实践【Linux服务器自动化运维】

    Linux运维可能会遇到多种问题,这些问题可能源于技术挑战.资源配置.安全性.管理复杂性等多个方面.以下是一些常见的Linux运维问题: 技能要求: Linux系统通常需要较高的技术水平和经验来进行有 ...

  10. [oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算

    和python玩耍 Python 回忆 上次 了解shell环境中的命令 命令 作用 whoami 显示当前用户名 pwd 显示当前文件夹 ls 列出当前文件夹下的内容 python3 仿佛进入大于号 ...