
网络上对的介绍:水果机最为常见的是在街机厅中见到的,以新颖的水果作为游戏主题,融合了博彩类游戏元素。水果机界面由24个方格拼接成一个正方形,每个方格中都有一个目标(多个不同的图形,通常为水果),且每个方格下都有一个小灯。玩家投入游戏币后,选择希望押注的目标,当玩家按下开始键后,小灯开始绕着正方形中每个格子转,当小灯停下来时,如果停在玩家押注的目标时,则玩家可赢取相应的游戏币。
我做的水果机也是按照这个原理,具有随机抽奖的功能,会在抽奖刚开始时加速,到达一定值后减速,抽到某一水果后会用文字提示,下一次抽奖时会接着从上一次停止位置开始。
| 安装PyQT5 | 做准备工作,安装PyQt5等插件。 |
| 窗体设计 | 搜集图片,在Qt里面进行设计。 |
| 窗体加载 | 1.创建主窗体 |
| 2.窗体大小不能随便更改 | |
| 3.显示主窗体 | |
| 窗体属性 | 1.创建列表,保存图片的按钮 |
| 2.再创建一个列表,保存图片的显示信息 | |
| 3.设置“开始”按钮的鼠标单击cliked的槽函数。 | |
| 4.生成一个范围0-图片数-1的随机整数并保存到变量。 | |
| 5.定义一个布尔变量,初始值为Ture,代表开始游戏计时器执行时间间隔递减。 | |
| 启动游戏 | 1.随机生成150-250之间的数字,代表毫秒数 |
| 2.实例化计时器对象 | |
| 3.设置计时器对象执行间隔时间 | |
| 4.计时器对象间隔时间到期调用函数startTimer | |
| 5.启动计时器 | |
| Qtime的timeout事件 | 1.判断当前按钮列表索引是否为0 |
| 2.设置按钮列表当前索引所在按钮图片大小变大 | |
| 3.索引加一 | |
| 4.判断索引是否超出按钮列表最大索引 | |
| 5.判断计时器间隔时间值是减少还是增加 | |
| 6.判断计时器间隔时间是否小于1毫秒 | |
| 7.判断计时器间隔时间是否大于等于350毫秒 | |
| 8.重新设置下一次计时器间隔时间 |
从设计上告别博彩的色彩,让水果机成为适合所有人的一个选择工具。

这个是用PyQt5工具设计并转化而来的代码,PyQt5具体配置请看这篇博客
http://t.csdn.cn/vleWZ
http://t.csdn.cn/vleWZ
import random
import sys
from msilib import Dialog
import self as self
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QTimer, QSize
from PyQt5.QtGui import QPalette, QPixmap, QBrush
from PyQt5.QtWidgets import QApplication, QMainWindow
def setInterval(self):
"""
:param self:
"""
pass
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(751, 536)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("水果图片/西瓜果(watermelon fruit)-ico_爱给网_aigei_com.ico"), QtGui.QIcon.Normal,
QtGui.QIcon.Off)
Dialog.setWindowIcon(icon)
self.p1_btn = QtWidgets.QPushButton(Dialog)
self.p1_btn.setGeometry(QtCore.QRect(9, 14, 113, 109))
self.p1_btn.setText("")
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap("水果图片/苹果.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn.setIcon(icon1)
self.p1_btn.setIconSize(QtCore.QSize(100, 100))
self.p1_btn.setFlat(True)
self.p1_btn.setObjectName("p1_btn")
self.p1_btn_2 = QtWidgets.QPushButton(Dialog)
self.p1_btn_2.setGeometry(QtCore.QRect(132, 14, 113, 109))
self.p1_btn_2.setText("")
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap("水果图片/橙子.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_2.setIcon(icon2)
self.p1_btn_2.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_2.setFlat(True)
self.p1_btn_2.setObjectName("p1_btn_2")
self.p1_btn_3 = QtWidgets.QPushButton(Dialog)
self.p1_btn_3.setGeometry(QtCore.QRect(255, 14, 113, 109))
self.p1_btn_3.setText("")
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap("水果图片/蓝莓.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_3.setIcon(icon3)
self.p1_btn_3.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_3.setFlat(True)
self.p1_btn_3.setObjectName("p1_btn_3")
self.p1_btn_4 = QtWidgets.QPushButton(Dialog)
self.p1_btn_4.setGeometry(QtCore.QRect(378, 14, 113, 109))
self.p1_btn_4.setText("")
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap("水果图片/荔枝.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_4.setIcon(icon4)
self.p1_btn_4.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_4.setFlat(True)
self.p1_btn_4.setObjectName("p1_btn_4")
self.p1_btn_5 = QtWidgets.QPushButton(Dialog)
self.p1_btn_5.setGeometry(QtCore.QRect(502, 14, 113, 109))
self.p1_btn_5.setText("")
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap("水果图片/芒果.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_5.setIcon(icon5)
self.p1_btn_5.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_5.setFlat(True)
self.p1_btn_5.setObjectName("p1_btn_5")
self.p1_btn_6 = QtWidgets.QPushButton(Dialog)
self.p1_btn_6.setGeometry(QtCore.QRect(625, 14, 113, 109))
self.p1_btn_6.setText("")
icon6 = QtGui.QIcon()
icon6.addPixmap(QtGui.QPixmap("水果图片/猕猴桃.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_6.setIcon(icon6)
self.p1_btn_6.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_6.setFlat(True)
self.p1_btn_6.setObjectName("p1_btn_6")
self.p1_btn_9 = QtWidgets.QPushButton(Dialog)
self.p1_btn_9.setGeometry(QtCore.QRect(625, 134, 113, 109))
self.p1_btn_9.setText("")
icon7 = QtGui.QIcon()
icon7.addPixmap(QtGui.QPixmap("水果图片/草莓.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_9.setIcon(icon7)
self.p1_btn_9.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_9.setFlat(True)
self.p1_btn_9.setObjectName("p1_btn_9")
self.p1_btn_16 = QtWidgets.QPushButton(Dialog)
self.p1_btn_16.setGeometry(QtCore.QRect(625, 254, 113, 109))
self.p1_btn_16.setText("")
icon8 = QtGui.QIcon()
icon8.addPixmap(QtGui.QPixmap("水果图片/葡萄.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_16.setIcon(icon8)
self.p1_btn_16.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_16.setFlat(True)
self.p1_btn_16.setObjectName("p1_btn_16")
self.p1_btn_15 = QtWidgets.QPushButton(Dialog)
self.p1_btn_15.setGeometry(QtCore.QRect(625, 413, 113, 109))
self.p1_btn_15.setText("")
icon9 = QtGui.QIcon()
icon9.addPixmap(QtGui.QPixmap("水果图片/樱桃.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_15.setIcon(icon9)
self.p1_btn_15.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_15.setFlat(True)
self.p1_btn_15.setObjectName("p1_btn_15")
self.p1_btn_13 = QtWidgets.QPushButton(Dialog)
self.p1_btn_13.setGeometry(QtCore.QRect(502, 413, 113, 109))
self.p1_btn_13.setText("")
icon10 = QtGui.QIcon()
icon10.addPixmap(QtGui.QPixmap("水果图片/青柠.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_13.setIcon(icon10)
self.p1_btn_13.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_13.setFlat(True)
self.p1_btn_13.setObjectName("p1_btn_13")
self.p1_btn_11 = QtWidgets.QPushButton(Dialog)
self.p1_btn_11.setGeometry(QtCore.QRect(378, 413, 113, 109))
self.p1_btn_11.setText("")
icon11 = QtGui.QIcon()
icon11.addPixmap(QtGui.QPixmap("水果图片/杨梅.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_11.setIcon(icon11)
self.p1_btn_11.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_11.setFlat(True)
self.p1_btn_11.setObjectName("p1_btn_11")
self.p1_btn_12 = QtWidgets.QPushButton(Dialog)
self.p1_btn_12.setGeometry(QtCore.QRect(255, 413, 113, 109))
self.p1_btn_12.setText("")
icon12 = QtGui.QIcon()
icon12.addPixmap(QtGui.QPixmap("水果图片/香蕉.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_12.setIcon(icon12)
self.p1_btn_12.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_12.setFlat(True)
self.p1_btn_12.setObjectName("p1_btn_12")
self.p1_btn_14 = QtWidgets.QPushButton(Dialog)
self.p1_btn_14.setGeometry(QtCore.QRect(132, 413, 113, 109))
self.p1_btn_14.setText("")
icon13 = QtGui.QIcon()
icon13.addPixmap(QtGui.QPixmap("水果图片/西瓜.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_14.setIcon(icon13)
self.p1_btn_14.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_14.setFlat(True)
self.p1_btn_14.setObjectName("p1_btn_14")
self.p1_btn_10 = QtWidgets.QPushButton(Dialog)
self.p1_btn_10.setGeometry(QtCore.QRect(9, 413, 113, 109))
self.p1_btn_10.setText("")
icon14= QtGui.QIcon()
icon14.addPixmap(QtGui.QPixmap("水果图片/无花果.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_10.setIcon(icon14)
self.p1_btn_10.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_10.setFlat(True)
self.p1_btn_10.setObjectName("p1_btn_10")
self.p1_btn_8 = QtWidgets.QPushButton(Dialog)
self.p1_btn_8.setGeometry(QtCore.QRect(9, 254, 113, 109))
self.p1_btn_8.setText("")
icon15 = QtGui.QIcon()
icon15.addPixmap(QtGui.QPixmap("水果图片/桃子.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_8.setIcon(icon15)
self.p1_btn_8.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_8.setFlat(True)
self.p1_btn_8.setObjectName("p1_btn_8")
self.p1_btn_7 = QtWidgets.QPushButton(Dialog)
self.p1_btn_7.setGeometry(QtCore.QRect(9, 134, 113, 109))
self.p1_btn_7.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.p1_btn_7.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
self.p1_btn_7.setText("")
icon16 = QtGui.QIcon()
icon16.addPixmap(QtGui.QPixmap("水果图片/树莓.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.p1_btn_7.setIcon(icon16)
self.p1_btn_7.setIconSize(QtCore.QSize(100, 100))
self.p1_btn_7.setFlat(True)
self.p1_btn_7.setObjectName("p1_btn_7")
self.message_lbl = QtWidgets.QLabel(Dialog)
self.message_lbl.setGeometry(QtCore.QRect(160, 190, 441, 81))
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(True)
font.setWeight(75)
self.message_lbl.setFont(font)
self.message_lbl.setAlignment(QtCore.Qt.AlignCenter)
self.message_lbl.setObjectName("message_lbl")
self.pushButton = QtWidgets.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(310, 310, 131, 61))
self.pushButton.setMouseTracking(True)
self.pushButton.setIconSize(QtCore.QSize(16, 16))
self.pushButton.setObjectName("pushButton")
self.pushButton.background_color: (1.0, 0.4, 1.0, 0.0)
self.p1_btn.raise_()
self.p1_btn_2.raise_()
self.p1_btn_3.raise_()
self.p1_btn_4.raise_()
self.p1_btn_5.raise_()
self.p1_btn_6.raise_()
self.p1_btn_9.raise_()
self.p1_btn_16.raise_()
self.p1_btn_15.raise_()
self.p1_btn_11.raise_()
self.p1_btn_13.raise_()
self.p1_btn_12.raise_()
self.p1_btn_14.raise_()
self.p1_btn_10.raise_()
self.p1_btn_8.raise_()
self.p1_btn_7.raise_()
self.message_lbl.raise_()
self.pushButton.raise_()
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "刘佳皓的水果机"))
self.message_lbl.setText(_translate("Dialog", "敢不敢试一试你的手气!!!"))
self.pushButton.setText(_translate("Dialog", "5元一次"))
# 以上代码除一些驱动外,基本都是UI里面的代码。
self.myInitWindow()
"""这些代码是用来对UI的一些修改,根据自己的需要,
对其中一些代码的修改,可以得到自己想要的效果。"""
# 设置窗体透明
# Dialog.setWindowOpacity(0.9)
# 设置窗体的背景色
# Dialog.setStyleSheet("#Dialog{background-color:blue}")
# 设置列表控件的背景色
# self.Dialog.setStyleSheet("#Dialog{background-color:LavenderBlush}")
# 设置窗体边框固定大小
Dialog.setFixedSize(Dialog.width(), Dialog.height())
# 设置窗体背景图片
palette = QPalette()
pix = QPixmap("水果图片/桌子.jpg")
# # 自调背景图大小和窗体适应
pix = pix.scaled(Dialog.width(), Dialog.height())
palette.setBrush(QPalette.Background, QBrush(pix))
Dialog.setPalette(palette)
self.message_lbl.setStyleSheet("color: rgb(196, 222, 255);")
self.pushButton.setStyleSheet("color: rgb(111, 321, 123);")
def myInitWindow(self):
"""
"""
self.btns = [self.p1_btn, self.p1_btn_2, self.p1_btn_3, self.p1_btn_4,
self.p1_btn_5, self.p1_btn_6, self.p1_btn_9, self.p1_btn_16, self.p1_btn_15,
self.p1_btn_13, self.p1_btn_11, self.p1_btn_12, self.p1_btn_14, self.p1_btn_10,
self.p1_btn_8, self.p1_btn_7]
self.btns_message = ["一天一苹果,医生远离我。", "橙子减少胆结石的发病率。", "蓝莓有助于防止衰老和癌症。",
"荔枝促进新陈代谢。", "芒果抗菌消炎。",
"猕猴桃使皮肤变得光滑。", "草莓助于消化,能健睥和胃。", "葡萄地阻止肾结石的形成。",
"樱桃明显抑制肝癌细胞增殖。", "青柠减少脂肪的沉积。。",
"杨梅清热解暑,解酒,利尿消肿.", "香蕉预防或治疗高血压。", "西瓜止暑解渴,健胃消食。",
"无花果提高睡眠质量。", "桃子利尿解暑、清热明目。", "树莓有助于保护心脏"]
self.pushButton.clicked.connect(self.gameStart)
self.index = random.randint(0, 16)
self.direction = True
# 认定Ture是递减
# 启动游戏
def gameStart(self):
# 随机生成毫秒数
self.speed = random.randint(150, 250)
# 实例化计时器对象
self.timer = QTimer()
# 设置计时器对象执行间隔时间
self.timer, setInterval(self)
# 计时器对象间隔时间到期调用函数startTimer
self.timer.timeout.connect(self.startTimer)
# 启动计时器
self.timer.start()
# 计时器间隔时间到达执行函数
def startTimer(self):
# 判断当前按钮列表索引是否为0
if self.index == 0:
# 如果为0,索引15的按钮图片重新设置为原始大小
self.btns[15].setIconSize(QSize(100, 100))
# 否则
else:
# 索引减一的按钮图片重新设置为原始大小
self.btns[self.index - 1].setIconSize(QSize(100, 100))
# 设置按钮列表当前索引所在按钮图片大小变大
self.btns[self.index].setIconSize(QSize(130, 130))
# 索引加一
self.index += 1
# 判断索引是否超出按钮列表最大索引
if self.index >= len(self.btns):
# 如果索引超出范围,索引重新从0开始
self.index = 0
# 判断计时器间隔时间值是减少还是增加
if self.direction:
# 如果是Ture,间隔每次减少5毫秒
self.speed -= 15
else:
# 如果是False,间隔每次怎加5毫秒
self.speed += 15
# 判断计时器间隔时间是否小于1毫秒
if self.speed <= 1:
# 重新设置间隔时间
self.speed = 1
self.direction = False
# 重新设置下一次计时器间隔时间
self.timer.setInterval(self.speed)
# 判断计时器间隔时间是否大于等于300毫秒
if self.speed >= 300:
# 重新设置变量direction的值为Ture,代表方向减少
self.direction = True
# 停止
self.timer.stop()
self.message_lbl.setText(self.btns_message[self.index - 1])
# 程序入口
if __name__ == '__main__': # python模拟程序入口
# 创建主窗体
app = QApplication(sys.argv)
# 设计的UI界面实体化
ui = Ui_Dialog()
# 创建主窗体对象,一个应用程序可以有多个窗体,但是一个窗体不能代表一个应用程序。
MainWindow = QMainWindow()
# 把所有用到的控件化在主窗体上。
ui.setupUi(MainWindow)
# 设置窗体大小不能更改
MainWindow.setFixedSize(MainWindow.width(), MainWindow.height())
# 主窗体自己的宽 #主窗体自己的高
# 显示主窗体
MainWindow.show()
sys.exit(app.exec_())
这上面有很多代码时从UI上转化来的,然后再用一些代码修饰,从而让水果机“活”起来。
本项目只是简单的实现了抽奖的功能,在很多地方还有不足,比如UI的设计还可以在漂亮一些,但本人的审美不足,就只能做到这了。
我是一个Python新手,如果代码哪里有不对,或者可以简化的地方,还请各位大佬指正或建议出来,谢谢大家看到最后。


关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的