亲测可用的 Linux(Ubuntu18.04下)可运行的俄罗斯方块游戏的仿真环境—————————可用于强化学习算法的游戏模拟器环境
俄罗斯方块模拟器(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下)可运行的俄罗斯方块游戏的仿真环境—————————可用于强化学习算法的游戏模拟器环境的更多相关文章
- Linux - Ubuntu18.04下更改apt源为阿里云源
进入apt目录,备份原来的源地址 cd /etc/apt mv ./source.list ./source.list.bak 修改源文件source.list vim source.list 更换阿 ...
- Linux下通过crontab及expect实现自动化处理 --亲测可用
#!/usr/bin/expect -fspawn /home/scripts/bckup.shexpect "Enter password: " send "WWQQ ...
- Ubuntu18.04下MySQL8.0和Navicat15的安装与使用
目录 一.MySQL8.0安装 二.Navicat安装并与MySQL连接 一.MySQL8.0安装 注意:若直接 sudo apt install mysql-server,你会发现安装后的版本是5. ...
- C#.NET中对称和非对称加密、解密方法汇总--亲测可用
C#.NET中对称和非对称加密.解密方法汇总--亲测可用 在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...
- 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用
一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...
- Kubernetes_手把手打镜像并运行到k8s容器上(亲测可用)
一.前言 本文使用两个机器 192.168.100.150 是master节点,192.168.100.151 是node1 节点,如下: 演示三个示例,第一个示例wordpress博客系统是指将别人 ...
- IntelliJ13+tomcat+jrebel实现热部署(亲测可用)
网上有很多介绍intellij idea整合jrebel插件实现热部署的文章,但是有的比较复杂,有的不能成功,最后经过各种尝试,实现了整合,亲测可用!步骤说明如下: 一.先下载jrebel安 ...
- IDEA 使用Mybatis效率飞起来的必备工具:MybatisCodeHelperPro 最新破解版,亲测可用!
IDEA 2018.3.5 最新版本亲测可用. Git地址:https://github.com/pengzhile/MyBatisCodeHelper-Pro-Crack/releases 下载最新 ...
- Ubuntu18.04下安装搜狗输入法
Ubuntu18.04下安装搜狗输入法 第一步:安装 fcitx输入框架 sudo apt-get install fcitx 第二步:在官网下载 Linux 版本搜狗输入法 https://piny ...
- Windows10安装pycocotools方法,亲测可用!
如果遇到:No module named 'pycocotools' 错误,说明你的环境需要安装pycocotools,以下介绍在Windows10下安装pycocotools的方法,这是本人结合看过 ...
随机推荐
- MS SQL SERVER 创建表、索引、添加字段等常用脚本
创建表: if not exists ( select 1 from sysobjects where id=object_id('PayChannelNm') ) create table [dbo ...
- django通过channels实现websocket
WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex ...
- idea如何快速找到项目中待处理的TODO注释
idea如何快速找到项目中待处理的TODO注释 idea菜单栏 View -> Tool Windows,可以打开TODO窗口
- Lecture4
Smiling & Weeping ---- 行于山水之间 权且停留 无所谓风起叶落,浮光敛形 此刻 身即自由 第四章 Git 工具 Author: Martin 本章主要介绍 Git 常 ...
- 初识 SpringMVC,运行配置第一个Spring MVC 程序
1. 初识 SpringMVC,运行配置第一个Spring MVC 程序 @ 目录 1. 初识 SpringMVC,运行配置第一个Spring MVC 程序 1.1 什么是 MVC 2. Spring ...
- Codeforces 1868C/1869E Travel Plan 题解 | 巧妙思路与 dp
为了更好的阅读体验,请点击这里 题目链接:Travel Plan 题目大意:\(n\) 个点的完全二叉树,每个点可以分配 \(1 \sim m\) 的点权,定义路径价值为路径中最大的点权,求所有路径的 ...
- TrustZone与高通
改编自:https://blog.csdn.net/guyongqiangx/article/details/78020257 介绍 导读 Q:什么是Trust Zone A:Trust Zone:是 ...
- Linux 获取 指定目录 下的 最大子目录深度
命令 function getDirMaxDepth() { folder_name="$1" if [ ! -d "$folder_name" ];then ...
- unp.h的安装以及第一个程序的运行
unp.h的安装以及第一个程序的运行 源代码下载以及编译 点击此处下载源代码 解压到本地文件夹,如果访问不了GitHub的话就用我搬到gitee的仓库吧 git clone https://gitee ...
- 网络化的控制系统简介(NCS)
作为一个搞物联网应用的,最近才接触到NCS这个概念.有点东西,赶紧记录一下. NCS由通过网络连通的控制环路组成,控制信号和反馈信号会在控制器和本地系统间交换.典型的方块图如下: 其中,本地(Plan ...