深度强化学习制作森林冰火人游戏AI(四)获取窗口部分界面
概述
这篇主要讲述如何用python获取森林冰火人窗口部分界面
在获取部分界面的图片之后通过图片识别/分类来判断当前游戏所属的状态
前篇:深度强化学习制作森林冰火人游戏AI(三)向游戏输出键盘控制信息
后篇:深度强化学习制作森林冰火人游戏AI(五)识别游戏状态
森林冰火人游戏界面介绍
游戏开始界面
游戏开始界面很简单,只有一个开始游戏与右上角的背景音乐控制按钮
程序其实不太需要控制开始界面,手动点进去就可以节省很多代码工作量
选关界面
选关界面可以选择的按钮就多了,而且选关界面是固定的
也就是说后续控制选关界面只需要计算固定点坐标点击就好了
游戏界面
游戏界面需要注意,游戏界面具有两个不同背景
其次,游戏界面左上角的红钻石就是算法的奖励函数的需要识别的对象
游戏界面区分方法
因为几个状态其实差别蛮大的,所以本文就简单的做截图识别来区分几个界面的状态
截图界面选取
游戏左上角有一块区域,在不同界面不一样,但在同一截面基本一致
区域起点坐标(左上角为0,0)(20,40) 区域高宽(70,265)
关卡选择界面
游戏界面
游戏开始界面
获取 部分窗口截屏 代码
class window_capture():def __init__(self,window_name):self.__handle = windll.user32.FindWindowW(None, window_name)def capture_part(self,start_x,start_y,height,width):# 获取窗口客户区的大小# r = RECT()windll.user32.SetProcessDPIAware()# windll.user32.GetClientRect(self.__handle, byref(r))# width, height = r.right, r.bottom# 开始截图dc = windll.user32.GetDC(self.__handle)cdc = windll.gdi32.CreateCompatibleDC(dc)bitmap = windll.gdi32.CreateCompatibleBitmap(dc, width, height)windll.gdi32.SelectObject(cdc, bitmap)windll.gdi32.BitBlt(cdc, 0,0, width, height, dc, start_x, start_y, 0x00CC0020)# 截图是BGRA排列,因此总元素个数需要乘以4total_bytes = width*height*4buffer = bytearray(total_bytes)byte_array = c_ubyte*total_byteswindll.gdi32.GetBitmapBits(bitmap, total_bytes, byte_array.from_buffer(buffer))windll.gdi32.DeleteObject(bitmap)windll.gdi32.DeleteObject(cdc)windll.user32.ReleaseDC(self.__handle, dc)img_arr=np.frombuffer(buffer, dtype=np.uint8).reshape(height, width, 4)image_resize = Image.fromarray(img_arr).resize((self.__reshape_width,self.__reshape_height))return image_resize
主体还是之前的后台截屏,不过这次是部分截取
深度强化学习制作森林冰火人游戏AI(四)获取窗口部分界面相关推荐
- 深度强化学习制作森林冰火人游戏AI(一)下载游戏
概述 首先先把游戏环境搭建起来 下载游戏 这部分的介绍可以看python 从4399获取小游戏,我就不重新介绍一遍了 import os import requests# 基础url host_url ...
- 深度强化学习制作森林冰火人游戏AI(五)识别游戏状态
深度强化学习制作森林冰火人游戏AI(五)识别游戏状态 概述 游戏状态切换图 游戏状态识别原理 界面区域选择 保存界面 识别方法 识别游戏状态 概述 通过图片识别来对分析游戏当前状态 前篇:深度强化学习 ...
- 深度强化学习制作森林冰火人游戏AI(三)向游戏输出键盘控制信息
概述 本文讲如何通过python发送键盘控制命令控制游戏 前篇:深度强化学习制作森林冰火人游戏AI(二)获取游戏屏幕 后篇:深度强化学习制作森林冰火人游戏AI(四)获取窗口部分界面 获取窗口句柄 窗口 ...
- 深度强化学习制作森林冰火人游戏AI(二)获取游戏屏幕
概述 前篇:深度强化学习制作森林冰火人游戏AI(一)下载游戏 后篇:深度强化学习制作森林冰火人游戏AI(三)向游戏输出键盘控制信息 游戏有了,接下来是程序的输入了 获取窗口名称 windows里面的所 ...
- 森林冰火人c语言源代码,山师考试周“最惨专业”排行,你的专业上榜了吗?...
原标题:山师考试周"最惨专业"排行,你的专业上榜了吗? 伴着温度持续高涨的炎炎烈日 期末考试的紧张氛围愈加浓厚 在考试周这段神奇的时间段内 埋藏已久的潜能会被一再激发 脑海里的信息 ...
- 森林冰火人html源码,森林冰火人单人版(源码)
[实例简介]java小游戏--森林冰火人,单人游戏, 实现人物行走,跳跃,吃水晶,具有计时功能,积分功能,倒计时结束游戏失败. [实例截图] [核心代码] 森林冰火人单人版 ├── bin │ ├ ...
- 大一上学期C语言大作业—森林冰火人
C语言大作业-森林冰火人 大作业简介 第三方库 界面图片切换 冰火娃动作图片切换 冰娃火娃的跑动 地面,墙壁,冰水,火水与毒液等的判断 代码实现 头文件 变量简介 结构体及数据初始化 冰火娃图片切换 ...
- 森林冰火人小游戏排行榜,森林冰火人pk孩子为王
1.双人闯关版本http://www.9564.com/minjie/17532.htm 2.第一版http://www.9564.com/maoxian/5842.htm 3.山寨版 http:// ...
- 【SSL 1534】森林冰火人(DP)
森林冰火人 题目链接:SSL 1534 题目大意 有 n 个任务,分别有给第一个人和第二个人做需要的时间. 然后两个人可以同时做各自的任务,不能做同一份任务,然后问你把所有任务做完所需的最小时间. 思 ...
最新文章
- nginx限制某个IP同一时间段的访问次数
- html 页面过度效果,HTML页面过渡效果大全
- STM32开发 -- ADC详解
- 学习——JavaWeb05:JSP入门
- PPT幻灯片转换成word的软件
- nmon工具的安装记录
- qq纵横四海源码_【0基础】纵横中文网python爬虫实战
- mac修改php配置文件,MAC下通过改apache配置文件切换php多版本的方法
- 【ABAP系列】SAP ABAP中关于commit的一点解释
- Unity3D中C#编写脚本
- 硝烟中的Scrum和XP-我们如何实施Scrum 4 (Part 1/2)
- 大数据分析对物联网发展有什么影响
- webgis之qgis缓存
- ubuntu如何解压.tar.gz
- Shell 神技:掩盖 Linux 服务器上的操作痕迹
- ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
- 积分变现|积分变现如何效益最大化?信用卡积分如何快速变现?
- 手机控制树莓派驱动投影仪DLPDLCR230NPEVM
- 【UVA1723】Intervals
- 在cmd命令下imp oracle dmp文件