利用python实现原神自动化弹琴

2023-11-10 00:50

本文主要是介绍利用python实现原神自动化弹琴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不多说,直接上代码

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实现原神自动化弹琴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/379444

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指