diff --git a/Musicreater.New.py b/Musicreater.New.py new file mode 100644 index 0000000..76b22de --- /dev/null +++ b/Musicreater.New.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + + +# W-YI 金羿 +# QQ 2647547478 +# 音·创 开发交流群 861684859 +# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com +# 版权所有 Team-Ryoun 金羿 +# 若需转载或借鉴 请附作者 + + +""" + Copyright 2022 Eilles Wan (金羿) + + Licensed under the Apache License, Version 2.0 (the 'License'); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an 'AS IS' BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +""" + +# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开 + + +# 下面为正文 + + + +from msctspt.bugReporter import version + +__ver__ = f'{version.version[1]} {version.version[0]}' +__author__ = '金羿Eilles' + + +import tkinter +import tkinter.simpledialog as sdialog +import tkinter.filedialog as fdialog + + + +from msctLib.settings import settings + + + + + + + + +def __main__(): + + pass + + + + + + + + + +if __name__ == '__main__': + __main__() \ No newline at end of file diff --git a/Musicreater.py b/Musicreater.py index d3dc43c..fe0b2b4 100644 --- a/Musicreater.py +++ b/Musicreater.py @@ -1,5 +1,4 @@ # -*- coding: utf-8 -*- -# ! python3 # W-YI 金羿 @@ -61,7 +60,7 @@ from msctspt.threadOpera import NewThread from nmcsup.vers import VER __version__ = VER[1] + VER[0] -__author__ = 'W-YI (金羿)' +__author__ = '金羿Eilles & 诸葛亮与八卦阵bgArray' dire = "" begp = "" endp = "" diff --git a/README_en.md b/README_en.md index af1de93..73c34b9 100644 --- a/README_en.md +++ b/README_en.md @@ -89,7 +89,7 @@ Musicreater - > function (package) - > the following four new functions 3. Thank *Charlie_Ping “查理平”* for bdx convert funtion. 4. Thank *CMA_2401PT* for BDXWorkShop as the .bdx structure's operation guide. 5. Thank *Miracle Plume “神羽”* \ for the Miracle Plume Bedrock Edition Audio Resource Pack -6. Thank *Arthur Morgan* for his/her biggest support for Musicreater +6. Thank *Arthur Morgan* for his/her biggest support for the debugging of Musicreater 7. Thanks for a lot of groupmates who support me and help me to test the program. 8. If you have give me some help but u haven't been in the list, please contact me. diff --git a/msctLib/__init__.py b/msctLib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/msctLib/data.py b/msctLib/data.py new file mode 100644 index 0000000..4290dce --- /dev/null +++ b/msctLib/data.py @@ -0,0 +1,134 @@ +# -*- coding:utf-8 -*- + + +import pickle +import json +from typing import Any, Iterable + + + + +class pickleIO: + + def __init__(self,fileName:str,data: Any = None) -> None: + '''简单的pickle操作功能''' + self.file = fileName + if data: + self._data = data + else: + with open (self.file, 'rb') as f: + self._data = pickle.load(f) + + def __call__(self, *args: Any, **kwds: Any) -> Any: + return self.data + + def write(self): + '''将数据写入pickle''' + with open (self.file, 'wb') as f: + pickle.dump(self._data, f) + + + def load(self) -> Any: + '''从文件读取数据''' + with open (self.file, 'rb') as f: + self._data = pickle.load(f) + return self.data + + @property + def data(self): + '''返回数据值''' + if self._data is None: + raise ValueError('无可用值载入或值为None') + else: + return self._data + + + +class jsonIO: + + def __init__(self,fileName:str,data: Any = None) -> None: + '''简单的json操作功能''' + self.file = fileName + if data: + self._data = data + else: + with open (self.file, 'r', encoding='utf-8') as f: + self._data = json.load(f) + + def __call__(self, *args: Any, **kwds: Any) -> Any: + return self.data + + def write(self): + '''将数据写入json''' + with open (self.file, 'w', encoding='utf-8') as f: + json.dump(self._data, f) + + + def load(self) -> Any: + '''从文件读取数据''' + with open (self.file, 'r', encoding='utf-8') as f: + self._data = json.load(f) + return self.data + + @property + def data(self): + '''返回数据值''' + return self._data + + +class uniteIO: + + def __init__(self,fileName:str,fileType,data: Any = None) -> None: + '''简单的文件数据IO操作功能''' + self.filename = fileName + if not fileType is None: + self._type = fileType + else: + try: + with open (self.filename, 'r', encoding='utf-8') as f: + self._type = json + except: + with open (self.file, 'rb') as f: + self._type = pickle + + if self._type == json: + with open (self.filename, 'r', encoding='utf-8') as f: + self._rfile = f + with open (self.filename, 'w', encoding='utf-8') as f: + self._wfile = f + elif self._type == pickle: + with open (self.file, 'rb') as f: + self._rfile = f + with open (self.file, 'wb') as f: + self._wfile = f + + if not data is None: + self._data = data + else: + self._data = self._type.load(self._rfile) + + + def __call__(self, *args: Any, **kwds: Any) -> Any: + return self.data + + def write(self): + '''将数据写入文件''' + self._type.dump(self._data, self._wfile) + + + def load(self) -> Any: + '''从文件读取数据''' + self._data = self._type.load(self._rfile) + return self.data + + @property + def data(self): + '''返回数据值''' + return self._data + + +if __name__ == '__main__': + from sys import argv + + if argv[1]: + input(pickle(argv[1]).data) \ No newline at end of file diff --git a/msctspt/settings.py b/msctLib/settings.py similarity index 93% rename from msctspt/settings.py rename to msctLib/settings.py index e758f09..59f6adf 100644 --- a/msctspt/settings.py +++ b/msctLib/settings.py @@ -1,18 +1,18 @@ -# -*- coding:utf-8 -*- - - - - -settings = { - 'language' : 'zh-CN', - 'theme' : { - '' : '', - }, -} - -class msctSetting: - def __init__(self,**settings) -> None: - pass - - def __call__(self, **kwds): +# -*- coding:utf-8 -*- + + + + +settings = { + 'language' : 'zh-CN', + 'theme' : { + '' : '', + }, +} + +class msctSetting: + def __init__(self,**settings) -> None: + pass + + def __call__(self, **kwds): pass \ No newline at end of file diff --git a/msctspt/__pycache__/funcOpera.cpython-38.pyc b/msctspt/__pycache__/funcOpera.cpython-38.pyc index 4e3e7ff..c131e41 100644 Binary files a/msctspt/__pycache__/funcOpera.cpython-38.pyc and b/msctspt/__pycache__/funcOpera.cpython-38.pyc differ diff --git a/msctspt/transfer.py b/msctspt/transfer.py index 993b9f2..8c4d4e5 100644 --- a/msctspt/transfer.py +++ b/msctspt/transfer.py @@ -222,23 +222,17 @@ def note2bdx(filePath: str, dire: list, Notes: list, ScoreboardName: str, Instru height: 生成结构的最高高度 :return 返回一个BdxConverter类,同时在指定位置生成.bdx文件""" - # from msctspt.transfer import formCmdBlock from nmcsup.trans import Note2Cmd from msctspt.bdxOpera_CP import BdxConverter cmd = Note2Cmd(Notes, ScoreboardName, Instrument, PlayerSelect, isProsess) cdl = [] - # 此处是处理一下,防止有注释 + for i in cmd: - # e = True - try: + if '#' in i: if (i[:i.index('#')].replace(' ', '') != '\n') and (i[:i.index('#')].replace(' ', '') != ''): cdl.append(i[:i.index('#')]) - # e = False - except: # ValueError + else: cdl.append(i) - # finally: - # if e is True: - # cdl.append(i) i = 0 down = False blocks = [formCmdBlock(dire, cdl.pop(0), 1, 1)] @@ -261,10 +255,7 @@ def note2bdx(filePath: str, dire: list, Notes: list, ScoreboardName: str, Instru - - - -def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, +def music2cmdBlocks(direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, isSquare: bool = False): """使用方法同Note2Cmd :param 参数说明: @@ -274,8 +265,7 @@ def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = isProsess: 是否显示进度条(会很卡) height: 生成结构的最高高度 isSquare: 生成的结构是否需要遵循生成正方形原则 - :return 返回一个BdxConverter类,同时在指定位置生成.bdx文件""" - from msctspt.bdxOpera_CP import BdxConverter + :return 返回一个列表,其中包含了音乐生成的所有的指令方块数据""" from msctspt.threadOpera import NewThread allblocks = [] @@ -333,7 +323,32 @@ def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = for th in threads: allblocks += th.getResult() - return BdxConverter(filePath, 'Build by Ryoun Musicreater', allblocks) + return allblocks + + + + + + + + + + + +def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, + isSquare: bool = False): + """使用方法同Note2Cmd + :param 参数说明: + filePath: 生成.bdx文件的位置 + dire: 指令方块在地图中生成的起始位置(相对位置) + music: 详见 Musicreater.py - dataset[0] + isProsess: 是否显示进度条(会很卡) + height: 生成结构的最高高度 + isSquare: 生成的结构是否需要遵循生成正方形原则 + :return 返回一个BdxConverter类,同时在指定位置生成.bdx文件""" + from msctspt.bdxOpera_CP import BdxConverter + return BdxConverter(filePath, 'Build by Ryoun Musicreater', music2cmdBlocks(direction,music,isProsess,height,isSquare) +) def note2webs(Notes: list, Instrument: str, speed: float = 5.0, PlayerSelect: str = '', isProsess: bool = False): diff --git a/options/__init__.py b/options/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/resources/myWords.txt b/resources/myWords.txt index 454feca..74e57ac 100644 --- a/resources/myWords.txt +++ b/resources/myWords.txt @@ -34,7 +34,7 @@ 上了战场就是英雄 ——长津湖 冰与火 恨与爱 静与情 有些枪必须开,有些可以不开 ——长津湖 -夕阳西下,余辉将尽,夜幕降临,寒风凛冽 ——原神 +夕阳西下,余辉将尽\n夜幕降临,寒风凛冽 ——原神 愿风擦拭你的双眼,让你看清真相 ——原神 心愿之结晶 而何能之宝贵 神明,正倾诉着他辉煌的过去……