本篇作者:BlueDamage

近来在折腾selenium自动化, 感觉配合爬虫很有意思, 大多数以前难以模拟登录的网站都可以爬了,折腾了这么久, 于是想自动玩个2048游戏!嘿嘿, 我是一个不擅长玩游戏的人, 以前玩2048就经常得了很低的分,每每想起都”痛心疾首”, 所以我打算拿2048开刀, 通过几种方式, 让程序帮我玩!

环境: python 3.5

用到的库: re, random, time, selenium

2048网页版: http://2048.oubk.com

本篇用到了selenium,运行前需要提前安装selenium和chromedriver的驱动

先看一下效果图

image

第一步: 浏览网页确定需求

image

可以发现, 此网页能注册登录, 还有各个时间段的积分排行榜, 游戏的玩法是按键盘的方向键,在游戏结束后, 会弹出这么一个框

image

于是我在想, 这个页面能否自动成功登录和退出呢,还希望把4*4方块转为对应的矩阵列表,并且在游戏结束后, 能自动点击再玩一次

试试看说不定可以呢,我们一起来分析一下吧.

第二步: 按需分析目标网站

需求1:登录指定账号

进入开发者模式定位到”登录”这元素:

image

selenium库提供了很多获取网页中元素的方法, 个人喜欢通过XPath的方式来获取, 于是复制其xpath路径

在点击登录后, 会有一个弹窗:

image

采用同样的方式, 获取账号输入框 密码输入框 登录 的xpath路径

image

需求2:再玩一次

当游戏结束时, 会有此提示

image

同样的, 也获取 再玩一次 的xpath的路径

image

需求_3: 获取矩阵

接下来, 我们需要将4*4方块转为矩阵, 先定位到任意的一个数字方块

image

容易发现, 第一个数字是方块上的数值, 之后数字为: 列 行, 后面若还接英文串, 则说明此方块是新生成或新合并出的.采用通过正则获取

image

需求_4: 模拟方向键

在selenium中, 通过send_keys()方法, 把键值发送至元素

需要注意的是, 方向键是发送给body元素, 而不是4**4方块所在的的div

image

第三步: 如何玩游戏

方法一:随机移动

在游戏未结束前, 上下左右随意移动, 分数什么的, 就随缘吧

image

方法二:每次最优

在游戏未结束前, 每次移动, 都选择得分最高的方向,这个比较复杂(具体可以看文末的源码)

第四步: 运行程序看结果

1).用js代码注册

借用来自网上的一段用js进行post提交的代码, 成功实现了注册

image

2).开始玩游戏

我写了个分析函数, 传入次数, 在游戏结束后输出平均分

image

次数我设置为3, 执行程序,就会出现开头的效果图.

关注微信公众号“菜鸟学python”,获得更多免费电子书和源码资料

python自动玩游戏_超牛!用Python自动玩转2048游戏相关推荐

  1. 用python实现视频换脸_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  2. python定义变量长度_超详细的Python变量的基本使用

    这里是一段防爬虫文本,请读者忽略. 本文原创首发于CSDN,作者IDYS 博客首页:https://blog.csdn.net/weixin_41633902/ 本文链接:https://blog.c ...

  3. python视频换脸例子_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  4. python学英语游戏_美国大佬推荐,一边玩一边学Python编程,12个游戏轻松掌控Python...

    你还在坚持Python编程吗?如此枯燥的学习方式,靠自己的意志真的能坚持到最后吗? 放弃吧!与其辛苦的执着,不如看美国大佬推荐的Python编程闯关游戏,一边学编程一边玩游戏,以后连"吃鸡& ...

  5. python程序不出结果_超详细的Python入门教程,1小时就可以学会

    为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是 ...

  6. 小学生python编程写游戏_小学生开始学Python,开发AI的首选编程语言:推荐一波Python书单...

    AlphaGo 都在使用的 Python 语言,是最接近 AI 的编程语言. 教育部考试中心近日发布了"关于全国计算机等级(NCRE)体系调整"的通知,决定自2018年3月起,在全 ...

  7. android h 游戏下载地址,Android h游戏_如何在Android手机上玩游戏

    最近人们喜欢在手机上玩游戏. 除了一些手机游戏(Android H游戏)之外安卓才可以玩的h,越来越多的朋友开始寻找Android手机游戏. 但是,有些人已经搜索了很长时间,还没有找到合适的游戏来玩. ...

  8. python http服务器_超简单的Python HTTP服务

    超如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等.那么, Python 可能帮助你.使用Python可以完成一个简单的内建 H ...

  9. python设计拼图小游戏_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

最新文章

  1. python命名元组
  2. The response status was 0. Check out the W3C XMLHttpRequest Level 2 spec for
  3. Tabcontrol动态添加TabPage(获取或设置当前选项卡及其属性)
  4. 【CEOI2017】Building Bridges【任意坐标斜率优化】【李超线段树】
  5. PowerShell变量——PowerShell三分钟(七)
  6. 数据结构之图:有向图的介绍与实现,Python代码实现——25
  7. kafka集群为什么需要三个节点_大白话带你认识 Kafka
  8. DDD(领域驱动设计)系列之二-应用架构
  9. 内部类访问,及修饰符
  10. Java并发编程之安全发布对象的四种方法
  11. Win7安装英文语言包(图文)
  12. 一洽客服客户试用转化率100%
  13. oracle负数金额大写,Oracle 小写金额转换为大写
  14. 土豆运行linux,安装到土豆上的 Linux 是怎么个意思?
  15. office表格怎么冻结前两行_怎样冻结表格前两行(excel2003中怎么冻结行列标题)
  16. §6.5 分离性公理与子空间,(有限)积空间和商空间
  17. 蓝牙bluez进行HCI编程
  18. 用汉字能给计算机编程,为什么中国的程序员不能用中文来编程?
  19. 系统分析师和系统架构师的区别?
  20. 考研数学 之 汤家凤老师来校讲座摘记 (拉格朗日定理等干货 )

热门文章

  1. except 和 except for
  2. 给笔记本插网线,然后给手机开热点,手机显示已连接但不可上网
  3. 求解数独的所有解法,java编程实现
  4. PHP常驻进程异常,PHP 多进程 解决难题(常驻进程问题)
  5. geo ftp环境变量 export source ~/.bashrc Linux中filezilla下载ftp文件 ftp.ncbi.nlm.nih.gov linux下载 ftp下载geo非原始数
  6. 【手势隔层透传】iOS viewA被viewB遮挡,如何让viewA依然响应添加的pan平移手势
  7. ecstore新增数据格式
  8. python古诗词风格分析_2017年高考古诗词鉴赏技巧:分析语言风格题解题模式
  9. B站美食行业报告 | UP主营销新趋势
  10. android maxlength 代码设置,如何在代码中获取EditText maxLength设置