iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python还能这么玩之用Python做个小游戏的外挂
  • 235
分享到

Python还能这么玩之用Python做个小游戏的外挂

2024-04-02 19:04:59 235人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、工具的准备三、开挂步骤四、实现开挂,自动做菜一、前言 我打开4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单

一、前言

我打开4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单做好端给他便好~要怎么实现他自动做菜呢?

在这里插入图片描述

二、工具的准备

需要安装autopy和PIL以及pywin32包。

1.截屏和图像处理工具

截屏是获取游戏图像以供分析游戏提示,其实没有专门的工具直接Print Screen粘贴到图像处理工具里也可以。我用的是PicPick,相当好用,而且个人用户是免费的,而图像处理则是为了获取各种信息的,我们要用它得到点菜图像后保存起来,供外挂分析判断。

2.编辑器

用VIM,或写字板都可以

3.游戏原理分析

看这个游戏,有8种菜,每种菜都有固定的做法,顾客一旦坐下来,头顶上就会有一个图片,看图片就知道他想要点什么菜,点击左边原料区域,然后点击一下……不知道叫什么,像个竹简一样的东西,菜就做完了,然后把做好的食物拖拽到客户面前就好了。

顾客头上显示图片的位置是固定的,总共也只有四个位置,我们可以逐一分析,而原料的位置也是固定的,每种菜的做法更是清清楚楚,这样一来我们完全可以判断,程序可以很好的帮我们做出一份一份的佳肴并奉上,于是钱滚滚的来

三、开挂步骤

 1.移动鼠标


import autopy
autopy.mouse.move(100, 100) # 移动鼠标
autopy.mouse.smooth_move(400, 400) # 平滑移动鼠标(上面那个是瞬间的)

这个命令会让鼠标迅速移动到指定屏幕坐标,如左上角是(0,0),然后向右向下递增,所以1024×768屏幕的右下角坐标是(1023,767)。

2.点击鼠标


#引入autopy模块
# ***
import autopy
autopy.mouse.click() # 单击
autopy.mouse.toggle(True) # 按下左键
autopy.mouse.toggle(False) # 松开左键

这个比较简单,不过记得这里的操作都是非常非常快的,有可能游戏还没反应过来呢,你就完成了,于是失败, 所以必要的时候,小睡一小会儿。

3.相似图像查找原理

Google的“按图搜图”功能,输入一张图片时,它会把与这张图相似的图像都给你呈现出来,所以当你找到一张中意的图想做壁纸又觉得太小的时候,基本可以用这个方法找到合适的~我们就要利用和这个相似的原理来判断用户的点餐


def get_hash(self, img):
   #使用PIL模块缩放图片,***
  image = img.resize((18, 13), Image.ANTIALIAS).convert("L")
   pixels = list(image.getdata())
  avg = sum(pixels) / len(pixels)
   return "".join(map(lambda p : "1" if p > avg else "0", pixels))

因为这是类的一个方法,所以有个self参数,无视它。这里的img应该传入一个Image对象,可以使读入图像文件后的结果,也可以是截屏后的结果。而缩放的尺寸(18,13)是我根据实际情况定的,因为顾客头像上的菜的图像基本就是这个比例。事实证明这个比例还是挺重要的,因为我们的菜有点儿相似,如果比例不合适压缩后就失真了,容易误判(我之前就吃亏了)。

得到一个图片的“指纹”后,我们就可以与标准的图片指纹比较,怎么比较呢,应该使用“汉明距离”,也就是两个字符串对应位置的不同字符的个数。


def hamming_dist(self, hash1, hash2):
return sum(itertools.imap(operator.ne, hash1, hash2))

好了,我们可以用准备好的标准图像,然后预先读取计算特征码存储起来,然后再截图与它们比较就好了,距离最小的那个就是对应的菜,代码如下:


def order(self, i):
    l, t = self.left + i * self.step, self.top
    r, b = l + self.width, t + self.height
    hash2 = self.get_hash(ImageGrab.grab((l, t, r, b)))
    (mi, dist) = None, 50
    for i, hash1 in enumerate(self.maps):
      if hash1 is None:
        continue
      this_dist = self.hamming_dist(hash1, hash2)
      if this_dist < dist:
        mi = i
        dist = this_dist
    return mi

这里有一个50的初始距离,如果截取图像与任何菜单相比都大于50,说明什么?说明现在那个位置的图像不是菜,也就是说顾客还没坐那位置上呢,或者我们把游戏最小化了(老板来了),这样处理很重要,免得它随意找一个最相近但又完全不搭边的菜进行处理。

四、实现开挂,自动做菜

这个问题很简单,我们只需要把菜单的原料记录在案,然后点击相应位置便可,我把它写成了一个类来调用:


class Menu:
  def __init__(self):
    self.stuff_pos = []
    self.recipes = [None] * 8
    self.init_stuff()
    self.init_recipe()
  def init_stuff(self):
    for i in range(9):
      self.stuff_pos.append( (L + 102 + (i % 3) * 42, T + 303 + (i / 3) * 42) )
  def init_recipe(self):
    self.recipes[0] = (1, 2)
    self.recipes[1] = (0, 1, 2)
    self.recipes[2] = (5, 1, 2)
    self.recipes[3] = (3, 0, 1, 2)
    self.recipes[4] = (4, 1, 2)
    self.recipes[5] = (7, 1, 2)
    self.recipes[6] = (6, 1, 2)
    self.recipes[7] = (8, 1, 2)
  def click(self, i):
    autopy.mouse.move(self.stuff_pos[i][0] + 20, self.stuff_pos[i][1] + 20)
    autopy.mouse.click()
  def make(self, i):
    for x in self.recipes[i]:
      self.click(x)
    autopy.mouse.move(L + 315, T + 363)
    autopy.mouse.click()

class Menu:
  def __init__(self):
    self.stuff_pos = []
    self.recipes = [None] * 8
    self.init_stuff()
    self.init_recipe()
  def init_stuff(self):
    for i in range(9):
      self.stuff_pos.append( (L + 102 + (i % 3) * 42, T + 303 + (i / 3) * 42) )
  def init_recipe(self):
    self.recipes[0] = (1, 2)
    self.recipes[1] = (0, 1, 2)
    self.recipes[2] = (5, 1, 2)
    self.recipes[3] = (3, 0, 1, 2)
    self.recipes[4] = (4, 1, 2)
    self.recipes[5] = (7, 1, 2)
    self.recipes[6] = (6, 1, 2)
    self.recipes[7] = (8, 1, 2)
  def click(self, i):
    autopy.mouse.move(self.stuff_pos[i][0] + 20, self.stuff_pos[i][1] + 20)
    autopy.mouse.click()
  def make(self, i):
    for x in self.recipes[i]:
      self.click(x)
    autopy.mouse.move(L + 315, T + 363)
    autopy.mouse.click()

到此这篇关于python还能这么玩之用Python做个小游戏的外挂的文章就介绍到这了,更多相关Python游戏外挂内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python还能这么玩之用Python做个小游戏的外挂

本文链接: https://www.lsjlt.com/news/127563.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python还能这么玩之用Python做个小游戏的外挂
    目录一、前言二、工具的准备三、开挂步骤四、实现开挂,自动做菜一、前言 我打开4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单...
    99+
    2024-04-02
  • 怎么用Python做小游戏
    怎么用Python做小游戏,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!在这个教程里,你要学做一个叫《兔子和獾...
    99+
    2023-06-17
  • 用python做简单的小游戏,如何用python写小游戏
    大家好,小编来为大家解答以下问题,初学者怎么用python写简单小游戏教程,如何用python编写一个简单的小游戏,今天让我们一起来看看吧! 1、python简单小游戏代码   1、Python猜拳小游戏代码:   2、import r...
    99+
    2023-09-08
    人工智能
  • Python还能这么玩之用Python修改了班花的开机密码
    目录一、前言二、工具准备三、项目思路解析四、小结一、前言 班花加我说她电话坏了让我看看,那肯定义不容辞!【兴奋了半个小时】没别的我就想秀一下技术!五分钟后我修好了,电脑重启之后显示...
    99+
    2024-04-02
  • 如何使用Python面向对象做个小游戏
    这篇文章主要讲解了“如何使用Python面向对象做个小游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Python面向对象做个小游戏”吧!我们今天同样实现一个小游戏,这个小游戏非常...
    99+
    2023-06-15
  • 如何使用python做一个罚点球小游戏
    本篇内容介绍了“如何使用python做一个罚点球小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在学习了一点 Python 基础之后,我...
    99+
    2023-06-30
  • 教你使用python做一个“罚点球”小游戏
    在学习了一点 Python 基础之后,我们可以做一个罚点球的小游戏,大概流程是这样: 每一轮,你先输入一个方向射门,然后电脑随机判断一个方向扑救。方向不同则算进球得分,方向相同算扑救...
    99+
    2024-04-02
  • 能玩游戏的海外云主机怎么租用
    要租用一台能玩游戏的海外云主机,可以按照以下步骤进行:1. 确定需求:首先确定您的需求,比如您要玩哪些游戏、您对服务器的要求等。2....
    99+
    2023-09-21
    海外云主机 云主机
  • 30个Python小游戏,上班摸鱼我能玩一天【内附源码】
    大家好,我是辣条。 今天给大家带来30个py小游戏,一定要收藏! 目录 有手就行 1、吃金币 2、打乒乓 3、滑雪 4、并夕夕版飞机大战 5、打地鼠 简简单单 6、小恐龙 7、消消乐 8、俄罗斯方块 9、贪吃蛇 普普通通 10、24点小游戏...
    99+
    2023-09-02
    游戏程序 pygame 程序人生 python 游戏
  • 怎么用Python做了一个Windows扫雷游戏
    怎么用Python做了一个Windows扫雷游戏,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Windows XP 上的扫雷是无数80/90后的集体回忆,今天我...
    99+
    2023-06-16
  • Python实战:运用Pygame编写Flappy bird小游戏,我能玩一天
    首先下载Python中Pygame的模块可以在Windows下的CMD中使用pip下载pip install pygame有的小伙伴安装的时候报错,那么你可以从官网下载Pygame然后解压进入网址https://www.lfd.uci.ed...
    99+
    2023-06-02
  • 世界杯太精彩了,带大家用Python做个足球游戏,边玩游戏边看比赛
    文章目录 Python零基础快速制作足球游戏(附源代码) 前言 一、Python环境说明 二、游戏程序说明 1、游戏开始界面 2、人物移动规则说明,可支持两位玩家 3、足球规则 4、主方法调取 三、游戏运行效果与比赛结果 1、游戏开始界面...
    99+
    2023-09-14
    python 世界杯足球游戏 Python足球游戏 程序人生
  • 怎么在你的Python游戏中添加一个玩家
    这篇文章主要为大家展示了“怎么在你的Python游戏中添加一个玩家”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么在你的Python游戏中添加一个玩家”这篇文章吧。在 Pygame 中,玩家操...
    99+
    2023-06-16
  • 【pygame游戏】用Python实现一个蔡徐坤大战篮球的小游戏,可还行?【附源码】
    Python制作坤坤打篮球小游戏 序言准备工作开发环境 效果预览开始界面游戏规则结束游戏 代码实现 序言 话说在前面,我不是小黑子~ 我是超级大黑子😏 ...
    99+
    2023-09-02
    python pygame 游戏 篮球
  • 怎么用Python设计一个经典小游戏
    本篇文章给大家分享的是有关怎么用Python设计一个经典小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言想不想在闲得无聊的时候,用自己学过的Python基础知识,来做一...
    99+
    2023-06-02
  • 教你使用一行Python代码玩遍童年的小游戏
    写在前面 贪吃蛇,吃豆人,迷宫,井字游戏......这些小游戏我相信大家小的时候肯定玩过,或许在某个时段还沉迷过. 随着年龄的增长,这些小游戏离我们越来越远,但是我相信大家的童心还是...
    99+
    2024-04-02
  • 怎么用Python实现游戏玩家能够向前和向后跑
    这篇文章主要讲解了“怎么用Python实现游戏玩家能够向前和向后跑”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现游戏玩家能够向前和向后跑”吧!在侧滚动条中放置卷轴如果你...
    99+
    2023-06-16
  • 怎么用Python实现小鸟和水管之间碰撞的游戏
    本文小编为大家详细介绍“怎么用Python实现小鸟和水管之间碰撞的游戏”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Python实现小鸟和水管之间碰撞的游戏”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。开...
    99+
    2023-06-27
  • 怎么用Python编写一个宝石消消乐小游戏
    本篇内容介绍了“怎么用Python编写一个宝石消消乐小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!开发工具python版本:3.6.4...
    99+
    2023-06-26
  • 使用python怎么制作一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关使用python怎么制作一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作