New Crowdin updates (#6964)
* New translations theme.md (Arabic) * New translations timelines.md (Arabic) * New translations aiscript.md (Czech) * New translations api.md (Czech) * New translations create-plugin.md (Czech) * New translations custom-emoji.md (Czech) * New translations follow.md (Czech) * New translations keyboard-shortcut.md (Czech) * New translations timelines.md (Spanish) * New translations stream.md (Spanish) * New translations pages.md (Czech) * New translations theme.md (French) * New translations api.md (French) * New translations create-plugin.md (French) * New translations custom-emoji.md (French) * New translations follow.md (French) * New translations keyboard-shortcut.md (French) * New translations mute.md (French) * New translations pages.md (French) * New translations reaction.md (French) * New translations reversi-bot.md (French) * New translations stream.md (French) * New translations create-plugin.md (Dutch) * New translations reversi-bot.md (Spanish) * New translations aiscript.md (Spanish) * New translations api.md (Spanish) * New translations create-plugin.md (Spanish) * New translations custom-emoji.md (Spanish) * New translations follow.md (Spanish) * New translations keyboard-shortcut.md (Spanish) * New translations mute.md (Spanish) * New translations pages.md (Spanish) * New translations reaction.md (Spanish) * New translations mute.md (Czech) * New translations timelines.md (French) * New translations reaction.md (Czech) * New translations follow.md (Korean) * New translations reaction.md (German) * New translations reversi-bot.md (German) * New translations stream.md (German) * New translations theme.md (German) * New translations timelines.md (German) * New translations aiscript.md (Korean) * New translations api.md (Korean) * New translations create-plugin.md (Korean) * New translations custom-emoji.md (Korean) * New translations keyboard-shortcut.md (Korean) * New translations mute.md (German) * New translations mute.md (Korean) * New translations pages.md (Korean) * New translations reaction.md (Korean) * New translations stream.md (Korean) * New translations theme.md (Korean) * New translations timelines.md (Korean) * New translations aiscript.md (Dutch) * New translations api.md (Dutch) * New translations reversi-bot.md (Czech) * New translations pages.md (German) * New translations reversi-bot.md (Korean) * New translations keyboard-shortcut.md (German) * New translations mute.md (Danish) * New translations stream.md (Czech) * New translations follow.md (German) * New translations theme.md (Czech) * New translations timelines.md (Czech) * New translations api.md (Danish) * New translations create-plugin.md (Danish) * New translations custom-emoji.md (Danish) * New translations follow.md (Danish) * New translations keyboard-shortcut.md (Danish) * New translations aiscript.md (Danish) * New translations pages.md (Danish) * New translations ja-JP.yml (German) * New translations reaction.md (Danish) * New translations custom-emoji.md (German) * New translations api.md (German) * New translations aiscript.md (German) * New translations timelines.md (Danish) * New translations theme.md (Danish) * New translations stream.md (Danish) * New translations reversi-bot.md (Danish) * New translations create-plugin.md (German) * New translations follow.md (Kabyle) * New translations keyboard-shortcut.md (Kabyle) * New translations custom-emoji.md (Kabyle) * New translations create-plugin.md (Kabyle) * New translations api.md (Kabyle) * New translations aiscript.md (Kabyle) * New translations reversi-bot.md (Kannada) * New translations timelines.md (Kannada) * New translations theme.md (Kannada) * New translations stream.md (Kannada) * New translations reaction.md (Kannada) * New translations pages.md (Kannada) * New translations mute.md (Kannada) * New translations pages.md (Kabyle) * New translations keyboard-shortcut.md (Kannada) * New translations mute.md (Kabyle) * New translations keyboard-shortcut.md (Japanese, Kansai) * New translations reaction.md (Kabyle) * New translations follow.md (Japanese, Kansai) * New translations custom-emoji.md (Kannada) * New translations theme.md (Japanese, Kansai) * New translations stream.md (Japanese, Kansai) * New translations reversi-bot.md (Japanese, Kansai) * New translations reaction.md (Japanese, Kansai) * New translations pages.md (Japanese, Kansai) * New translations mute.md (Japanese, Kansai) * New translations custom-emoji.md (Japanese, Kansai) * New translations reversi-bot.md (Kabyle) * New translations create-plugin.md (Japanese, Kansai) * New translations api.md (Japanese, Kansai) * New translations aiscript.md (Japanese, Kansai) * New translations timelines.md (Kabyle) * New translations theme.md (Kabyle) * New translations stream.md (Kabyle) * New translations follow.md (Kannada) * New translations keyboard-shortcut.md (English) * New translations create-plugin.md (Kannada) * New translations aiscript.md (English) * New translations reaction.md (English) * New translations pages.md (English) * New translations mute.md (English) * New translations follow.md (English) * New translations custom-emoji.md (English) * New translations create-plugin.md (English) * New translations api.md (English) * New translations stream.md (English) * New translations timelines.md (Chinese Traditional) * New translations theme.md (Chinese Traditional) * New translations stream.md (Chinese Traditional) * New translations reversi-bot.md (Chinese Traditional) * New translations reaction.md (Chinese Traditional) * New translations pages.md (Chinese Traditional) * New translations mute.md (Chinese Traditional) * New translations reversi-bot.md (English) * New translations theme.md (English) * New translations api.md (Kannada) * New translations pages.md (Uyghur) * New translations aiscript.md (Kannada) * New translations timelines.md (Uyghur) * New translations theme.md (Uyghur) * New translations stream.md (Uyghur) * New translations reversi-bot.md (Uyghur) * New translations reaction.md (Uyghur) * New translations mute.md (Uyghur) * New translations timelines.md (English) * New translations keyboard-shortcut.md (Uyghur) * New translations follow.md (Uyghur) * New translations custom-emoji.md (Uyghur) * New translations create-plugin.md (Uyghur) * New translations api.md (Uyghur) * New translations aiscript.md (Uyghur) * New translations timelines.md (Japanese, Kansai) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (French) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Russian) * New translations ja-JP.yml (Ukrainian) * New translations ja-JP.yml (Spanish) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Korean) * New translations aiscript.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations api.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations stream.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations mfm.md (Ukrainian) * New translations mfm.md (Korean) * New translations deck.md (Dutch) * New translations mfm.md (Dutch) * New translations deck.md (Norwegian) * New translations mfm.md (Norwegian) * New translations deck.md (Polish) * New translations mfm.md (Polish) * New translations deck.md (Portuguese) * New translations mfm.md (Portuguese) * New translations deck.md (Russian) * New translations mfm.md (Russian) * New translations deck.md (Ukrainian) * New translations deck.md (Chinese Simplified) * New translations mfm.md (German) * New translations mfm.md (Chinese Simplified) * New translations deck.md (Chinese Traditional) * New translations mfm.md (Chinese Traditional) * New translations deck.md (English) * New translations mfm.md (English) * New translations deck.md (Uyghur) * New translations mfm.md (Uyghur) * New translations deck.md (Kannada) * New translations mfm.md (Kannada) * New translations deck.md (Kabyle) * New translations mfm.md (Kabyle) * New translations deck.md (Japanese, Kansai) * New translations deck.md (Korean) * New translations deck.md (German) * New translations mfm.md (Danish) * New translations deck.md (French) * New translations mfm.md (French) * New translations deck.md (Spanish) * New translations mfm.md (Spanish) * New translations deck.md (Arabic) * New translations mfm.md (Arabic) * New translations deck.md (Czech) * New translations mfm.md (Czech) * New translations deck.md (Danish) * New translations mfm.md (Japanese, Kansai) * New translations aiscript.md (Chinese Traditional) * New translations api.md (Chinese Traditional) * New translations timelines.md (Chinese Traditional) * New translations api.md (Chinese Traditional) * New translations api.md (Chinese Traditional) * New translations api.md (Chinese Traditional) * New translations create-plugin.md (Chinese Traditional) * New translations keyboard-shortcut.md (Chinese Traditional) * New translations stream.md (Chinese Traditional) * New translations keyboard-shortcut.md (Chinese Traditional) * New translations keyboard-shortcut.md (Chinese Traditional) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations create-plugin.md (Chinese Simplified) * New translations aiscript.md (Chinese Traditional) * New translations follow.md (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations follow.md (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations create-plugin.md (Chinese Simplified) * New translations ja-JP.yml (Chinese Traditional) * New translations create-plugin.md (Chinese Simplified) * New translations custom-emoji.md (Chinese Simplified) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Chinese Traditional)
This commit is contained in:
parent
a5e841f59c
commit
498f6e9be2
310 changed files with 17534 additions and 30 deletions
160
src/docs/ko-KR/reversi-bot.md
Normal file
160
src/docs/ko-KR/reversi-bot.md
Normal file
|
@ -0,0 +1,160 @@
|
|||
# MisskeyリバーシBotの開発
|
||||
Misskeyのリバーシ機能に対応したBotの開発方法をここに記します。
|
||||
|
||||
1. `games/reversi`ストリームに以下のパラメータを付けて接続する:
|
||||
* `i`: botアカウントのAPIキー
|
||||
|
||||
2. 対局への招待が来たら、ストリームから`invited`イベントが流れてくる
|
||||
* イベントの中身に、`parent`という名前で対局へ誘ってきたユーザーの情報が含まれている
|
||||
|
||||
3. `games/reversi/match`へ、`user_id`として`parent`の`id`が含まれたリクエストを送信する
|
||||
|
||||
4. 上手くいくとゲーム情報が返ってくるので、`games/reversi-game`ストリームへ、以下のパラメータを付けて接続する:
|
||||
* `i`: botアカウントのAPIキー
|
||||
* `game`: `game`の`id`
|
||||
|
||||
5. この間、相手がゲームの設定を変更するとその都度`update-settings`イベントが流れてくるので、必要であれば何かしらの処理を行う
|
||||
|
||||
6. 設定に満足したら、`{ type: 'accept' }`メッセージをストリームに送信する
|
||||
|
||||
7. ゲームが開始すると、`started`イベントが流れてくる
|
||||
* イベントの中身にはゲーム情報が含まれている
|
||||
|
||||
8. 石を打つには、ストリームに`{ type: 'set', pos: <位置> }`を送信する(位置の計算方法は後述)
|
||||
|
||||
9. 相手または自分が石を打つと、ストリームから`set`イベントが流れてくる
|
||||
* `color`として石の色が含まれている
|
||||
* `pos`として位置情報が含まれている
|
||||
|
||||
## 位置の計算法
|
||||
8x8のマップを考える場合、各マスの位置(インデックスと呼びます)は次のようになっています:
|
||||
```
|
||||
+--+--+--+--+--+--+--+--+
|
||||
| 0| 1| 2| 3| 4| 5| 6| 7|
|
||||
+--+--+--+--+--+--+--+--+
|
||||
| 8| 9|10|11|12|13|14|15|
|
||||
+--+--+--+--+--+--+--+--+
|
||||
|16|17|18|19|20|21|22|23|
|
||||
...
|
||||
```
|
||||
|
||||
### X,Y座標 から インデックス に変換する
|
||||
```
|
||||
pos = x + (y * mapWidth)
|
||||
```
|
||||
`mapWidth`は、ゲーム情報の`map`から、次のようにして計算できます:
|
||||
```
|
||||
mapWidth = map[0].length
|
||||
```
|
||||
|
||||
### インデックス から X,Y座標 に変換する
|
||||
```
|
||||
x = pos % mapWidth
|
||||
y = Math.floor(pos / mapWidth)
|
||||
```
|
||||
|
||||
## マップ情報
|
||||
マップ情報は、ゲーム情報の`map`に入っています。 文字列の配列になっており、ひとつひとつの文字がマス情報を表しています。 それをもとにマップのデザインを知る事が出来ます:
|
||||
* `(スペース)` ... マス無し
|
||||
* `-` ... マス
|
||||
* `b` ... 初期配置される黒石
|
||||
* `w` ... 初期配置される白石
|
||||
|
||||
例えば、4*4の次のような単純なマップがあるとします:
|
||||
```text
|
||||
+---+---+---+---+
|
||||
| | | | |
|
||||
+---+---+---+---+
|
||||
| | ○ | ● | |
|
||||
+---+---+---+---+
|
||||
| | ● | ○ | |
|
||||
+---+---+---+---+
|
||||
| | | | |
|
||||
+---+---+---+---+
|
||||
```
|
||||
|
||||
この場合、マップデータはこのようになります:
|
||||
```javascript
|
||||
['----', '-wb-', '-bw-', '----']
|
||||
```
|
||||
|
||||
## ユーザーにフォームを提示して対話可能Botを作成する
|
||||
ユーザーとのコミュニケーションを行うため、ゲームの設定画面でユーザーにフォームを提示することができます。 例えば、Botの強さをユーザーが設定できるようにする、といったシナリオが考えられます。
|
||||
|
||||
フォームを提示するには、`reversi-game`ストリームに次のメッセージを送信します:
|
||||
```javascript
|
||||
{
|
||||
type: 'init-form',
|
||||
body: [フォームコントロールの配列]
|
||||
}
|
||||
```
|
||||
|
||||
フォームコントロールの配列については今から説明します。 フォームコントロールは、次のようなオブジェクトです:
|
||||
```javascript
|
||||
{
|
||||
id: 'switch1',
|
||||
type: 'switch',
|
||||
label: 'Enable hoge',
|
||||
value: false
|
||||
}
|
||||
```
|
||||
`id` ... コントロールのID。 `type` ... コントロールの種類。後述します。 `label` ... コントロールと一緒に表記するテキスト。 `value` ... コントロールのデフォルト値。
|
||||
|
||||
### フォームの操作を受け取る
|
||||
ユーザーがフォームを操作すると、ストリームから`update-form`イベントが流れてきます。 イベントの中身には、コントロールのIDと、ユーザーが設定した値が含まれています。 例えば、上で示したスイッチをユーザーがオンにしたとすると、次のイベントが流れてきます:
|
||||
```javascript
|
||||
{
|
||||
id: 'switch1',
|
||||
value: true
|
||||
}
|
||||
```
|
||||
|
||||
### フォームコントロールの種類
|
||||
#### 스위치
|
||||
type: `switch` スイッチを表示します。何かの機能をオン/オフさせたい場合に有用です。
|
||||
|
||||
##### プロパティ
|
||||
`label` ... スイッチに表記するテキスト。
|
||||
|
||||
#### ラジオボタン
|
||||
type: `radio` ラジオボタンを表示します。選択肢を提示するのに有用です。例えば、Botの強さを設定させるなどです。
|
||||
|
||||
##### プロパティ
|
||||
`items` ... ラジオボタンの選択肢。例:
|
||||
```javascript
|
||||
items: [{
|
||||
label: '弱',
|
||||
value: 1
|
||||
}, {
|
||||
label: '中',
|
||||
value: 2
|
||||
}, {
|
||||
label: '強',
|
||||
value: 3
|
||||
}]
|
||||
```
|
||||
|
||||
#### スライダー
|
||||
type: `slider` スライダーを表示します。
|
||||
|
||||
##### プロパティ
|
||||
`min` ... スライダーの下限。 `max` ... スライダーの上限。 `step` ... 入力欄で刻むステップ値。
|
||||
|
||||
#### テキストボックス
|
||||
type: `textbox` テキストボックスを表示します。ユーザーになにか入力させる一般的な用途に利用できます。
|
||||
|
||||
## ユーザーにメッセージを表示する
|
||||
設定画面でユーザーと対話する、フォーム以外のもうひとつの方法がこれです。ユーザーになにかメッセージを表示することができます。 例えば、ユーザーがBotの対応していないモードやマップを選択したとき、警告を表示するなどです。 メッセージを表示するには、次のメッセージをストリームに送信します:
|
||||
```javascript
|
||||
{
|
||||
type: 'message',
|
||||
body: {
|
||||
text: 'メッセージ内容',
|
||||
type: 'メッセージの種類'
|
||||
}
|
||||
}
|
||||
```
|
||||
メッセージの種類: `success`, `info`, `warning`, `error`。
|
||||
|
||||
## 投了する
|
||||
投了をするには、<a href="./api/endpoints/games/reversi/games/surrender">このエンドポイント</a>にリクエストします。
|
Loading…
Add table
Add a link
Reference in a new issue