概述

这篇主要讲述如何用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(四)获取窗口部分界面相关推荐

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

    概述 首先先把游戏环境搭建起来 下载游戏 这部分的介绍可以看python 从4399获取小游戏,我就不重新介绍一遍了 import os import requests# 基础url host_url ...

  2. 深度强化学习制作森林冰火人游戏AI(五)识别游戏状态

    深度强化学习制作森林冰火人游戏AI(五)识别游戏状态 概述 游戏状态切换图 游戏状态识别原理 界面区域选择 保存界面 识别方法 识别游戏状态 概述 通过图片识别来对分析游戏当前状态 前篇:深度强化学习 ...

  3. 深度强化学习制作森林冰火人游戏AI(三)向游戏输出键盘控制信息

    概述 本文讲如何通过python发送键盘控制命令控制游戏 前篇:深度强化学习制作森林冰火人游戏AI(二)获取游戏屏幕 后篇:深度强化学习制作森林冰火人游戏AI(四)获取窗口部分界面 获取窗口句柄 窗口 ...

  4. 深度强化学习制作森林冰火人游戏AI(二)获取游戏屏幕

    概述 前篇:深度强化学习制作森林冰火人游戏AI(一)下载游戏 后篇:深度强化学习制作森林冰火人游戏AI(三)向游戏输出键盘控制信息 游戏有了,接下来是程序的输入了 获取窗口名称 windows里面的所 ...

  5. 森林冰火人c语言源代码,山师考试周“最惨专业”排行,你的专业上榜了吗?...

    原标题:山师考试周"最惨专业"排行,你的专业上榜了吗? 伴着温度持续高涨的炎炎烈日 期末考试的紧张氛围愈加浓厚 在考试周这段神奇的时间段内 埋藏已久的潜能会被一再激发 脑海里的信息 ...

  6. 森林冰火人html源码,森林冰火人单人版(源码)

    [实例简介]java小游戏--森林冰火人,单人游戏, 实现人物行走,跳跃,吃水晶,具有计时功能,积分功能,倒计时结束游戏失败. [实例截图] [核心代码] 森林冰火人单人版 ├── bin │   ├ ...

  7. 大一上学期C语言大作业—森林冰火人

    C语言大作业-森林冰火人 大作业简介 第三方库 界面图片切换 冰火娃动作图片切换 冰娃火娃的跑动 地面,墙壁,冰水,火水与毒液等的判断 代码实现 头文件 变量简介 结构体及数据初始化 冰火娃图片切换 ...

  8. 森林冰火人小游戏排行榜,森林冰火人pk孩子为王

    1.双人闯关版本http://www.9564.com/minjie/17532.htm 2.第一版http://www.9564.com/maoxian/5842.htm 3.山寨版 http:// ...

  9. 【SSL 1534】森林冰火人(DP)

    森林冰火人 题目链接:SSL 1534 题目大意 有 n 个任务,分别有给第一个人和第二个人做需要的时间. 然后两个人可以同时做各自的任务,不能做同一份任务,然后问你把所有任务做完所需的最小时间. 思 ...

最新文章

  1. nginx限制某个IP同一时间段的访问次数
  2. html 页面过度效果,HTML页面过渡效果大全
  3. STM32开发 -- ADC详解
  4. 学习——JavaWeb05:JSP入门
  5. PPT幻灯片转换成word的软件
  6. nmon工具的安装记录
  7. qq纵横四海源码_【0基础】纵横中文网python爬虫实战
  8. mac修改php配置文件,MAC下通过改apache配置文件切换php多版本的方法
  9. 【ABAP系列】SAP ABAP中关于commit的一点解释
  10. Unity3D中C#编写脚本
  11. 硝烟中的Scrum和XP-我们如何实施Scrum 4 (Part 1/2)
  12. 大数据分析对物联网发展有什么影响
  13. webgis之qgis缓存
  14. ubuntu如何解压.tar.gz
  15. Shell 神技:掩盖 Linux 服务器上的操作痕迹
  16. ug冲模标准件库_UG标准件库|标准件库下载|3DSource零件库|海量CAD模型
  17. 积分变现|积分变现如何效益最大化?信用卡积分如何快速变现?
  18. 手机控制树莓派驱动投影仪DLPDLCR230NPEVM
  19. 【UVA1723】Intervals
  20. 在cmd命令下imp oracle dmp文件

热门文章

  1. Altium designer如何将制作一个自己的logo
  2. concat 与 add
  3. 知识改变命运,技术决定薪资
  4. PB中的像素与PBU之间的转换
  5. 6.18! 当当网推出购书优惠活动满400减230!有效优惠码更新
  6. 【考前看几题】系统集成项目管理师-项目质量管理-成本判断
  7. 海口市地图 shp数据arcgis 道路县区边界房屋轮廓2020年(预览图)
  8. TCP握手协议过程及相关细节参数
  9. Docker镜像篡改供应链攻击研究
  10. 鼠标如何从常见虚拟机中切出?