python可以制作游戏脚本吗_如何用python制作游戏脚本?
对于游戏编程来说,使用脚本语言可以快速地开发游戏逻辑,节省开发新型自定义语言的时间和开销,并且脚本语言通常要比编程者创造的语言更加的强大。小伙伴们学习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制作游戏脚本?相关推荐
- python数据分析并生成报告界面_如何用Python绘图和制作数据分析报告?
Live 简介: 你要向老板汇报自己的工作成果,如果光靠生硬的语言或文字来展示,那么老板很有可能听不懂,更没有兴趣看那一堆文字.这会直接影响你的升职加薪.但是你还要还房贷.买车子.旅游.结婚.生孩子. ...
- 写python脚本管理_如何用python脚本控制TPLINK路由器
我想知道是否有一种工具可以让我连接到路由器并关闭它,然后从python脚本重新启动它.如何用python脚本控制TPLINK路由器 我知道如果我用python脚本编写:import os然后做os.s ...
- python如何让图片镜像翻转_如何用 Python 增量备份 Roam Research 笔记图片?
消除后顾之忧,轻松输入卡片笔记. 题图:Photo by Markus Spiske on Unsplash 前些日子,我用视频的方式给你介绍了 Roam Research 这款工具.如果你还没有来得 ...
- python在工作中怎么用_如何用python在工作中“偷懒”
原标题:如何用python在工作中"偷懒" "偷懒还能干完活,才是本事 " 有些朋友在工作中会有这样的困惑:明明我从早忙到晚,为什么得到的评价还不高? 要知道, ...
- python怎么实现音乐快进_如何用PYTHON代码写出音乐【】
如何制作MIDI(用于vocaloid 3) 我也是因为V家才来找midi的 如何用PYTHON代码写出音乐 在python-midi,每个乐谱用Pattern对象表示,乐的每个音轨(通常音乐很多轨道 ...
- python词云有什么用_如何用Python实现词云效果
如何用Python实现词云效果 发布时间:2020-06-06 10:56:57 来源:亿速云 阅读:204 作者:Leah 这篇文章主要为大家详细介绍了用Python实现词云效果的方法,图文详解容易 ...
- python怎样打开加密的文件_如何用Python 加密文件
生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...
- 用python写用手机发邮件_如何用python写发邮件?
原标题:如何用python写发邮件? 1. 163邮箱 163邮箱需要设置客户端授权密码 请输入图片描述 # coding:utf-8 from email.header import Header ...
- 如何用python完成基本统计信息计算_如何用python计算基本统计值?
如何用python计算基本统计值? 用python计算基本统计值的代码为def getNum(): #从控制台获取多个不确定数据的方法 nums = []; iNumStr = input(" ...
- 用python做一个舆情分析系统_如何用Python做舆情时间序列可视化?
如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...
最新文章
- 13个JavaScript图表图形绘制插件
- 视频+课件| 视觉引导系列课程
- 关于C#应用的授权认证
- mybatis自动扫描注解
- Leetcode题库 11.盛水最多的容器(双指针法 C实现)
- data类型的Url的格式
- Python 字典 values() 方法
- Moss/Sharepoint:自定义 Oracle Membership
- php把二维数组变为一维,如何将PHP二维数组转换为一维数组
- URAL1297 Palindrome【manacher算法】
- 身份认证之双因素认证 2FA
- 过来人的经验:给Java初学者的10个学习经验
- 光纤猫怎样连接无线路由器?_网络技术-i火吧
- zigbee PRO 事件
- Head first jQuery读书笔记
- 特斯拉如何恢复出厂设置_iphone如何恢复手机出厂设置
- 什么是梯度?为什么梯度的方向总是指向函数值增大的方向?
- jsp中img显示本地图片
- mysql5.7 密钥_mysql5.7密码登录的那些坑
- [置顶] QUI继续之 -- 添加JS模板引擎功能, 征集LOGO
热门文章
- 领先的人工智能牙科软件公司DentalMonitoring宣布获得1.5亿美元成长融资,估值超过10亿美元
- 华为荣耀c4刷入linux系统,华为荣耀畅玩4C刷机教程_荣耀畅玩4C强刷官方系统包的教程...
- 游戏设计学习笔记Pt.1:小鸡快跑2——特殊的银河恶魔城游戏
- PS怎么做流线光效人物动图效果
- 使用MT5 API和Python进行交易
- java mini_miniui_java - WEB源码|源代码 - 源码中国
- 【解决方案】车载监控/公交监控/倒车监控/货车校车客车基于4G传输的智能车载监控系统
- 三星s5能升级到android7.0,三星手机安卓7.0升级最新名单:Galaxy S5、Note 4无缘
- java项目打包提示-source1.5中不支持diamond
- CentOS7安装FATE1.5