当前位置 : 主页 > 编程语言 > python >

亲测可用的 Linux(Ubuntu18.04下)可运行的俄罗斯方块游戏的仿真环境—————

来源:互联网 收集:自由互联 发布时间:2022-06-15
俄罗斯方块模拟器(tetris 游戏),Python库地址: ​​https://gitee.com/devilmaycry812839668/gym-tetris​​ 在Python3.7环境下亲测可用: 安装: pip install gym-tetris 安装好后测试代码: from nes_py.wra

俄罗斯方块模拟器(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()

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

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

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()

View Code

运行图:

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


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

命令:

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


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


如:

gym_tetris -e TetrisA-v0 -m human


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


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


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

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

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

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

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

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

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

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


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

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

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

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

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


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

补充一下:

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

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

可以看到上图中落底方块的最高高度为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’块:

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

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


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


网友评论