对于游戏编程来说,使用脚本语言可以快速地开发游戏逻辑,节省开发新型自定义语言的时间和开销,并且脚本语言通常要比编程者创造的语言更加的强大。小伙伴们学习python有一段时间了,有没有发现python语言的很强大和简洁,并且很容易嵌入,是一个不错的脚本语言呢?今天我们就用python做个游戏脚本练练手。

以4399的一款叫做(玩命打地鼠)的游戏作为案例,实现自动打地鼠的功能~

代码:from time import sleep

from pymouse import PyMouse

from PIL import Image,ImageGrab

from selenium import webdriver

import time

url = "http://www.4399.com/flash/178030_3.htm"

#9个坑所在的矩形图的坐标

coordinate = (395,530,1065,930)

#x,y坐标,n为缩放倍数的倒数,a为需要结合缩放倍数的横坐标,b为需要结合缩放倍数的纵坐标

x,y=0,0

n=1/1.5

a,b=0,0

#9个打地鼠的坐标

loc1 = (488,562)

loc2 = (721,581)

loc3 = (969,578)

loc4 = (466,732)

loc5 = (725,706)

loc6 = (1000,707)

loc7 = (469,878)

loc8 = (716,869)

loc9 = (975,877)

Loc_list = [(488,562)]

Loc_list.append(loc2)

Loc_list.append(loc3)

Loc_list.append(loc4)

Loc_list.append(loc5)

Loc_list.append(loc6)

Loc_list.append(loc7)

Loc_list.append(loc8)

Loc_list.append(loc9)

def touch(x,y,mouse=1):

a = x*n

b = y*n

m.click(int(a),int(b),mouse)

class GameScript:

def __init__(self):

chrome = webdriver.Chrome('D:/googledriver/chromedriver.exe')

chrome.maximize_window()

chrome.get(url)

chrome.implicitly_wait(30)

def FlashOpen(self):

touch(1660,80)

touch(1400,217)

#等网页加载出来,点击允许

sleep(3)

touch(1482,469)

#关闭页面

sleep(1)

touch(707,25)

#授权FLASH

sleep(1)

touch(723,700)

sleep(1)

touch(476,290)

#关闭游戏声音

touch(168,26,2)

sleep(1)

touch(282,258)

def start(self):

#点击开始游戏按钮

touch(750,800)

touch(1075,322)

sleep(1)

def CutImage(self):

image = ImageGrab.grab(coordinate)

width,height = image.size

#用于存放九张小图的左上和右下坐标

box_list = []

#小图的宽

cut_width = int(width/3)

#小图的高

cut_height = int(height/3)

#分切9图,先获得9组crop函数需要的坐标,再用crop函数截出来

for i in range(0,3):

for j in range(0,3):

box = (j*cut_width, i*cut_height, (j+1)*cut_width, (i+1)*cut_height)

box_list.append(box)

image_list = [image.crop(box) for box in box_list]

#返回的列表里面为图片

return image_list

#使两张图片统一格式,方便比较

def Get_Same_Image(image):

size = (256,256)

return image.resize(size).convert('RGB')

#比较两张图片的直方图,以获得相似度

def Difference(list1,list2):

sum1 = 0

for i in range(len(list1)):

if(list1[i] == list2[i]):

sum1 += 1

else:

#依照公式可获得

sum1 += 1-(abs(list1[i] - list2[i]) / max(list1[i],list2[i]) )

return sum1 / len(list1)

def Get_Similarity(image1,image2):

#统一格式

img1 = Get_Same_Image(image1)

img2 = Get_Same_Image(image2)

#获得直方图

list1 = img1.histogram()

list2 = img2.histogram()

return Difference(list1, list2)

def AutoPlay(image_list):

Timage = Image.open("C:/Users/Fatzj/Desktop/game script/yangping.png")

for n in range(len(image_list)):

#相似度大于0.45就拍一下

if(Get_Similarity(image_list[n], Timage) >= 0.45):

#从Loc_list获得要点击的坐标

x = Loc_list[n][0]

y = Loc_list[n][1]

touch(x,y)

#移开锤子,避免干扰对比

touch(1075,322)

if __name__ == "__main__":

m = PyMouse()

demo = GameScript()

demo.FlashOpen()

sleep(25)

demo.start()

time1 = 0

while(time1 < 60):

start = time.perf_counter()

image_list = demo.CutImage()

AutoPlay(image_list)

end = time.perf_counter()

time1 += end-start

print("结束运行")

以上就是自动打地鼠的游戏脚本啦,是不是挺有趣的,用python制作游戏脚本并没有那么难,勤加练习,你会发现更多关于python制作脚本的技巧的。更多Python学习指路:PyThon学习网教学中心。

python可以制作游戏脚本吗_如何用python制作游戏脚本?相关推荐

  1. python数据分析并生成报告界面_如何用Python绘图和制作数据分析报告?

    Live 简介: 你要向老板汇报自己的工作成果,如果光靠生硬的语言或文字来展示,那么老板很有可能听不懂,更没有兴趣看那一堆文字.这会直接影响你的升职加薪.但是你还要还房贷.买车子.旅游.结婚.生孩子. ...

  2. 写python脚本管理_如何用python脚本控制TPLINK路由器

    我想知道是否有一种工具可以让我连接到路由器并关闭它,然后从python脚本重新启动它.如何用python脚本控制TPLINK路由器 我知道如果我用python脚本编写:import os然后做os.s ...

  3. python如何让图片镜像翻转_如何用 Python 增量备份 Roam Research 笔记图片?

    消除后顾之忧,轻松输入卡片笔记. 题图:Photo by Markus Spiske on Unsplash 前些日子,我用视频的方式给你介绍了 Roam Research 这款工具.如果你还没有来得 ...

  4. python在工作中怎么用_如何用python在工作中“偷懒”

    原标题:如何用python在工作中"偷懒" "偷懒还能干完活,才是本事 " 有些朋友在工作中会有这样的困惑:明明我从早忙到晚,为什么得到的评价还不高? 要知道, ...

  5. python怎么实现音乐快进_如何用PYTHON代码写出音乐【】

    如何制作MIDI(用于vocaloid 3) 我也是因为V家才来找midi的 如何用PYTHON代码写出音乐 在python-midi,每个乐谱用Pattern对象表示,乐的每个音轨(通常音乐很多轨道 ...

  6. python词云有什么用_如何用Python实现词云效果

    如何用Python实现词云效果 发布时间:2020-06-06 10:56:57 来源:亿速云 阅读:204 作者:Leah 这篇文章主要为大家详细介绍了用Python实现词云效果的方法,图文详解容易 ...

  7. python怎样打开加密的文件_如何用Python 加密文件

    生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...

  8. 用python写用手机发邮件_如何用python写发邮件?

    原标题:如何用python写发邮件? 1. 163邮箱 163邮箱需要设置客户端授权密码 请输入图片描述 # coding:utf-8 from email.header import Header ...

  9. 如何用python完成基本统计信息计算_如何用python计算基本统计值?

    如何用python计算基本统计值? 用python计算基本统计值的代码为def getNum(): #从控制台获取多个不确定数据的方法 nums = []; iNumStr = input(" ...

  10. 用python做一个舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

最新文章

  1. 13个JavaScript图表图形绘制插件
  2. 视频+课件| 视觉引导系列课程
  3. 关于C#应用的授权认证
  4. mybatis自动扫描注解
  5. Leetcode题库 11.盛水最多的容器(双指针法 C实现)
  6. data类型的Url的格式
  7. Python 字典 values() 方法
  8. Moss/Sharepoint:自定义 Oracle Membership
  9. php把二维数组变为一维,如何将PHP二维数组转换为一维数组
  10. URAL1297 Palindrome【manacher算法】
  11. 身份认证之双因素认证 2FA
  12. 过来人的经验:给Java初学者的10个学习经验
  13. 光纤猫怎样连接无线路由器?_网络技术-i火吧
  14. zigbee PRO 事件
  15. Head first jQuery读书笔记
  16. 特斯拉如何恢复出厂设置_iphone如何恢复手机出厂设置
  17. 什么是梯度?为什么梯度的方向总是指向函数值增大的方向?
  18. jsp中img显示本地图片
  19. mysql5.7 密钥_mysql5.7密码登录的那些坑
  20. [置顶] QUI继续之 -- 添加JS模板引擎功能, 征集LOGO

热门文章

  1. 领先的人工智能牙科软件公司DentalMonitoring宣布获得1.5亿美元成长融资,估值超过10亿美元
  2. 华为荣耀c4刷入linux系统,华为荣耀畅玩4C刷机教程_荣耀畅玩4C强刷官方系统包的教程...
  3. 游戏设计学习笔记Pt.1:小鸡快跑2——特殊的银河恶魔城游戏
  4. PS怎么做流线光效人物动图效果
  5. 使用MT5 API和Python进行交易
  6. java mini_miniui_java - WEB源码|源代码 - 源码中国
  7. 【解决方案】车载监控/公交监控/倒车监控/货车校车客车基于4G传输的智能车载监控系统
  8. 三星s5能升级到android7.0,三星手机安卓7.0升级最新名单:Galaxy S5、Note 4无缘
  9. java项目打包提示-source1.5中不支持diamond
  10. CentOS7安装FATE1.5