概述
首先先把游戏环境搭建起来
下载游戏
这部分的介绍可以看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选关版?
- 因为找了半天,大部分森林冰火人都是html游戏,swf文件格式的很少,我想要训练一个打横版游戏的ai
- 其次,选关版可以让在训练的时候选择不同的关卡,这样训练出来的ai更具有鲁棒性,以后也许可以泛化到其他的网页版森林冰火人上
运行游戏
如何打开flash游戏
官网下载flashplayer
理论上下载官方版就能使用,但是实际上我还是下载了大厅版
(官方版都不知道怎么开游戏)
1. 打开flash大厅
2. 打开游戏
- 选择左侧首页
- 点击swf文件播放器
- 选择swf文件,打开上面用代码爬下来的游戏
3.玩游戏!(误)
总结
爬游戏网上其实也有不少办法,我这里也只是把其中一种拉出来用了
下一部分将会是如何用python获取游戏窗口
后篇:深度强化学习制作森林冰火人游戏AI(二)获取游戏屏幕