不多说,直接上代码

import time
import win32api
import win32conclass Genmu:def __init__(self):self.notes = self.create_notes()#创建音阶字符def create_notes(self):key1 = list(' QWERTYU')key2 = list(' ASDFGHJ')key3 = list(' ZXCVBNM')notes = [key1, key2, key3]#返回ASCII编码return [[ord(char) for char in inner_list] for inner_list in notes]def create_time(self, sp):#定义各种音符的时长,这里的3和6是另外定义的一种音符长度na = [1, 2, 4, 8, 16, 6, 3]t4 = 60.0/spt2 = t4 * 2t1 = t2 * 2t8 = t4 / 2t16 = t8 / 2t6 = t4 + t8t3 = t1 +t4ti = [t1, t2, t4, t8, t16, t6, t3]return dict(zip(na, ti))def press1(self, vk_code, duration):win32api.keybd_event(vk_code, win32api.MapVirtualKey(vk_code, 0), 0, 0)  # 模拟按下按键time.sleep(duration)  # 持续按下按键win32api.keybd_event(vk_code, win32api.MapVirtualKey(vk_code, 0), win32con.KEYEVENTF_KEYUP, 0)  # 模拟松开按键def press2(self, vk1, vk2, duration):win32api.keybd_event(vk1, win32api.MapVirtualKey(vk1, 0), 0, 0)win32api.keybd_event(vk2, win32api.MapVirtualKey(vk2, 0), 0, 0)time.sleep(duration)  # 持续按下按键win32api.keybd_event(vk1, win32api.MapVirtualKey(vk1, 0), win32con.KEYEVENTF_KEYUP, 0)win32api.keybd_event(vk2, win32api.MapVirtualKey(vk2, 0), win32con.KEYEVENTF_KEYUP, 0)def create_music(self, path):#音符列表content = []music = []#读取乐谱with open(path, 'r') as file:for line in file:line = line.split()content.append(line)content = [[text.split(',') for text in sublist] for sublist in content]content = [item for sublist in content for item in sublist]content = [[int(char) for char in sublist] for sublist in content]# 定义节拍时间self.t = self.create_time(content[0][0])for ind in content[1:]:if len(ind)==3:note = self.notes[ind[0]][ind[1]]duration = self.t[ind[2]]music.append((1, note, duration))elif len(ind)==5:n1 = self.notes[ind[0]][ind[1]]n2 = self.notes[ind[2]][ind[3]]duration = self.t[ind[4]]music.append((2, n1, n2, duration))return musicdef play(self, path):#创建乐谱self.music = self.create_music(path)print(self.music)#准备time.sleep(2)print('beginning!')#开始演奏for ind in self.music[1:]:if(ind[0])==1:self.press1(ind[1], ind[2])elif(ind[0])==2:self.press2(ind[1], ind[2], ind[3])music = Genmu()
music.play('music.txt')

切记,运行时要在用管理员模式打开cmd,在里面运行

python 你的文件位置

运行时候立马点进游戏里

再说乐谱文件的格式

这里第一个代表速度

后面如果是3个,第一个代表风物之诗琴的第几行,第二个代表音乐音高(1-7),第3个为节拍

如果是5个,最后一个代表节拍,前4个两个一组

这里提供一个我已经写好的一个,《废狱摇篮曲》

156
1,1,8
1,6,8
0,1,8
1,7,8
0,1,8
0,3,8
1,3,8
1,6,8
0,1,8
1,3,8
1,7,8
0,2,8
1,3,8
1,6,8
0,1,8
1,7,8
0,1,8
0,3,8
1,3,8
1,6,8
0,1,8
1,3,8
1,7,8
0,2,8
1,1,8
1,6,8
0,1,8
1,7,8
0,1,8
0,3,8
1,3,8
1,6,8
0,1,8
1,3,8
1,7,8
0,2,8
1,3,8
1,6,8
0,1,8
1,7,8
0,1,8
0,3,8
1,3,8
1,6,8
0,1,8
1,3,8
1,7,8
0,2,8
1,2,2,6,2
1,2,8
1,3,8
1,4,1,2,4
1,4,8
1,5,8
1,6,4
1,5,1,3,6
1,6,8
1,4,4
1,3,1,1,6
1,4,8
1,3,4
1,2,2,6,2
1,2,8
1,3,8
1,4,1,2,4
1,6,4
0,1,4
0,2,1,6,6
0,3,8
0,1,4
1,7,1,5,6
0,1,8
1,7,4
1,6,1,3,2
1,6,4
0,1,4
0,2,1,6,6
0,3,8
0,1,4
1,7,1,5,6
1,6,8
1,5,4
1,6,1,4,6
1,2,8
1,6,4
1,5,1,3,4
1,4,4
1,3,4
1,2,2,6,2
1,4,8
1,6,8
1,5,1,1,2
1,5,4
1,4,1,2,6
1,3,8
1,4,4
1,2,2,6,6
1,2,2,6,4
1,2,2,6,8
1,3,1,1,8
1,4,1,2,4
1,4,1,2,8
1,5,1,3,8
1,6,1,4,4
1,5,1,3,6
1,6,8
1,4,1,2,4
1,3,1,1,6
1,4,8
1,3,1,1,4
1,2,2,6,6
1,2,2,6,8
1,3,1,1,8
1,4,1,2,4
1,6,1,4,4
0,1,1,6,4
0,2,1,6,6
0,3,8
0,1,1,4,4
1,7,1,5,6
0,1,8
1,7,1,5,4
1,6,1,3,6
1,6,1,3,4
0,1,1,6,4
0,2,1,6,6
0,3,8
0,1,1,6,4
1,7,1,5,6
1,6,8
1,5,1,2,4
1,6,1,4,6
1,2,8
1,6,1,4,4
1,5,1,3,4
1,4,1,2,4
1,3,1,1,4
1,2,2,6,6
1,4,8
1,6,8
1,5,1,1,4
1,4,1,1,4
1,3,1,1,4
1,2,2,6,4

利用python实现原神自动化弹琴相关推荐

  1. 用java实现原神自动弹琴(附谱)

    文章目录 前言` 一.程序原理 二.正文 1.简单的写一个音符类 2.通过歌单类调用音符类的方法 3.main方法的调用 三.其他工具类,便于写琴谱(非必需) 四.琴谱 可能出现的问题 总结 前言` ...

  2. python抽奖概率设计_通过python分析原神,结果出现了“这种情况”

    最近迷上了原神这款游戏,趁着保研完,肝了两个星期,也氪了一些金.先不谈这款游戏可玩性有多高,但论氪金强度算是我从小到大玩的游戏中,能排得上第一的了. 对于这种寸卡寸金的游戏,如何在无穷无尽的抽卡活动中 ...

  3. 利用Python子进程关闭Excel自动化过程出现的弹窗

    利用Python进行Excel自动化操作的过程中,尤其是涉及VBA时,可能遇到消息框/弹窗(MsgBox).此时需要人为响应,否则代码卡死直至超时 1 2.根本的解决方法是VBA代码中不要出现类似弹窗 ...

  4. 怎么用python编写个apk_【android】如何利用python做Android项目自动化构建,并一键实现构建结果发送到钉钉通知以及通过二维码下载apk或者其他处理等功能...

    今天我们来谈一谈用python做Android项目自动化构建的过程.我们知道在常规的Android开发过程中,开发人员打包的时候需要在Android Studio当中进行,或者通过gradle命令,但 ...

  5. PYTHON PLUS 原神——星辉兑换“宗室武器”的总体暴击率提升度算法

    PYTHON PLUS<原神> 星辉兑换"宗室武器"的总体暴击率提升度算法 在<原神>中有两套可以用星辉兑换的限定武器--"黑岩"和&q ...

  6. python自动化测试脚本可以测php吗_利用Python语言实现实验室自动化

    作为一名系统和应用工程师,得益于自动化仪器和软件,我已经节省了不计其数的日日夜夜;例如LabVIEW,这是一款系统设计平台和开发环境,支持可视化编程语言.LabVIEW支持用户利用友好的图形用户界面( ...

  7. 利用python实现百度竞价自动化效果监控

    百度竞价效果监控 很多客户朋友做了百度推广,全国或者多地区推广,很多时候监控不到本地以外城市的推广情况,不方便推广的调整. 问题 百度推广可以选择不同地区不同出价策略和不同的创意等,但是监控不到数据的 ...

  8. python实现原神卡池锁定功能

    原神的卡池没有密码,很容易被误触,因此我用python写了一个原神卡池锁定器. 注:jj.jpg请自己设置 如果有bug的话,有以下几种可能性: 1.弹窗关闭后检测函数存在0.5s的真空期导致不能及时 ...

  9. Python实现原神抽卡,生成桌面程序,tkinter

    这里写自定义目录标题 话不多说,直接贴所有代码 运行效果 需要用到的两张图片 话不多说,直接贴所有代码 import random import sys import tkinter as tk # ...

  10. Python开发原神刮刮乐脚本,随机自制盲盒卡片

    嗨害大家好鸭!我是芝士❤ 最近也是玩原神比较魔怔 周边盲盒什么的一个都没买 买吧又太贵了- 不买吧,总是心痒痒- 于是!!! 我就自己做了一个刮刮乐 本质上和盲盒差不多 就是刮中哪一个算哪一个哈哈哈 ...

最新文章

  1. 【 Vivado 】输入延迟约束实例
  2. Visual Studio 2010 Express for Windows Phone Key!
  3. Linq(03)基础之Orderby group-by
  4. java面试加分_不只是给面试加分 -- Java WeakReference的理解与使用
  5. 布同:web版比赛实时算分系统的设计
  6. matlab fopen函数的用法,matlab中关于fread函数的用法
  7. android studio创建第一个安卓程序加载html5页面(一)
  8. pycharm error:no module named caffe
  9. c#与马扎克通讯_马扎克伺服报警
  10. c语言中分号存在的意义,问什么C程序里总是提示缺少分号;,而明明有分号?
  11. OneNote制作计划表
  12. 大嘴首发J2EE框架,Bigmouth-framework你值得拥有!
  13. FPGA 优秀学习代码
  14. 素数之魂——黎曼和他的伟大猜想
  15. java+s2sh+mysql报刊订阅系统系统
  16. 什么是TailwindCSS
  17. 百度地图自定义覆盖物
  18. Jmeter wrk ab压测软件对比
  19. 天合光能将进行股东投票决议退市事宜
  20. verycd不提供下载,解决方法

热门文章

  1. Mac 连接 Appstore.报未知错误
  2. Strongswan app 使用IKEv2 EAP 通过 Freeradius EAP认证 连接 Strongswan
  3. springcloud+eruka整合seata解决分布式事务
  4. 不断上涨的房租及将来悲催的命运
  5. python对象类型之概述
  6. BAP2010学评系统弹出环境错误的解决方式
  7. 国产手机支持的国内代工企业大幅提升业绩,海外代工企业深受打击
  8. VUE-使用计算属性设置v-if 显示与否
  9. ebay如何通过html上传图片,eBay上传图片要求详解,附图片制作技巧
  10. Unity 2D游戏中的抛物运动