深度强化学习制作森林冰火人游戏AI(一)下载游戏

概述

首先先把游戏环境搭建起来

下载游戏

这部分的介绍可以看python 从4399获取小游戏,我就不重新介绍一遍了

import os
import requests

# 基础url
host_url = 'http://www.4399.com'
swfbase_url = 'http://sda.4399.com/4399swf'

#根据网页网址,获取游戏
def download_game(url):
    #获取网页源代码
    game_page = requests.get(url).text
    # game_page.encoding = 'gb2312'
    if not os.path.exists('./game_src'):
        os.mkdir(r'./game_src')
    #找到网页中含有游戏标题的字符
    start =game_page.find("game_title=")
    #标记标题起始位置
    p1=start+14
    #通过向后遍历寻找双引号获取标题结束的位置
    p2=p1+1
    while(game_page[p2]!="\""):
        p2+=1
    #保存标题
    game_title= game_page[p1:p2]

    #和获取标题一样的方法获取游戏本体的网址
    start =game_page.find("_strGamePath=")
    p1=start+14
    p2=p1+1
    while(game_page[p2]!="\""):
        p2+=1
    #4399游戏本体的网址是由两部分组成,基址+偏移量
    #我们之前找的都是偏移量,接上基址就是正确的网址
    src_url=swfbase_url + game_page[p1:p2]

    file_type='.'+game_page[p1:p2].split('/')[-1].split('.')[-1]
    # print(file_type)
    if file_type=='.swf':
        #获取本体
        src = requests.get( src_url).content
        print(game_title)
        #保存
        open( "./game_src/"+ game_title+ file_type, "wb" ).write( src )
    else:
        print("只有swf文件才能下载")

if __name__ == '__main__':
    
    #森林冰火人2选关版  http://www.4399.com/flash/175700.htm#search3-9af1

    url='http://www.4399.com/flash/175700.htm#search3-9af1'

    download_game(url)

为什么选择森林冰火人2选关版?

  1. 因为找了半天,大部分森林冰火人都是html游戏,swf文件格式的很少,我想要训练一个打横版游戏的ai
  2. 其次,选关版可以让在训练的时候选择不同的关卡,这样训练出来的ai更具有鲁棒性,以后也许可以泛化到其他的网页版森林冰火人上

运行游戏

如何打开flash游戏

官网下载flashplayer

理论上下载官方版就能使用,但是实际上我还是下载了大厅版
(官方版都不知道怎么开游戏)

1. 打开flash大厅

深度强化学习制作森林冰火人游戏AI(一)下载游戏

2. 打开游戏

深度强化学习制作森林冰火人游戏AI(一)下载游戏

  1. 选择左侧首页
  2. 点击swf文件播放器
  3. 选择swf文件,打开上面用代码爬下来的游戏

3.玩游戏!(误)

深度强化学习制作森林冰火人游戏AI(一)下载游戏

总结

爬游戏网上其实也有不少办法,我这里也只是把其中一种拉出来用了

下一部分将会是如何用python获取游戏窗口

上一篇:spring事务调用失效问题


下一篇:浅析MCM时间格式