Skip to content

Commit

Permalink
Merge pull request #33 from izumiya-keisuke/sim
Browse files Browse the repository at this point in the history
Sim
  • Loading branch information
24ik authored Sep 8, 2023
2 parents e0bc12d + 39b0f13 commit cdc5489
Show file tree
Hide file tree
Showing 97 changed files with 2,025 additions and 3,945 deletions.
5 changes: 4 additions & 1 deletion .github/labels.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
- color: ffd900
name: breaking
description: Breaking change
- color: d73a4a
description: Something isn't working
name: bug
Expand All @@ -12,4 +15,4 @@
name: refactor
- color: 1d76db
description: Fix test code
name: test
name: test
5 changes: 4 additions & 1 deletion .github/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ changelog:
- refactor
- test
categories:
- title: 💥 Breaking Change
labels:
- breaking
- title: 🛠 Bug Fix
labels:
- bug
- title: 🎉 New Features
labels:
- enhancement
- enhancement
2 changes: 1 addition & 1 deletion .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,4 @@ jobs:
issue_number: context.payload.pull_request.number,
labels: Array.from(new_labels),
});
}
}
25 changes: 8 additions & 17 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,17 @@ jobs:
key: ${{ runner.os }}-nimble-${{ hashFiles('*.nimble') }}
restore-keys: |
${{ runner.os }}-nimble-
if: runner.os != 'Windows'
- uses: jiro4989/setup-nim-action@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- run: nimble -y install --define:distribute
- run: nimble -y install -p:-d:danger
if: runner.os == 'Linux'
- run: nimble -y install "-p:-d:danger" "-p:-d:avx2=false"
if: runner.os == 'Windows'
- run: nimble -y install -p:-d:danger -p:-d:avx2=false -p:-d:bmi2=false
if: runner.os == 'macOS'

- uses: actions/upload-artifact@v3
with:
Expand All @@ -51,21 +57,9 @@ jobs:
path: ./pon2
if: runner.os != 'Windows'

release-resources:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- uses: actions/upload-artifact@v3
with:
name: resources
path: ./src/resources

release-publish:
needs:
- release-build
- release-resources

runs-on: ubuntu-latest

Expand All @@ -75,9 +69,6 @@ jobs:
- uses: actions/download-artifact@v3

- run: |-
cp -r ./resources ./Linux
cp -r ./resources ./Windows
cp -r ./resources ./macOS
tar -zcvf Linux.tar.gz ./Linux
zip -rv Windows.zip ./Windows
zip -rv macOS.zip ./macOS
Expand All @@ -88,4 +79,4 @@ jobs:
./Linux.tar.gz
./Windows.zip
./macOS.zip
generate_release_notes: true
generate_release_notes: true
2 changes: 1 addition & 1 deletion .github/workflows/repo-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ jobs:

- uses: micnncim/action-label-syncer@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12 changes: 9 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,23 @@ jobs:
key: ${{ runner.os }}-nimble-${{ hashFiles('*.nimble') }}
restore-keys: |
${{ runner.os }}-nimble-
if: runner.os != 'Windows'
- uses: jiro4989/setup-nim-action@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- run: nimble -y install -d
if: runner.os == 'Linux'
- run: nimble -y install -d "-p:-d:avx2=false"
if: runner.os == 'Windows'
- run: nimble -y install -d -p:-d:avx2=false -p:-d:bmi2=false
if: runner.os == 'macOS'

- run: nim c -r ./tests/makeTest.nim
if: runner.os == 'Linux'
- run: nim c -r -d:avx2=0 ./tests/makeTest.nim
- run: nim c -r -d:avx2=false ./tests/makeTest.nim
if: runner.os == 'Windows'
- run: nim c -r -d:bmi2=0 -d:avx2=0 ./tests/makeTest.nim
- run: nim c -r -d:bmi2=false -d:avx2=false ./tests/makeTest.nim
if: runner.os == 'macOS'

- run: nimble -y test
- run: nimble -y test
8 changes: 5 additions & 3 deletions .github/workflows/web.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,19 @@ jobs:
key: ${{ runner.os }}-nimble-${{ hashFiles('*.nimble') }}
restore-keys: |
${{ runner.os }}-nimble-
if: runner.os != 'Windows'
- uses: jiro4989/setup-nim-action@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- run: |-
nimble -y install -d
nim doc --threads:on --project --index ./src/pon2.nim
nim doc --project --index ./src/pon2.nim
mv ./src/htmldocs/pon2.html ./src/htmldocs/index.html
- run: |-
nim js -o:www/index.js src/pon2.nim
nim js -d:danger -o:www/index.js src/pon2.nim
npx --yes google-closure-compiler --js ./www/index.js --js_output_file ./www/index.min.js
mv ./www ./src/htmldocs/playground
- uses: actions/configure-pages@v3
Expand All @@ -57,4 +59,4 @@ jobs:
url: ${{ steps.deployment.outputs.page_url }}

steps:
- uses: actions/deploy-pages@v2
- uses: actions/deploy-pages@v2
9 changes: 6 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@
/tests/*/*
!/tests/*/main.nim

/benchmark/*
!/benchmark/*.nim*
/src/htmldocs/

/www/index.js
/www/index.min.js
/www/assets

/pon2
/pon2.exe

/src/htmldocs/
/benchmark/*
!/benchmark/*.nim*
97 changes: 97 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Pon!通

Pon!通は,なぞぷよに関する様々な機能を提供するツールである.
以下の機能が提供されている.
- GUIアプリケーション:なぞぷよを編集したり自分でプレイしたりする.
- [【ブラウザで試す】](https://izumiya-keisuke.github.io/pon2/playground/index.html?kind=n&mode=e&field=t-&pairs&req-kind=0&req-color=0)
- ソルバー:なぞぷよを解く.
- ジェネレーター:なぞぷよを生成する.
- ツモ探索:なぞぷよのツモを入れ替えて一意解問題を生成する.
- データベース:なぞぷよを管理する.

GUIアプリケーションのキーボードショートカットは[ドキュメント](./docs/gui.md)を参照.

現在のところ以下の機能には対応していない.
- 壁・固ぷよ・鉄ぷよ
- フィーバーモード
- 途中のお邪魔落下

## インストール

### ビルド済バイナリ

[最新リリース](https://github.com/izumiya-keisuke/pon2/releases/latest)の「Assets」から,使用するOSに応じてダウンロードできる.

**注意:** 現在,ビルド済バイナリはmacOSでは動作しないかもしれない.
これは[GTK+3](https://docs.gtk.org/gtk3/)を利用している[NiGui](https://github.com/simonkrauter/NiGui)の制約によるものである.
手動でのインストールは可能であるはずだが,試していない.

### ソースからビルド

```shell
nimble install https://github.com/izumiya-keisuke/pon2
```

## 使い方

以下のドキュメントを参照.
- [GUIアプリケーション](./doc/gui.md)
- [ソルバー](./doc/solve.md)
- [ジェネレーター](./doc/generate.md)
- [ツモ探索](./doc/permute.md)
- [データベース](./doc/db.md)

## 開発者向け

このモジュールは以下を使用しているので,そちらも参照のこと.
- [puyo-core](https://github.com/izumiya-keisuke/puyo-core)
- [nazopuyo-core](https://github.com/izumiya-keisuke/nazopuyo-core)
- [puyo-simulator](https://github.com/izumiya-keisuke/puyo-simulator)

### APIの利用

`import pon2` でこのモジュールが提供する全てのAPIにアクセスできる.
詳しくは[ドキュメント](https://izumiya-keisuke.github.io/pon2)を参照.

### テスト

```shell
nim c -r tests/makeTest.nim
nimble test
```

`tests/makeTest.nim` をコンパイルする際,`-d:bmi2=<bool>``-d:avx2=<bool>`
オプションとして与えることで,使用する命令セットを指定することができる.

### ベンチマーク

```shell
nim c -r benchmark/main.nim
```

### テストの書き方

1. `tests` ディレクトリ直下に新しいディレクトリを作成する.
1. 作成したディレクトリ内に新しい `main.nim` ファイルを作成する.
1. 作成したファイル内に,テストのエントリーポイントを `main()` プロシージャとして記述する.

### 静的ウェブサイト作成

プロジェクトルートで以下を実行する:

```shell
nim js -d:danger -o:www/index.js src/pon2.nim
npx --yes google-closure-compiler --js www/index.js --js_output_file www/index.min.js
cp -r assets www
```

その後,`www` ディレクトリ以下の全ファイルを目的のディレクトリにコピーする.

### 開発への協力

ブランチを切って作業した上で,`main` ブランチへのPRを出してください.

## ライセンス

Apache-2.0,MPL-2.0のいずれかを選択する.
詳しくは[NOTICE](./NOTICE)を参照.
Loading

0 comments on commit cdc5489

Please sign in to comment.