Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09e43ae02a | ||
|
|
c5bd3f01d9 | ||
|
|
be0faff9fd | ||
|
|
cebf64847f | ||
|
|
ffbb38495f | ||
|
|
e553e5360f | ||
|
|
d234bd06a8 | ||
|
|
680811c50c | ||
|
|
ffabf6805f | ||
|
|
58bff1ce98 | ||
|
|
cd5501ebea | ||
|
|
331b96c8f0 | ||
|
|
c6671038a8 | ||
|
|
5579d5a32e | ||
|
|
8dec5b6420 | ||
|
|
3913982716 | ||
|
|
5353a40416 | ||
|
|
fd1d429f59 | ||
|
|
81503973a7 | ||
|
|
acb5083e22 | ||
|
|
639b1a3db1 | ||
|
|
a8a6312e2a | ||
|
|
9682d31c49 | ||
|
|
01d85610eb | ||
|
|
d070c67d3f | ||
|
|
fc7a880607 | ||
|
|
47caa7ccf9 | ||
|
|
3fa7059272 | ||
|
|
cc06bb14e3 | ||
|
|
a3264ec959 | ||
|
|
0f0072585b | ||
|
|
f6c25eb96a | ||
|
|
0ca17d699e | ||
|
|
2d7de338fa | ||
|
|
1890cc5a6f | ||
|
|
9f613ade82 | ||
|
|
b7482fa209 | ||
|
|
84fa8483d9 | ||
|
|
557a6a705a | ||
|
|
f08730e584 | ||
|
|
d0b04bcd9e | ||
|
|
88acee5bc5 | ||
|
|
34e89fe232 | ||
|
|
e6449f9d8c | ||
|
|
657422eb4f | ||
|
|
eaa56b0070 | ||
|
|
89eab211e4 | ||
|
|
c9cc9114c3 | ||
|
|
66f7e48166 | ||
|
|
6a91e0bab2 | ||
|
|
23dfa5135b | ||
|
|
bac732a42b | ||
|
|
e867a927b3 | ||
|
|
e4c6a2d584 | ||
|
|
5e29a1e55a | ||
|
|
b0cc1f279f | ||
|
|
9b626ea4a6 | ||
|
|
c0de917641 | ||
|
|
90852ce91d | ||
|
|
0afeac0f87 | ||
|
|
e7ae319ecf | ||
|
|
f8c969f75b | ||
|
|
ad01eb2dbb | ||
|
|
b158f2346c | ||
|
|
ae7dab752c | ||
|
|
0127253fdd | ||
|
|
a32cb04bb3 | ||
|
|
e75f375044 | ||
|
|
f694d9af72 |
|
|
@ -26,5 +26,6 @@ module.exports = {
|
||||||
'prettier/prettier': 'error',
|
'prettier/prettier': 'error',
|
||||||
'@typescript-eslint/no-explicit-any': 0,
|
'@typescript-eslint/no-explicit-any': 0,
|
||||||
'@typescript-eslint/ban-ts-comment': 0,
|
'@typescript-eslint/ban-ts-comment': 0,
|
||||||
|
'@typescript-eslint/no-non-null-assertion': 0,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
3
.gitignore
vendored
|
|
@ -8,7 +8,8 @@ pnpm-debug.log*
|
||||||
lerna-debug.log*
|
lerna-debug.log*
|
||||||
|
|
||||||
node_modules
|
node_modules
|
||||||
# dist
|
dist
|
||||||
|
diy-dist
|
||||||
dist-ssr
|
dist-ssr
|
||||||
*.local
|
*.local
|
||||||
|
|
||||||
|
|
|
||||||
0
.husky/commit-msg
Executable file → Normal file
0
.husky/pre-commit
Executable file → Normal file
|
|
@ -9,4 +9,8 @@ module.exports = {
|
||||||
'stylelint-config-standard-scss',
|
'stylelint-config-standard-scss',
|
||||||
'stylelint-config-prettier-scss',
|
'stylelint-config-prettier-scss',
|
||||||
],
|
],
|
||||||
|
rules: {
|
||||||
|
// 后续统一
|
||||||
|
'selector-class-pattern': '^[a-zA-Z0-9-_]+$',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
scripts: {
|
scripts: {
|
||||||
postbump: 'yarn build && git add dist/*',
|
// postbump: 'yarn build && git add dist/*',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
90
CHANGELOG.md
|
|
@ -2,6 +2,96 @@
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||||
|
|
||||||
|
## [1.1.0](https://github.com/StreakingMan/solvable-sheep-game/compare/v1.0.1...v1.1.0) (2023-05-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* 本地图片文件压缩 ([ffbb384](https://github.com/StreakingMan/solvable-sheep-game/commit/ffbb38495f2c8c124f6039496f613e6c416d9db4))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* 图片文件大小校验逻辑 ([be0faff](https://github.com/StreakingMan/solvable-sheep-game/commit/be0faff9fdf4aea6a2659325520d68b2f348c656))
|
||||||
|
* 自定义主题编辑回显 ([ffabf68](https://github.com/StreakingMan/solvable-sheep-game/commit/ffabf6805f81dd03bd070dd09a32e51a51d1138f))
|
||||||
|
* 音频文件切换为minio外链 ([680811c](https://github.com/StreakingMan/solvable-sheep-game/commit/680811c50cbef3fec80b73407daddcf48847f3bd))
|
||||||
|
|
||||||
|
### [1.0.1](https://github.com/StreakingMan/solvable-sheep-game/compare/v1.0.0...v1.0.1) (2022-10-19)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* diy模式得分页再来一次按钮显示 ([c667103](https://github.com/StreakingMan/solvable-sheep-game/commit/c6671038a831fd069b930303aa3bc841b5317571))
|
||||||
|
* 主题配置表单样式优化 ([5579d5a](https://github.com/StreakingMan/solvable-sheep-game/commit/5579d5a32e87a37c50d33621551dd39f7a0c74e5))
|
||||||
|
* 主题配置表单样式优化 ([8dec5b6](https://github.com/StreakingMan/solvable-sheep-game/commit/8dec5b6420b256ee6d87689d6790d4da81171913))
|
||||||
|
* 排行榜滚动定位 ([5353a40](https://github.com/StreakingMan/solvable-sheep-game/commit/5353a4041615589ac57d0cd8ce1ebca49372211c))
|
||||||
|
* 纯净模式隐藏二维码 ([3913982](https://github.com/StreakingMan/solvable-sheep-game/commit/3913982716d570d11afbeacdad8dd5d6d522eb37))
|
||||||
|
* 通关成功状态判断,完成游戏后无法点击问题 ([331b96c](https://github.com/StreakingMan/solvable-sheep-game/commit/331b96c8f0717bbb7912984b38cfde8622ea9bc6))
|
||||||
|
|
||||||
|
## [1.0.0](https://github.com/StreakingMan/solvable-sheep-game/compare/v0.0.10...v1.0.0) (2022-10-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* 排行榜 ([9682d31](https://github.com/StreakingMan/solvable-sheep-game/commit/9682d31c495d8c7229003e68b79a15430a4ecb68))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* wxQrcode路径 ([cc06bb1](https://github.com/StreakingMan/solvable-sheep-game/commit/cc06bb14e3a89411478dc32e880a49ef692b2e3c))
|
||||||
|
* 主题ID恢复为一次性,交互优化 ([d070c67](https://github.com/StreakingMan/solvable-sheep-game/commit/d070c67d3f49d8dbf89d420b72d02896a2d49508))
|
||||||
|
* 分数缓存逻辑调整 ([a8a6312](https://github.com/StreakingMan/solvable-sheep-game/commit/a8a6312e2a5d67639f50e185407915d554d28127))
|
||||||
|
* 图标路径判断问题 ([fc7a880](https://github.com/StreakingMan/solvable-sheep-game/commit/fc7a8806078cf0c1c343830cb3c0a3ba3aa7cbf0))
|
||||||
|
* 排行榜样式调整 ([639b1a3](https://github.com/StreakingMan/solvable-sheep-game/commit/639b1a3db11d3f21d88e39e8408fadab7dfa4121))
|
||||||
|
* 自定义主题icons完成度校验 ([01d8561](https://github.com/StreakingMan/solvable-sheep-game/commit/01d85610ebb2f3dcc7da7b2fa038c168414fc49a))
|
||||||
|
|
||||||
|
### [0.0.10](https://github.com/StreakingMan/solvable-sheep-game/compare/v0.0.9...v0.0.10) (2022-10-11)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* diy模式区分入口 ([34e89fe](https://github.com/StreakingMan/solvable-sheep-game/commit/34e89fe2328637fea5dc8b1f7f388defe720ebc9))
|
||||||
|
* 暂时关闭二维码生成功能 ([eaa56b0](https://github.com/StreakingMan/solvable-sheep-game/commit/eaa56b00700c4f50efe0e2a4536240dffc73f33f))
|
||||||
|
* 本地文件配置存储 ([2d7de33](https://github.com/StreakingMan/solvable-sheep-game/commit/2d7de338faafc76c55cf9f90b84f2b6672460255))
|
||||||
|
* 计时、最大关卡配置 ([b7482fa](https://github.com/StreakingMan/solvable-sheep-game/commit/b7482fa209db447a92772644579aca75dfc6de79))
|
||||||
|
* 配置上传时间间隔限制 ([c9cc911](https://github.com/StreakingMan/solvable-sheep-game/commit/c9cc9114c32a5f1bd9e66aa089d9309a07588d54))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* diy按钮位置调整 ([657422e](https://github.com/StreakingMan/solvable-sheep-game/commit/657422eb4fce3d169e594578e890cb15dbdc2e4c))
|
||||||
|
* diy模式的图片路径 ([0f00725](https://github.com/StreakingMan/solvable-sheep-game/commit/0f0072585b9af704c92fcef3e1ef5faef477f2e6))
|
||||||
|
* 交互优化 ([89eab21](https://github.com/StreakingMan/solvable-sheep-game/commit/89eab211e49652198e1a54f288aeb378728e3a87))
|
||||||
|
|
||||||
|
### [0.0.9](https://github.com/StreakingMan/solvable-sheep-game/compare/v0.0.8...v0.0.9) (2022-10-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* 关卡进度缓存 ([0afeac0](https://github.com/StreakingMan/solvable-sheep-game/commit/0afeac0f8716bef43d67dfb999de31ac4fed8f01))
|
||||||
|
* 缓存自定义主题 ([c0de917](https://github.com/StreakingMan/solvable-sheep-game/commit/c0de917641bd8ed08a5a4f1fda9c774770d879ec))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* 防止音频配置错误时阻塞主流程 ([ad01eb2](https://github.com/StreakingMan/solvable-sheep-game/commit/ad01eb2dbb3519388c64ffe0cda8dddc457f0ce7))
|
||||||
|
* 禁止图片拖动 ([e7ae319](https://github.com/StreakingMan/solvable-sheep-game/commit/e7ae319ecfddb4f0726355e9003d9f9f5e0c304a))
|
||||||
|
* 默认音效填充 ([e4c6a2d](https://github.com/StreakingMan/solvable-sheep-game/commit/e4c6a2d584648b35735ede614a6f8683521e012e))
|
||||||
|
* 项目链接 ([e867a92](https://github.com/StreakingMan/solvable-sheep-game/commit/e867a927b3e2faa831f8c462af059874bb59db5b))
|
||||||
|
|
||||||
|
### [0.0.8](https://github.com/StreakingMan/solvable-sheep-game/compare/v0.0.7...v0.0.8) (2022-09-26)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **自定义主题:** 纯净模式 ([0127253](https://github.com/StreakingMan/solvable-sheep-game/commit/0127253fddaa4236b14e6ff7306a7b9f5c840c49))
|
||||||
|
* **自定义主题:** 背景图片配置 ([ae7dab7](https://github.com/StreakingMan/solvable-sheep-game/commit/ae7dab752c067641b92890e3ec547e6ecd2f6b0c))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **自定义主题:** bgm链接判断 ([f694d9a](https://github.com/StreakingMan/solvable-sheep-game/commit/f694d9af726337360cffa348e1079c56ef6b15f5))
|
||||||
|
|
||||||
### [0.0.7](https://github.com/StreakingMan/solvable-sheep-game/compare/v0.0.6...v0.0.7) (2022-09-24)
|
### [0.0.7](https://github.com/StreakingMan/solvable-sheep-game/compare/v0.0.6...v0.0.7) (2022-09-24)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
67
README.md
|
|
@ -19,79 +19,66 @@
|
||||||
**声明:本项目仅供交流,禁止商用!否则后果自负。基于此项目的二创都是欢迎的,但非二创请不要删除原仓库地址
|
**声明:本项目仅供交流,禁止商用!否则后果自负。基于此项目的二创都是欢迎的,但非二创请不要删除原仓库地址
|
||||||
(啥都不改唯独删除来源我真的会谢 🙄️,请尊重他人劳动成果)**
|
(啥都不改唯独删除来源我真的会谢 🙄️,请尊重他人劳动成果)**
|
||||||
|
|
||||||

|
<img src="qrcode.png" style="width: 250px;" alt="体验地址二维码">
|
||||||
|
|
||||||
## Feature
|
## Feature
|
||||||
|
|
||||||
- 弹出:弹出队列左侧第一个,无限次数
|
- 弹出:弹出队列左侧第一个,无限次数
|
||||||
- 撤销:撤销上一次操作,无限次数
|
- 撤销:撤销上一次操作,无限次数
|
||||||
- 洗牌:哗啦哗啦,无限次数
|
- 洗牌:哗啦哗啦,无限次数
|
||||||
- 关卡:50 关玩到爽,可直接跳
|
- 关卡:20 关玩到爽,可直接跳
|
||||||
- 内置主题:金轮<img style="width:36px" src="src/themes/jinlun/images/肌肉金轮1.png" />、
|
- 内置主题:金轮<img style="width:36px" src="src/themes/jinlun/images/肌肉金轮1.png" />、
|
||||||
骚猪<img style="width:36px" src="src/themes/pdd/images/1.png" />、
|
骚猪<img style="width:36px" src="src/themes/pdd/images/1.png" />、
|
||||||
ikun<img style="width:36px" src="src/themes/ikun/images/kun.png" />(露出黑脚)、
|
ikun<img style="width:36px" src="src/themes/ikun/images/kun.png" />(露出黑脚)等
|
||||||
OW<img style="width:36px" src="src/themes/ow/images/ow.png" />主题等
|
|
||||||
- 自定义主题:自定义图片和音效,快速整活
|
- 自定义主题:自定义图片和音效,快速整活
|
||||||
|
- 排行榜:皇城 pk
|
||||||
|
|
||||||
开心就好 😄
|
开心就好 😄
|
||||||
|
|
||||||

|

|
||||||

|
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
vite+react 实现,欢迎 star、issue、pr、fork(尽量标注原仓库地址)
|
vite+react 实现,欢迎 star、issue、pr、fork(尽量标注原仓库地址)
|
||||||
|
|
||||||
切换主题参考 `src/themes` 下的代码,欢迎整活
|
## Related Repo
|
||||||
|
|
||||||
|
<a href="https://github.com/opendilab" target="_blank">opendilab</a> 的 AI 整活!移步
|
||||||
|
<a href="https://github.com/opendilab/DI-sheep" target="_blank">DI-sheep:深度强化学习 + 羊了个羊</a>
|
||||||
|
|
||||||
|
<img style="width:250px" src="https://github.com/opendilab/DI-sheep/raw/master/ui/public/demo.gif" alt="" />
|
||||||
|
|
||||||
## Todo List
|
## Todo List
|
||||||
|
|
||||||
- [x] 基础操作
|
- [x] 基础操作
|
||||||
- [x] 关卡生成
|
- [x] 关卡生成
|
||||||
- [ ] UI/UX 优化
|
- [x] UI/UX 优化
|
||||||
- [x] 多主题
|
- [x] 多主题
|
||||||
- [ ] 计时
|
- [x] 计时、得分、保存进度机制
|
||||||
|
- [x] 排行榜
|
||||||
- [ ] 性能优化
|
- [ ] 性能优化
|
||||||
- [x] BGM/音效
|
- [x] BGM/音效
|
||||||
- [ ] ~~点击时的缓冲队列,优化交互动画效果~~
|
- [ ] ~~点击时的缓冲队列,优化交互动画效果~~
|
||||||
- [x] 该游戏似乎涉嫌抄袭,考证后补充来源说明
|
- [x] 该游戏似乎涉嫌抄袭,考证后补充来源说明
|
||||||
- [ ] 桌面应用
|
- [ ] ~~桌面应用~~
|
||||||
- [x] 路径区分主题
|
- [x] 路径区分主题
|
||||||
- [x] 主题自定义
|
- [x] 主题自定义
|
||||||
|
- [x] 本地图片、音频配置
|
||||||
|
|
||||||
## 二次开发
|
## 二次开发
|
||||||
|
|
||||||
### 环境准备
|
项目的自定义主题功能涉及到后台存储(Bmob 懒人数据库),如果您只是简单的整活,可能并不需要相关的逻辑。
|
||||||
|
详细的二次开发说明请移步这里[DIY 指南](/diy/README.md)
|
||||||
安装以下内容
|
|
||||||
|
|
||||||
- [git](https://git-scm.com/)
|
|
||||||
- [node](https://nodejs.org/en/)
|
|
||||||
|
|
||||||
### 克隆仓库
|
|
||||||
|
|
||||||
直接克隆本仓库或者 fork
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git clone https://github.com/StreakingMan/solvable-sheep-game.git
|
|
||||||
```
|
|
||||||
|
|
||||||
### 依赖安装
|
|
||||||
|
|
||||||
克隆到本地后,在项目内敲命令
|
|
||||||
|
|
||||||
```shell
|
|
||||||
npm install -g yarn
|
|
||||||
|
|
||||||
yarn install
|
|
||||||
```
|
|
||||||
|
|
||||||
### 调试运行
|
|
||||||
|
|
||||||
```shell
|
|
||||||
yarn dev
|
|
||||||
```
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[GNU GENERAL PUBLIC LICENSE Version 3](LICENSE.md)
|
[GNU GENERAL PUBLIC LICENSE Version 3](LICENSE.md)
|
||||||
|
|
||||||
|
## 资助
|
||||||
|
|
||||||
|
~~由于各种白嫖的静态资源托管、后台服务的免费额度都已用完,目前自费升级了相关套餐。~~
|
||||||
|
如果您喜欢这个项目,觉得本项目对你有帮助的话,可以扫描下方付款码请我喝杯咖啡 ☕️/~~分摊后台服务费用~~~ 😘
|
||||||
|
|
||||||
|
2023.5.5 更新:Bmob 服务到期,后台服务已下线,相关功能暂时无法使用,如有需要请自行搭建后台服务
|
||||||
|
|
||||||
|

|
||||||
|
|
|
||||||
BIN
dist/assets/1.3981cb25.mp3
vendored
BIN
dist/assets/10.7a7f2023.mp3
vendored
BIN
dist/assets/2.630ffc58.mp3
vendored
BIN
dist/assets/3.6b7abdca.mp3
vendored
BIN
dist/assets/4.2a00776e.mp3
vendored
BIN
dist/assets/5.dd1371cb.mp3
vendored
BIN
dist/assets/6.2d207818.mp3
vendored
BIN
dist/assets/7.2a5aa643.mp3
vendored
BIN
dist/assets/8.790d91e2.mp3
vendored
BIN
dist/assets/9.6f41f7e8.mp3
vendored
BIN
dist/assets/bgm.64e1a220.mp3
vendored
BIN
dist/assets/bgm.dd360222.mp3
vendored
80
dist/assets/index.7e6c5363.js
vendored
1
dist/assets/index.9bed79d9.css
vendored
|
|
@ -1 +0,0 @@
|
||||||
#root{text-align:center;width:100%;max-width:500px;margin:0 auto}.app{width:100%;margin:0 auto}.scene-container{width:100%;padding-bottom:100%;position:relative;margin:10% 0}.scene-inner{position:absolute;left:0;right:0;bottom:0;top:0;overflow:visible;font-size:28px}.symbol{width:12.5%;padding-bottom:12.5%;position:absolute;transition:.15s;left:0;top:0;border-radius:8px}.symbol-inner{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;justify-content:center;align-items:center;border-radius:8px;border:2px solid #444;transition:.3s;overflow:hidden;user-select:none}.symbol-inner img{width:100%;height:100%;object-fit:cover}.queue-container{border-radius:8px;width:100%;padding-bottom:15%;border:2px solid gray;margin-bottom:16px}.modal{position:fixed;width:100vw;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;backdrop-filter:blur(10px);background-color:#0000001a;top:0;left:0}.bgm-button{position:fixed;left:0;top:0;padding:4px;width:36px;height:36px}.zhenghuo-button{width:100%;margin-top:8px}._dialog_ltgz4_1{text-align:left;overflow-y:auto}._dialogWrapper_ltgz4_5{z-index:10;position:fixed;left:50%;top:0;width:calc(100% - 32px);max-width:500px;bottom:0;transform:translate(-50%) translateY(-100%);opacity:0;background-color:#fff;transition:.3s;padding:16px;display:flex;flex-flow:column nowrap!important}@media screen and (min-width: 1024px){._dialogWrapper_ltgz4_5{margin:36px 0;border-radius:16px;box-shadow:0 19px 38px #0000004d,0 15px 12px #00000038}}._dialogShow_ltgz4_28{transform:translate(-50%) translateY(0);opacity:1}._dialog_ltgz4_1 ._error_ltgz4_32{color:#dc143c}._dialog_ltgz4_1 h4{margin:8px 0}._addBtn_ltgz4_39{border-radius:8px;width:50px;height:50px;border:1px solid gray;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:pointer}._addBtnEmpty_ltgz4_50:before{content:"+";color:#999;font-size:2em}._addBtn_ltgz4_39 img{width:100%;height:100%;object-fit:cover}._addDialog_ltgz4_60{position:absolute;left:50%;top:50%;width:90%;padding:12px;transform:translate(-50%) translateY(-60vh);opacity:0;transition:.3s;background-color:#fff;border-radius:8px;border:2px solid #535bf2}._addDialogShow_ltgz4_73{transform:translate(-50%) translateY(-50%);opacity:1}._deleteBtn_ltgz4_78{flex-grow:1;border-radius:4px;display:flex;align-items:center;justify-content:center;background-color:#f9f9f9;font-size:1.5em;color:#999;cursor:pointer}._deleteBtn_ltgz4_78 span{transform:rotate(45deg)}:root{font-family:Inter,Avenir,Helvetica,Arial,sans-serif;font-size:16px;line-height:24px;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-size-adjust:100%}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0 32px}h1{font-size:3.2em;line-height:1.1}select{border:1px solid gray;border-radius:4px;padding:4px 8px}input{border:1px solid gray;border-radius:4px;padding:8px 12px}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s;word-break:keep-all;outline:none}button.primary{background-color:#646cff;color:#fff}button:hover:not(.primary){border-color:#646cff}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.flex-container{display:flex;gap:8px;flex-wrap:wrap}.flex-center{justify-content:center;align-items:center}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-grow{flex-grow:1}.flex-between{justify-content:space-between;align-items:center}.flex-spacer{flex:1 1 auto}
|
|
||||||
BIN
dist/assets/music.23baa7eb.mp3
vendored
BIN
dist/assets/ow.3382df41.png
vendored
|
Before Width: | Height: | Size: 17 KiB |
BIN
dist/assets/sound-button-click.cad3ef43.mp3
vendored
BIN
dist/assets/sound-triple.33b9817c.mp3
vendored
BIN
dist/assets/上勾拳.3bbc1bc8.png
vendored
|
Before Width: | Height: | Size: 70 KiB |
BIN
dist/assets/上勾拳.d6d8766e.mp3
vendored
BIN
dist/assets/中指.96683709.mp3
vendored
BIN
dist/assets/你倒是跑啊.3c9752c3.mp3
vendored
BIN
dist/assets/你倒是跑啊.aacf33e7.png
vendored
|
Before Width: | Height: | Size: 25 KiB |
BIN
dist/assets/你干嘛哎呦.f4670ca7.mp3
vendored
BIN
dist/assets/全民制作人大家好.459ff524.mp3
vendored
BIN
dist/assets/吃个娜娜.0fe34bc5.mp3
vendored
BIN
dist/assets/吃个娜娜.e3ffcc97.png
vendored
|
Before Width: | Height: | Size: 10 KiB |
BIN
dist/assets/塘鳢鱼.2280de16.png
vendored
|
Before Width: | Height: | Size: 5.3 KiB |
BIN
dist/assets/我黑切呢.8094b7d4.mp3
vendored
BIN
dist/assets/末日铁拳来了.26bf5600.png
vendored
|
Before Width: | Height: | Size: 72 KiB |
BIN
dist/assets/末日铁拳来了.59f7f9f8.mp3
vendored
BIN
dist/assets/杀人哥嘎嘎.00e65660.png
vendored
|
Before Width: | Height: | Size: 26 KiB |
BIN
dist/assets/杀人哥嘎嘎.86bec9fd.mp3
vendored
BIN
dist/assets/李甲抡.3b197095.mp3
vendored
BIN
dist/assets/李甲抡.6396c31d.png
vendored
|
Before Width: | Height: | Size: 13 KiB |
BIN
dist/assets/毁天灭地.07add5a1.mp3
vendored
BIN
dist/assets/毁天灭地.ebcc58d6.png
vendored
|
Before Width: | Height: | Size: 14 KiB |
BIN
dist/assets/河豚.0d8fb633.png
vendored
|
Before Width: | Height: | Size: 5.4 KiB |
BIN
dist/assets/离开嗷ruai.6be28ce4.png
vendored
|
Before Width: | Height: | Size: 13 KiB |
BIN
dist/assets/离开嗷ruai.efd2af43.mp3
vendored
BIN
dist/assets/笑1.6323c5e3.mp3
vendored
BIN
dist/assets/笑2.d9fa6094.mp3
vendored
BIN
dist/assets/笑3.b0a821eb.mp3
vendored
BIN
dist/assets/笑4.e266b69a.mp3
vendored
BIN
dist/assets/篮球击地.50053395.mp3
vendored
BIN
dist/assets/肌肉金轮1.47f18038.mp3
vendored
BIN
dist/assets/肌肉金轮2.184f3d14.mp3
vendored
BIN
dist/assets/肌肉金轮3.cbc5b4cc.mp3
vendored
BIN
dist/assets/脑瘫.a8522986.mp3
vendored
BIN
dist/assets/脑瘫.ea18fdc2.png
vendored
|
Before Width: | Height: | Size: 92 KiB |
BIN
dist/assets/起飞啦.41f03854.mp3
vendored
BIN
dist/assets/锦鲤.9bb5b7f8.png
vendored
|
Before Width: | Height: | Size: 7.5 KiB |
BIN
dist/assets/韩委员.880571c2.mp3
vendored
BIN
dist/assets/鲈鱼.7aa086d6.png
vendored
|
Before Width: | Height: | Size: 7.6 KiB |
BIN
dist/assets/鲑鱼.3547dc16.png
vendored
|
Before Width: | Height: | Size: 6.7 KiB |
BIN
dist/assets/鲤鱼.d49d71f0.png
vendored
|
Before Width: | Height: | Size: 7.2 KiB |
BIN
dist/assets/鲨鱼.a945ae5c.png
vendored
|
Before Width: | Height: | Size: 6.6 KiB |
BIN
dist/assets/鲫鱼.5aab4123.png
vendored
|
Before Width: | Height: | Size: 5.7 KiB |
BIN
dist/assets/鳖.20877388.png
vendored
|
Before Width: | Height: | Size: 6.1 KiB |
BIN
dist/assets/鸡你太美.66fdae33.mp3
vendored
BIN
dist/assets/黑鱼.6d860c7f.png
vendored
|
Before Width: | Height: | Size: 6.2 KiB |
5
dist/github.svg
vendored
|
|
@ -1,5 +0,0 @@
|
||||||
<svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true"
|
|
||||||
class="octicon octicon-mark-github v-align-middle">
|
|
||||||
<path fill-rule="evenodd"
|
|
||||||
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" />
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 788 B |
61
dist/index.html
vendored
|
|
@ -1,61 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta
|
|
||||||
name="description"
|
|
||||||
content="无限道具版羊了个羊、可以通关的羊了个羊"
|
|
||||||
/>
|
|
||||||
<title>有解的羊了个羊</title>
|
|
||||||
<script>
|
|
||||||
var _hmt = _hmt || [];
|
|
||||||
(function () {
|
|
||||||
var hm = document.createElement('script');
|
|
||||||
hm.src =
|
|
||||||
'https://hm.baidu.com/hm.js?0a5701b62c5da53aa10f9096fccb377c';
|
|
||||||
var s = document.getElementsByTagName('script')[0];
|
|
||||||
s.parentNode.insertBefore(hm, s);
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
<script type="module" crossorigin src="/assets/index.7e6c5363.js"></script>
|
|
||||||
<link rel="stylesheet" href="/assets/index.9bed79d9.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="root"></div>
|
|
||||||
<script>
|
|
||||||
// vite没有global,手动声明
|
|
||||||
var global = global || window;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script
|
|
||||||
async
|
|
||||||
src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"
|
|
||||||
></script>
|
|
||||||
<script async>
|
|
||||||
// 如果您基于此项目二创,可以删除以下代码
|
|
||||||
// 否则请标明原仓库地址
|
|
||||||
setTimeout(() => {
|
|
||||||
const { hostname } = location;
|
|
||||||
if (
|
|
||||||
hostname !== 'localhost' &&
|
|
||||||
!hostname.endsWith('streakingman.com')
|
|
||||||
) {
|
|
||||||
const a = document.createElement('a');
|
|
||||||
a.setAttribute(
|
|
||||||
'href',
|
|
||||||
'https://github.com/StreakingMan/solvable-sheep-game'
|
|
||||||
);
|
|
||||||
a.setAttribute('target', '_blank');
|
|
||||||
a.innerText =
|
|
||||||
'本项目仅供交流,禁止商业用途,点击查看原github仓库';
|
|
||||||
const p = document.createElement('p');
|
|
||||||
p.style.textAlign = 'center';
|
|
||||||
p.append(a);
|
|
||||||
document.body.prepend(p);
|
|
||||||
}
|
|
||||||
}, 5000);
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
BIN
dist/sound-disco.mp3
vendored
103
diy/README.md
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
# DIY 指南
|
||||||
|
|
||||||
|
游戏的核心逻辑已经封装到了 `src/components/Game.tsx` ,方便大家魔改, 主题配置的类型声明见 `src/themes/interface.ts`
|
||||||
|
|
||||||
|
你可以先通过超酷的[stackblitz](https://stackblitz.com/edit/solvable-sheep-game?file=diy%2Fdiy.theme.json&terminal=dev:diy)
|
||||||
|
在线体验一番(等待依赖安装完成后,编辑配置将实时更新)再回来看这里的指南。
|
||||||
|
|
||||||
|
## 准备工作
|
||||||
|
|
||||||
|
### 环境准备
|
||||||
|
|
||||||
|
安装以下内容
|
||||||
|
|
||||||
|
- [git](https://git-scm.com/)
|
||||||
|
- [node](https://nodejs.org/en/)
|
||||||
|
|
||||||
|
### 克隆仓库
|
||||||
|
|
||||||
|
直接克隆本仓库或者 fork 后,安装项目依赖
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git clone https://github.com/StreakingMan/solvable-sheep-game.git
|
||||||
|
cd solvable-sheep-game
|
||||||
|
npm install -g yarn
|
||||||
|
yarn install
|
||||||
|
```
|
||||||
|
|
||||||
|
## 素材配置
|
||||||
|
|
||||||
|
原项目的自定义主题功能使用了 Bmob 后台,DIY 时并不需要相关的逻辑,您只需要改动 `diy` 文件下的文件:
|
||||||
|
图片以及音频素材复制到 `diy/public` 下, 并配置 `diy/diy.theme.json`
|
||||||
|
文件即可,配置格式见 `src/themes/interface.ts` ,
|
||||||
|
|
||||||
|
以下是`diy.theme.json`配置字段的说明:
|
||||||
|
|
||||||
|
- title 标题
|
||||||
|
- desc 描述
|
||||||
|
- bgm 背景音乐文件相对于 `diy/public` 的路径
|
||||||
|
- dark 深色模式(标题为亮色)
|
||||||
|
- background 背景图片文件相对于 `diy/public` 的路径
|
||||||
|
- backgroundBlur 背景图片是否添加毛玻璃效果
|
||||||
|
- backgroundColor 背景颜色 CSS 色值
|
||||||
|
- pure 纯净模式,DIY 时已开启
|
||||||
|
- maxLevel 最大关卡数,默认 50
|
||||||
|
- sounds 音效数组
|
||||||
|
- name 名称
|
||||||
|
- src 音效文件相对于 `diy/public` 的路径
|
||||||
|
- icons 图标数组
|
||||||
|
- name 名称,三连判断的依据
|
||||||
|
- content 图片文件相对于 `diy/public` 的路径
|
||||||
|
- clickSound 点击音效的 `name`
|
||||||
|
- triple 三连音效的 `name`
|
||||||
|
- operateSoundMap 操作音效
|
||||||
|
- shift 弹出音效的 `name`
|
||||||
|
- undo 撤销音效的 `name`
|
||||||
|
- wash 洗牌音效的 `name`
|
||||||
|
|
||||||
|
配置完成后调试运行,点击链接即可
|
||||||
|
|
||||||
|
```shell
|
||||||
|
yarn dev:diy
|
||||||
|
|
||||||
|
# ➜ Local: http://localhost:5556/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 构建发布
|
||||||
|
|
||||||
|
运行命令
|
||||||
|
|
||||||
|
```shell
|
||||||
|
yarn build:diy
|
||||||
|
```
|
||||||
|
|
||||||
|
会在 `diy/diy-dist` 下生成静态资源,直接将这些文件复制服务器上做代理即可。如果嫌麻烦,推荐使用 [vercel](https://vercel.com/)
|
||||||
|
一键部署(每月免费 100G 流量), 将更改后的项目推到自己的 github(gitlab,bitbucket 同样支持)仓库,
|
||||||
|
使用 github 账号登录 vercel 后导入该项目,构建模版选择 vite,
|
||||||
|
构建命令更改为 `yarn build:diy` 输出地址改为 `diy/diy-dist` 即可 。见下图:
|
||||||
|
|
||||||
|
<img src="./vercel.png" alt="" style="width: 400px"/>
|
||||||
|
|
||||||
|
导入后项目有更新会自动构建,并且会生成 vercel 的二级链接(也可以自定义域名)。
|
||||||
|
|
||||||
|
## 其他
|
||||||
|
|
||||||
|
如果您想体验项目的完整功能,则需要注册一个 [Bmob](https://www.bmobapp.com/) 账号,
|
||||||
|
注册后新建应用(有一年的白嫖版,免费请求数虽然很客观,但并发数有限制,请根据自己的实际流量
|
||||||
|
选择升级套餐,或者其他存储方案)
|
||||||
|
|
||||||
|
新建应用后,去到设置页面拷贝密钥和安全码到项目的 `.env` 文件中
|
||||||
|
|
||||||
|
- VITE_BMOB_SECRETKEY=设置->应用密钥->SecretKey
|
||||||
|
- VITE_BMOB_SECCODE=设置->安全验证->Api 安全码
|
||||||
|
|
||||||
|
ps: 如果您的项目托管在公共仓库中,请注意保护密钥,本地使用 `.env.local` 进行配置
|
||||||
|
|
||||||
|
应用创建后,点击【云数据库】,创建两个表 `config` 和 `file`
|
||||||
|
|
||||||
|
`config` 表用来存储自定义配置的 json 字符串,需要新增 `content` 列
|
||||||
|
|
||||||
|
`rank` 表,储存排名信息
|
||||||
|

|
||||||
|
|
||||||
|
最后,开发和打包命令分别使用 `yarn dev` 和 `yarn build` 即可
|
||||||
BIN
diy/datebase-rank.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
100
diy/diy.theme.json
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
{
|
||||||
|
"title": "标题",
|
||||||
|
"desc": "描述",
|
||||||
|
"bgm": "/sound-disco.mp3",
|
||||||
|
"dark": true,
|
||||||
|
"background": "",
|
||||||
|
"backgroundBlur": false,
|
||||||
|
"backgroundColor": "#8dac85",
|
||||||
|
"pure": true,
|
||||||
|
"maxLevel": 50,
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"name": "1",
|
||||||
|
"content": "/1.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "2",
|
||||||
|
"content": "/2.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "3",
|
||||||
|
"content": "/3.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "4",
|
||||||
|
"content": "/4.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "5",
|
||||||
|
"content": "/5.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "6",
|
||||||
|
"content": "/6.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "7",
|
||||||
|
"content": "/7.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "8",
|
||||||
|
"content": "/8.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "9",
|
||||||
|
"content": "/9.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "10",
|
||||||
|
"content": "/10.png",
|
||||||
|
"clickSound": "button-click",
|
||||||
|
"tripleSound": "triple"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sounds": [
|
||||||
|
{
|
||||||
|
"name": "sound-undo",
|
||||||
|
"src": "/sound-undo.mp3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sound-shift",
|
||||||
|
"src": "/sound-shift.mp3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sound-wash",
|
||||||
|
"src": "/sound-wash.mp3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "button-click",
|
||||||
|
"src": "/sound-button-click.mp3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "triple",
|
||||||
|
"src": "/sound-triple.mp3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"operateSoundMap": {
|
||||||
|
"shift": "sound-shift",
|
||||||
|
"undo": "sound-undo",
|
||||||
|
"wash": "sound-wash"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
diy/diy.vite.config.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import react from '@vitejs/plugin-react';
|
||||||
|
|
||||||
|
// https://vitejs.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [react()],
|
||||||
|
root: 'diy',
|
||||||
|
publicDir: './public',
|
||||||
|
build: {
|
||||||
|
outDir: 'diy-dist',
|
||||||
|
},
|
||||||
|
define: {
|
||||||
|
__DIY__: true,
|
||||||
|
},
|
||||||
|
server: {
|
||||||
|
host: true,
|
||||||
|
port: 5556,
|
||||||
|
},
|
||||||
|
});
|
||||||
38
diy/index.html
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="./public/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="无限道具版羊了个羊、可以通关的羊了个羊"
|
||||||
|
/>
|
||||||
|
<title>有解的羊了个羊</title>
|
||||||
|
<style>
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background-color: white;
|
||||||
|
transition: background-color 0.3s 0.4s;
|
||||||
|
color: rgb(0 0 0 / 60%);
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: currentColor;
|
||||||
|
text-decoration: inherit;
|
||||||
|
}
|
||||||
|
#root {
|
||||||
|
transition: opacity 0.5s;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script>
|
||||||
|
// vite没有global,手动声明
|
||||||
|
var global = global || window;
|
||||||
|
</script>
|
||||||
|
<script type="module" src="./main.tsx"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
15
diy/main.tsx
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom/client';
|
||||||
|
import App from '../src/App';
|
||||||
|
import '../src/styles/global.scss';
|
||||||
|
import '../src/styles/utils.scss';
|
||||||
|
import { domRelatedOptForTheme } from '../src/utils';
|
||||||
|
import theme from './diy.theme.json';
|
||||||
|
|
||||||
|
domRelatedOptForTheme(theme);
|
||||||
|
|
||||||
|
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
||||||
|
<React.StrictMode>
|
||||||
|
<App theme={theme} />
|
||||||
|
</React.StrictMode>
|
||||||
|
);
|
||||||
BIN
diy/public/1.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
diy/public/10.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
diy/public/2.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
diy/public/3.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
diy/public/4.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
diy/public/5.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
diy/public/6.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
diy/public/7.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
diy/public/8.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
diy/public/9.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
BIN
diy/public/sound-disco.mp3
Normal file
BIN
diy/public/sound-undo.mp3
Normal file
BIN
diy/vercel.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
188
index.html
|
|
@ -6,7 +6,7 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="无限道具版羊了个羊、可以通关的羊了个羊"
|
content="无限道具版羊了个羊、可以通关的羊了个羊、羊了个羊生成器"
|
||||||
/>
|
/>
|
||||||
<title>有解的羊了个羊</title>
|
<title>有解的羊了个羊</title>
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -19,18 +19,185 @@
|
||||||
s.parentNode.insertBefore(hm, s);
|
s.parentNode.insertBefore(hm, s);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background-color: white;
|
||||||
|
transition: background-color 0.3s 0.4s;
|
||||||
|
color: rgb(0 0 0 / 60%);
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: currentColor;
|
||||||
|
text-decoration: inherit;
|
||||||
|
}
|
||||||
|
#root {
|
||||||
|
transition: opacity 0.5s;
|
||||||
|
}
|
||||||
|
#loading {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 32px;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
@keyframes move {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 50%;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
12.5% {
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 50%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
25% {
|
||||||
|
left: 50%;
|
||||||
|
top: 0;
|
||||||
|
height: 50%;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
37.5% {
|
||||||
|
left: 50%;
|
||||||
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
height: 50%;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
62.5% {
|
||||||
|
left: 0;
|
||||||
|
top: 50%;
|
||||||
|
height: 50%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
75% {
|
||||||
|
left: 0;
|
||||||
|
top: 50%;
|
||||||
|
height: 50%;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
87.5% {
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes wave {
|
||||||
|
0% {
|
||||||
|
transform: translateY(30px);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateY(-30px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.loadingBlock {
|
||||||
|
position: absolute;
|
||||||
|
transition: 0.6s;
|
||||||
|
border-radius: 12px;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 50%;
|
||||||
|
width: 50%;
|
||||||
|
animation: move 1s infinite ease-in-out;
|
||||||
|
}
|
||||||
|
.loadingBlockContainer {
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
#loading.error .loadingBlock,
|
||||||
|
#loading.success .loadingBlock {
|
||||||
|
animation-play-state: paused;
|
||||||
|
}
|
||||||
|
.loadingBlock1 {
|
||||||
|
background-color: #8dac8588;
|
||||||
|
}
|
||||||
|
#loading.error .loadingBlock1 {
|
||||||
|
transform: rotate(75deg) translateX(30px);
|
||||||
|
animation: wave 1s infinite alternate;
|
||||||
|
}
|
||||||
|
#loading.success .loadingBlock1 {
|
||||||
|
transform: rotate(75deg) translateX(200px) scale(4);
|
||||||
|
transition-delay: 0.1s;
|
||||||
|
}
|
||||||
|
.loadingBlock2 {
|
||||||
|
background-color: #8dac8566;
|
||||||
|
animation-delay: 0.375s;
|
||||||
|
}
|
||||||
|
#loading.error .loadingBlock2 {
|
||||||
|
transform: rotate(175deg) translateX(10px);
|
||||||
|
}
|
||||||
|
#loading.success .loadingBlock2 {
|
||||||
|
transform: rotate(175deg) translateX(200px) scale(2);
|
||||||
|
transition-delay: 0.05s;
|
||||||
|
}
|
||||||
|
.loadingBlock3 {
|
||||||
|
background-color: #8dac8544;
|
||||||
|
animation-delay: 0.75s;
|
||||||
|
}
|
||||||
|
#loading.error .loadingBlock3 {
|
||||||
|
transform: rotate(225deg) translateX(20px);
|
||||||
|
}
|
||||||
|
#loading.success .loadingBlock3 {
|
||||||
|
transform: rotate(225deg) translateX(200px) scale(3);
|
||||||
|
}
|
||||||
|
#loadingTips {
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1.8;
|
||||||
|
text-align: center;
|
||||||
|
transition: 0.3s;
|
||||||
|
}
|
||||||
|
#loading.success #loadingTips {
|
||||||
|
transform: translateY(300px);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
#backHomeTip {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root">
|
||||||
|
<!--数据加载提示在react渲染之前做-->
|
||||||
|
<div id="loading" class="loading">
|
||||||
|
<div class="loadingBlockContainer">
|
||||||
|
<div class="loadingBlock loadingBlock1"></div>
|
||||||
|
<div class="loadingBlock loadingBlock2"></div>
|
||||||
|
<div class="loadingBlock loadingBlock3"></div>
|
||||||
|
</div>
|
||||||
|
<div id="loadingTips">
|
||||||
|
<span id="loadingText">加载中...</span><br />
|
||||||
|
<span id="backHomeTip">
|
||||||
|
稍后再试或
|
||||||
|
<a href="/" style="color: #646cff"> 返回首页 </a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<script>
|
<script>
|
||||||
// vite没有global,手动声明
|
// vite没有global,手动声明
|
||||||
var global = global || window;
|
var global = global || window;
|
||||||
</script>
|
</script>
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
<script
|
|
||||||
async
|
|
||||||
src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"
|
|
||||||
></script>
|
|
||||||
<script async>
|
<script async>
|
||||||
// 如果您基于此项目二创,可以删除以下代码
|
// 如果您基于此项目二创,可以删除以下代码
|
||||||
// 否则请标明原仓库地址
|
// 否则请标明原仓库地址
|
||||||
|
|
@ -45,13 +212,12 @@
|
||||||
'href',
|
'href',
|
||||||
'https://github.com/StreakingMan/solvable-sheep-game'
|
'https://github.com/StreakingMan/solvable-sheep-game'
|
||||||
);
|
);
|
||||||
a.setAttribute('target', '_blank');
|
a.setAttribute('target', '_self');
|
||||||
|
a.style.cursor = 'pointer';
|
||||||
|
a.style.zIndex = '15';
|
||||||
a.innerText =
|
a.innerText =
|
||||||
'本项目仅供交流,禁止商业用途,点击查看原github仓库';
|
'本项目仅供交流,禁止商业用途,点击查看原github仓库';
|
||||||
const p = document.createElement('p');
|
document.getElementById('root')?.prepend(a);
|
||||||
p.style.textAlign = 'center';
|
|
||||||
p.append(a);
|
|
||||||
document.body.prepend(p);
|
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 5000);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
{
|
{
|
||||||
"name": "solvable-sheep-game",
|
"name": "solvable-sheep-game",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "0.0.7",
|
"version": "1.1.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
"dev:diy": "vite --config diy/diy.vite.config.ts",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build",
|
||||||
|
"build:diy": "tsc && vite build --config diy/diy.vite.config.ts",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"release:first": "standard-version -- --first-release",
|
"release:first": "standard-version -- --first-release",
|
||||||
|
|
|
||||||
BIN
preview.png
|
Before Width: | Height: | Size: 212 KiB |
BIN
preview2.png
|
Before Width: | Height: | Size: 27 KiB |