「 結局 Rust言語で 通信部を書けなかった わたしたちは サンプル・プログラムで接続を開始する──☆」
http://entcog.c.ooco.jp/entcog/new_uec/protocols.html#test_server
「 参加選手に送られてきたメールを読むと ↑このURLを開くといいらしいわよ!」
サーバ:nngs1.3-ize.jp
ポート:9696
「 ↑トリプルアイズでも自社のサーバーを開放しているのだろう……☆」
https://tech-unlimited.com/whois.html
「 そこで Who is
だぜ☆
わたしのPCからは なぜか外が見えなかった……☆」
「 名前は解決できないようにしておいた☆ IPアドレスv4 を打ち込めだぜ☆」
***.***.***.***:9696
「 じゃあ あとは テキストをやりとり するだけなんじゃないの?」
「 サンプル・プログラムに そんな賢いことは できない……☆
送信するか、待つか 究極の2択を1度も間違えずに通信しなければならない☆」
「 プロトコルは NNGS 1.1.22を独自に改変したプログラム
だぜ☆」
Info | Please key typing.
Input | []
Info | Waiting for read.
Read | 7 | "Login: "
Info | Please key typing.
「 キータイピングすれば メッセージ送信 になり、空打ちをすれば メッセージ受信になる
サンプル・プログラムだぜ☆
まちがってメッセージ受信すれば サーバーとクライアント お互い待ちになり デッドロックする☆」
Kifuwarabe
Input | [Kifuwarabe]
Write | Kifuwarabe
Info | Writed.
Info | Please key typing.
Input | []
Info | Waiting for read.
thread 'main' panicked at 'Box<Any>', examples\ep5-input-read.rs:75:47
stack backtrace:
0: backtrace::backtrace::trace_unsynchronized
at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.37\src\backtrace\mod.rs:66
1: std::sys_common::backtrace::_print_fmt
at /rustc/4560ea788cb760f0a34127156c78e2552949f734\/src\libstd\sys_common\backtrace.rs:76
「 このサンプル・プログラムで空打ちすると メッセージ受信になるぜ☆」
Start | We go to the NNGS!
Info | Please key typing.
Kifuwarabe
Input | [Kifuwarabe]
Write | Kifuwarabe
Info | Writed.
Info | Please key typing.
Input | []
Write |
Info | Writed.
Info | Please key typing.
r
Input | [r]
Info | Waiting for read.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 231, error_len: Some(1) }', src\libcore\result.rs:1165:5
stack backtrace:
0: backtrace::backtrace::trace_unsynchronized
at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.37\src\backtrace\mod.rs:66
1: std::sys_common::backtrace::_print_fmt
at /rustc/4560ea788cb760f0a34127156c78e2552949f734\/src\libstd\sys_common\backtrace.rs:76
Before:
Err(e) => panic!(e),
After:
Err(e) => panic!("{}", e),
stream.flush();
http://www.computer-go.jp/gifu2005/regulations/nngs/playera.html
https://github.com/rust-lang/rust/issues/33778
Start | We go to the NNGS!
Info | Please key typing.
r
Input | [r]
Info | Waiting for read.
Read ok | 7
Read | "Login: "
Info | Please key typing.
Kifuwarabe
Input | [Kifuwarabe]
Write | Kifuwarabe
Info | Writed.
Info | Please key typing.
r
Input | [r]
Info | Waiting for read.
Read ok | 279
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 224, error_len: Some(1) }', src\libcore\result.rs:1165:5
stack backtrace:
0: backtrace::backtrace::trace_unsynchronized
at C:\Users\VssAdministrator\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.37\src\backtrace\mod.rs:66
「 ↑279 bytes 読み込めていて、デコードに失敗してるらしい☆」
Trace | We go to the NNGS!
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[7]
Trace | read=[[76, 111, 103, 105, 110, 58, 32]]
Trace | read=["Login: "]
Trace | Please key typing.
Kifuwarabe
Trace | input=[Kifuwarabe]
Trace | write=>Kifuwarabe
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[279]
Trace | read=[[13, 10, 34, 107, 105, 102, 117, 119, 97, 114, 97, 98, 101, 34, 32, 105, 115, 32, 110, 111, 116, 32, 97, 32, 114, 101, 103, 105,
115, 116, 101, 114, 101, 100, 32, 110, 97, 109, 101, 46, 32, 32, 89, 111, 117, 32, 109, 97, 121, 32, 117, 115, 101, 32, 116, 104, 105, 115, 32, 110, 97, 109, 101, 32, 116, 111, 32, 112, 108, 97, 121, 32, 117, 110, 114, 97, 116, 101, 100, 32, 103, 97, 109, 101, 115, 46, 13, 10, 40, 65, 102, 116, 101, 114, 32, 108, 111, 103, 103, 105, 110, 103, 32, 105, 110, 44, 32, 100, 111, 32, 34, 104, 101, 108, 112, 32, 114, 101, 103, 105, 115, 116, 101, 114, 34, 32, 102, 111, 114, 32, 109, 111, 114, 101, 32, 105, 110, 102, 111, 32, 111, 110, 32, 104, 111, 119, 32, 116, 111, 32, 114, 101, 103, 105, 115, 116, 101, 114, 46, 41, 13, 10, 13, 10, 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 103, 117, 101, 115, 116, 32, 97, 99, 99, 111, 117, 110, 116, 46, 13, 10, 89, 111, 117, 114, 32, 97, 99, 99, 111, 117, 110, 116, 32, 110, 97, 109, 101, 32, 105, 115, 32, 107, 105, 102, 117, 119, 97, 114, 97, 98, 101, 46, 13, 10, 255, 252, 1, 13, 10, 13, 10, 13, 10, 13, 10, 78, 111, 32, 78, 97, 109, 101, 32, 71, 111, 32, 83, 101, 114,
118, 101, 114, 32, 40, 78, 78, 71, 83, 41, 32, 118, 101, 114, 115, 105, 111, 110, 32, 49, 46, 49, 46, 50, 50, 13, 10, 35, 62, 32]]
「 13 は CR(キャリッジ・リターン)、 10 は LF(ライン・フィード) だぜ☆
これが有名な Windowsの改行 \r\n
だな☆」
「 Rust は Ascii コードも読めないのかだぜ☆? 文字コード変換表自作しないといけないのかだぜ☆?」
「 Asciiコードを UTF8 に変換するまでのサンプル・プログラムが欲しいんだが……☆」
rust – i32をASCII文字を表す文字列に変換する方法
「 ↑他の人は Asciiコード表を自作しているようだぜ☆」
「 エラー☆ Asciiコードじゃないんじゃないか☆? 255 とか混じってるし☆」
「 Shift じゃない JIS かも知らん☆ ISO-2022-JP だったらどないしょ☆」
How do I use the SHIFT-JIS encoding in Rust?
encoding_rs
Trace | We go to the NNGS!
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[7]
Trace | read=[[76, 111, 103, 105, 110, 58, 32]]
Trace | read=[Login: ]
Trace | Please key typing.
Kifuwarabe
Trace | input=[Kifuwarabe]
Trace | write=>Kifuwarabe
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[279]
Trace | read=[[13, 10, 34, 107, 105, 102, 117, 119, 97, 114, 97, 98, 101, 34, 32, 105, 115, 32, 110, 111, 116, 32, 97, 32, 114, 101, 103, 105,
115, 116, 101, 114, 101, 100, 32, 110, 97, 109, 101, 46, 32, 32, 89, 111, 117, 32, 109, 97, 121, 32, 117, 115, 101, 32, 116, 104, 105, 115, 32, 110, 97, 109, 101, 32, 116, 111, 32, 112, 108, 97, 121, 32, 117, 110, 114, 97, 116, 101, 100, 32, 103, 97, 109, 101, 115, 46, 13, 10, 40, 65, 102, 116, 101, 114, 32, 108, 111, 103, 103, 105, 110, 103, 32, 105, 110, 44, 32, 100, 111, 32, 34, 104, 101, 108, 112, 32, 114, 101, 103, 105, 115, 116, 101, 114, 34, 32, 102, 111, 114, 32, 109, 111, 114, 101, 32, 105, 110, 102, 111, 32, 111, 110, 32, 104, 111, 119, 32, 116, 111, 32, 114, 101, 103, 105, 115, 116, 101, 114, 46, 41, 13, 10, 13, 10, 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 103, 117, 101, 115, 116, 32, 97, 99, 99, 111, 117, 110, 116, 46, 13, 10, 89, 111, 117, 114, 32, 97, 99, 99, 111, 117, 110, 116, 32, 110, 97, 109, 101, 32, 105, 115, 32, 107, 105, 102, 117, 119, 97, 114, 97, 98, 101, 46, 13, 10, 255, 252, 1, 13, 10, 13, 10, 13, 10, 13, 10, 78, 111, 32, 78, 97, 109, 101, 32, 71, 111, 32, 83, 101, 114,
118, 101, 114, 32, 40, 78, 78, 71, 83, 41, 32, 118, 101, 114, 115, 105, 111, 110, 32, 49, 46, 49, 46, 50, 50, 13, 10, 35, 62, 32]]
Trace | read=[
"kifuwarabe" is not a registered name. You may use this name to play unrated games.
(After logging in, do "help register" for more info on how to register.)
This is a guest account.
Your account name is kifuwarabe.
��
No Name Go Server (NNGS) version 1.1.22
#> ]
Trace | Please key typing.
「 ↑クレート役に立ったぜ☆ 文字化けがあるようだが……☆?」
「 そこには何もないはずなのよ! 制御文字でも送ってきてんじゃないの?」
Trace | We go to the NNGS!
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[7]
Trace | read=[[76, 111, 103, 105, 110, 58, 32]]
Trace | read=[Login: ]
Trace | Please key typing.
Warabemoti
Trace | input=[Warabemoti]
Trace | write=>Warabemoti
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[279]
Trace | read=[[13, 10, 34, 119, 97, 114, 97, 98, 101, 109, 111, 116, 105, 34, 32, 105, 115, 32, 110, 111, 116, 32, 97, 32, 114, 101, 103, 105, 115, 116, 101, 114, 101, 100, 32, 110, 97, 109, 101, 46, 32, 32, 89, 111, 117, 32, 109, 97, 121, 32, 117, 115, 101, 32, 116, 104, 105, 115, 32, 110, 97, 109, 101, 32, 116, 111, 32, 112, 108, 97, 121, 32, 117, 110, 114, 97, 116, 101, 100, 32, 103, 97, 109, 101, 115, 46, 13, 10, 40, 65, 102, 116, 101, 114, 32, 108, 111, 103, 103, 105, 110, 103, 32, 105, 110, 44, 32, 100, 111, 32, 34, 104, 101, 108, 112, 32, 114, 101, 103, 105, 115, 116, 101, 114, 34, 32, 102, 111, 114, 32, 109, 111, 114, 101, 32, 105, 110, 102, 111, 32, 111, 110, 32, 104, 111, 119, 32, 116, 111, 32, 114, 101, 103, 105, 115, 116, 101, 114, 46, 41, 13, 10, 13, 10, 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 103, 117, 101, 115, 116, 32, 97, 99, 99, 111, 117, 110, 116, 46, 13, 10, 89, 111, 117, 114, 32, 97, 99, 99, 111, 117, 110, 116, 32, 110, 97, 109, 101, 32, 105, 115, 32, 119, 97, 114, 97, 98, 101, 109, 111, 116, 105, 46, 13, 10, 255, 252, 1, 13, 10, 13, 10, 13, 10, 13, 10, 78, 111, 32, 78, 97, 109, 101, 32, 71, 111, 32, 83, 101, 114, 118, 101, 114, 32, 40, 78, 78, 71, 83, 41, 32, 118, 101, 114, 115, 105, 111, 110, 32, 49, 46, 49, 46, 50, 50, 13, 10, 35, 62, 32]]
Trace | read=[
"warabemoti" is not a registered name. You may use this name to play unrated games.
(After logging in, do "help register" for more info on how to register.)
This is a guest account.
Your account name is warabemoti.
��
No Name Go Server (NNGS) version 1.1.22
#> ]
Trace | Please key typing.
「 ↑もう片方のプレイヤーは warabemoti
でいいだろ☆」
adminmatch Kifuwarabe warabemoti b 19 30 0
「 ↑ adminmatch
コマンドって誰でも使えるのかだぜ☆?」
Kifuwarabe:
adminmatch Kifuwarabe warabemoti b 19 30 0
Trace | input=[adminmatch Kifuwarabe warabemoti b 19 30 0]
Trace | write=>adminmatch Kifuwarabe warabemoti b 19 30 0
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[79]
Trace | read=[[13, 10, 123, 119, 97, 114, 97, 98, 101, 109, 111, 116, 105, 32, 91, 32, 78, 82, 32, 93, 32, 104, 97, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 46, 125, 13, 10, 35, 62, 32, 97, 100, 109, 105, 110, 109, 97, 116, 99, 104, 58, 32, 73, 110, 97, 99, 99, 101, 115, 115,
105, 98, 108, 101, 32, 99, 111, 109, 109, 97, 110, 100, 46, 13, 10, 35, 62, 32]]
Trace | read=[
{warabemoti [ NR ] has connected.}
#> adminmatch: Inaccessible command.
#> ]
Trace | Please key typing.
「 ↑ adminmatch: Inaccessible command.
お前には使えないって書いてないかだぜ☆?」
「 説明をよく読みなさいよ! admin
でログインしたら使えるんじゃないの?」
Admin:
Trace | We go to the NNGS!
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[7]
Trace | read=[[76, 111, 103, 105, 110, 58, 32]]
Trace | read=[Login: ]
Trace | Please key typing.
admin
Trace | input=[admin]
Trace | write=>admin
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[10]
Trace | read=[[13, 10, 49, 32, 49, 13, 10, 255, 251, 1]]
Trace | read=[
1 1
��]
Trace | Please key typing.
adminmatch Kifuwarabe warabemoti b 19 30 0
Trace | input=[adminmatch Kifuwarabe warabemoti b 19 30 0]
Trace | write=>adminmatch Kifuwarabe warabemoti b 19 30 0
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | readSize=[202]
Trace | read=[[255, 252, 1, 49, 32, 53, 13, 10, 57, 32, 70, 105, 108, 101, 13, 10, 13, 10, 57, 32, 70, 105, 108, 101, 13, 10, 53, 32, 42, 42, 42, 32, 89, 111, 117, 32, 104, 97, 118, 101, 32, 110, 111, 32, 112, 97, 115, 115, 119, 111, 114, 100, 46, 32, 80, 108, 101, 97, 115, 101, 32, 115, 101, 116, 32, 111, 110, 101, 32, 119, 105, 116, 104, 32, 116, 104, 101, 32, 112, 97, 115, 115, 119, 111, 114, 100, 32, 99, 111, 109, 109, 97, 110, 100, 46, 13, 10, 57, 32, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 116, 104, 101, 32, 65, 100, 109, 105, 110, 32, 67, 104, 97, 110, 110, 101, 108, 46, 32, 32, 84, 111, 112, 105, 99, 32, 105, 115, 58, 32, 65, 100, 109, 105, 110, 32, 83, 104, 111, 117, 116, 13, 10, 51, 57, 32, 78, 111, 32, 78, 97, 109, 101, 32, 71, 111, 32, 83, 101, 114, 118, 101, 114, 32, 40, 78, 78, 71, 83, 41, 32, 118, 101, 114, 115, 105, 111, 110, 32, 49, 46, 49, 46, 50, 50, 13, 10, 49, 32, 53, 13, 10]]
Trace | read=[��1 5
9 File
9 File
5 *** You have no password. Please set one with the password command.
9 Welcome to the Admin Channel. Topic is: Admin Shout
39 No Name Go Server (NNGS) version 1.1.22
1 5
]
Trace | Please key typing.
「 ↑パスワード入れろらしいぜ☆ パスワードのコマンドってあるのかだぜ☆?」
「 ↑パスワードを変えるコマンドは password
だが、 パスワードを入れるコマンドは何だぜ☆?」
「 ↑パスワードはサーバーから聞いてくるものじゃないかしら?」
Trace | Please key typing.
help
Trace | input=[help]
Trace | write=>help
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[8 File
accept address addtime adhelp adjourn admins aga ahelp alias
all arden automail awho ayt beep bell best
busy censor cgoban changes channel channels choice client
clients clntvrfy commands compuserve credits ctitle
date decline dnd done drop emote erase etiquette
event exit expire extra find free fteach fullname games
geek ginfo git gobot gshout gtl handicap handles
help huang inchannel index info invite it join
kibitz kiseido komi ladder ladder19 ladder9 last lchan
load lock logons logout look mail match messages mhelp
mmess moreinfo moretime moves newbie next npercent
nratings observe ogpercents open opening opercents
orating oratings overview pair pair-go password pause
pending percent ping players poem poem1 poem2 poem3 post
problem purpose pzz quit rank rating ratings realname redhouse
refresh register request reset resign results rindex rresults
save say score servers set sgf shout shownote sourcecode
spair sresign stats status stored suggest superko teach teamgo
tell time title tmatch toggle touch translate unalias
uncensor undo unfree unlock unobserve unpause uptime
variables vars vendors watching welcome who winigc
withdraw xiangfei yell yutopian yy zz
[Type "help overview" for a list of NNGS unconfigured luser clone general information files.]
8 File
1 5
]
Trace | Please key typing.
「 adminmatch
を使わない方法で対局できないの?」
admin:
logout
Trace | input=[logout]
Trace | write=>logout
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
「 ↑ logout
コマンドで応答がなくなるな☆ ログアウトできてんだろ☆」
admin:
Trace | We go to the NNGS!
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[Login: ]
Trace | Please key typing.
admin
Trace | input=[admin]
Trace | write=>admin
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
1 1
��]
Trace | Please key typing.
admin
Trace | input=[admin]
Trace | write=>admin
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[��1 5
9 File
9 File
5 *** You have no password. Please set one with the password command.
9 Welcome to the Admin Channel. Topic is: Admin Shout
39 No Name Go Server (NNGS) version 1.1.22
1 5
]
Trace | Please key typing.
adminmatch Kifuwarabe Warabemoti b 19 30 0
Trace | input=[adminmatch Kifuwarabe Warabemoti b 19 30 0]
Trace | write=>adminmatch Kifuwarabe Warabemoti b 19 30 0
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
1 5
]
Trace | Please key typing.
Kifuwarabe:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
{warabemoti [ NR ] has connected.}
#> Declining offer from warabemoti and offering new match parameters.
Match [19x19] in 30 minutes requested with warabemoti as White.
Use <match warabemoti B 19 30 0> or <decline warabemoti> to respond.
#>
{admin [ NR ] has connected.}
#>
## --- ##: admin has joined the ADMIN channel.
#> Declining offer from warabemoti and offering new match parameters.
Match [19x19] in 30 minutes requested with warabemoti as White.
Use <match warabemoti B 19 30 0> or <decline warabemoti> to respond.
#> ]
Trace | Please key typing.
Warabemoti:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[kifuwarabe declines your request for a match.
Match [19x19] in 30 minutes requested with kifuwarabe as Black.
Use <match kifuwarabe W 19 30 0> or <decline kifuwarabe> to respond.
#>
{admin [ NR ] has connected.}
#> kifuwarabe declines your request for a match.
Match [19x19] in 30 minutes requested with kifuwarabe as Black.
Use <match kifuwarabe W 19 30 0> or <decline kifuwarabe> to respond.
#> ]
Trace | Please key typing.
Use <match warabemoti B 19 30 0> or <decline warabemoti> to respond.
「 ↑これは コマンドを選べ、ということじゃないのかだぜ☆?」
Kifuwarabe:
match warabemoti B 19 30 0
Trace | input=[match warabemoti B 19 30 0]
Trace | write=>match warabemoti B 19 30 0
Trace | Writed.
Trace | Please key typing.
Warabemoti:
match kifuwarabe W 19 30 0
Trace | input=[match kifuwarabe W 19 30 0]
Trace | write=>match kifuwarabe W 19 30 0
Trace | Writed.
Trace | Please key typing.
admin:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
1 5
21 {Match 1: warabemoti [ NR ] vs. kifuwarabe [ NR ] }
1 5
]
Trace | Please key typing.
「 ↑admin には対局が1つ ついているように見えるが……☆」
Kifuwarabe:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[Updating offer already made to "warabemoti".
Requesting match in 30 min with warabemoti as White.
#> Match [1] with warabemoti in 30 accepted.
#> Creating match [1] with warabemoti.
#>
{Match 1: warabemoti [ NR ] vs. kifuwarabe [ NR ] }
#>
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 30:00
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 30:00
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move:
12 |. . . . . . . . . . . . . . . . . . .| 12 #0 O (White)
11 |. . . . . . . . . . . . . . . . . . .| 11
10 |. . . + . . . . . + . . . . . + . . .| 10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> ]
Trace | Please key typing.
Warabemoti:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[kifuwarabe updates the match request.
Match [19x19] in 30 minutes requested with kifuwarabe as Black.
Use <match kifuwarabe W 19 30 0> or <decline kifuwarabe> to respond.
#> Match [1] with kifuwarabe in 30 accepted.
#> Creating match [1] with kifuwarabe.
#>
{Match 1: warabemoti [ NR ] vs. kifuwarabe [ NR ] }
#>
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 30:00
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 30:00
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move:
12 |. . . . . . . . . . . . . . . . . . .| 12 #0 O (White)
11 |. . . . . . . . . . . . . . . . . . .| 11
10 |. . . + . . . . . + . . . . . + . . .| 10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#>
#> ]
Trace | Please key typing.
Kifuwarabe:
K10
Trace | input=[K10]
Trace | write=>K10
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 30:00
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 22:22
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: K10
12 |. . . . . . . . . . . . . . . . . . .| 12 #1 # (Black)
11 |. . . . . . . . . . . . . . . . . . .| 11
10>|. . . + . . . . .>#<. . . . . + . . .|<10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> ]
Trace | Please key typing.
Warabemoti:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 30:00
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 22:22
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: K10
12 |. . . . . . . . . . . . . . . . . . .| 12 #1 # (Black)
11 |. . . . . . . . . . . . . . . . . . .| 11
10>|. . . + . . . . .>#<. . . . . + . . .|<10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> ]
Trace | Please key typing.
Warabemoti:
K11
Trace | input=[K11]
Trace | write=>K11
Trace | Writed.
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 20:57
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 22:22
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: K11
12 |. . . . . . . . . . . . . . . . . . .| 12 #2 O (White)
11>|. . . . . . . . .>O<. . . . . . . . .|<11
10 |. . . + . . . . . # . . . . . + . . .| 10 B # 1 K10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> ]
Trace | Please key typing.
Kifuwarabe:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 20:57
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 22:22
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: K11
12 |. . . . . . . . . . . . . . . . . . .| 12 #2 O (White)
11>|. . . . . . . . .>O<. . . . . . . . .|<11
10 |. . . + . . . . . # . . . . . + . . .| 10 B # 1 K10
9 |. . . . . . . . . . . . . . . . . . .| 9
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> ]
Trace | Please key typing.
「 相手の受信を待っている間、こっちは何もできない☆
相手の受信を待たなければ、相手がいつ石を打ったのか 知ることもない☆」
Kifuwarabe:
pass
Trace | input=[pass]
Trace | write=>pass
Trace | Writed.
Trace | Please key typing.
Warabemoti:
pass
Trace | input=[pass]
Trace | write=>pass
Trace | Writed.
Trace | Please key typing.
Kifuwarabe:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 20:57
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 13:18
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: Pass
12 |. . . . . . . . . . . . . . . . . . .| 12 #3 # (Black)
11 |. . . . . . . . . O . . . . . . . . .| 11
10 |. . . + . . . . . # . . . . . + . . .| 10 W # 2 K11
9 |. . . . . . . . . . . . . . . . . . .| 9 B # 1 K10
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> You can check your score with the score command, type 'done' when finished.
Enter Dead Group:
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 20:52
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 13:18
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: Pass
12 |. . . . . . . . . . . . . . . . . . .| 12 #4 O (White)
11 |. . . . . . . . . O . . . . . . . . .| 11
10 |. . . + . . . . . # . . . . . + . . .| 10 B # 3 Pass
9 |. . . . . . . . . . . . . . . . . . .| 9 W # 2 K11
8]
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[ |. . . . . . . . . . . . . . . . . . .| 8 B # 1 K10
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
Enter Dead Group: ]
Trace | Please key typing.
Warabemoti:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 20:57
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 13:18
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: Pass
12 |. . . . . . . . . . . . . . . . . . .| 12 #3 # (Black)
11 |. . . . . . . . . O . . . . . . . . .| 11
10 |. . . + . . . . . # . . . . . + . . .| 10 W # 2 K11
9 |. . . . . . . . . . . . . . . . . . .| 9 B # 1 K10
8 |. . . . . . . . . . . . . . . . . . .| 8
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
#> You can check your score with the score command, type 'done' when finished.
Enter Dead Group:
Game 1 (I): warabemoti [ NR ] vs kifuwarabe [ NR ]
A B C D E F G H J K L M N O P Q R S T H-cap 0 Komi 6.5
19 |. . . . . . . . . . . . . . . . . . .| 19 Captured by #: 0
18 |. . . . . . . . . . . . . . . . . . .| 18 Captured by O: 0
17 |. . . . . . . . . . . . . . . . . . .| 17
16 |. . . + . . . . . + . . . . . + . . .| 16 Wh Time 20:52
15 |. . . . . . . . . . . . . . . . . . .| 15 Bl Time 13:18
14 |. . . . . . . . . . . . . . . . . . .| 14
13 |. . . . . . . . . . . . . . . . . . .| 13 Last Move: Pass
12 |. . . . . . . . . . . . . . . . . . .| 12 #4 O (White)
11 |. . . . . . . . . O . . . . . . . . .| 11
10 |. . . + . . . . . # . . . . . + . . .| 10 B # 3 Pass
9 |. . . . . . . . . . . . . . . . . . .| 9 W # 2 K11
8]
Trace | Please key typing.
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[ |. . . . . . . . . . . . . . . . . . .| 8 B # 1 K10
7 |. . . . . . . . . . . . . . . . . . .| 7
6 |. . . . . . . . . . . . . . . . . . .| 6
5 |. . . . . . . . . . . . . . . . . . .| 5
4 |. . . + . . . . . + . . . . . + . . .| 4
3 |. . . . . . . . . . . . . . . . . . .| 3
2 |. . . . . . . . . . . . . . . . . . .| 2
1 |. . . . . . . . . . . . . . . . . . .| 1
A B C D E F G H J K L M N O P Q R S T
Enter Dead Group: ]
Trace | Please key typing.
Kifuwarabe:
done
Trace | input=[done]
Trace | write=>done
Trace | Writed.
Trace | Please key typing.
Warabemoti:
done
Trace | input=[done]
Trace | write=>done
Trace | Writed.
Trace | Please key typing.
Kifuwarabe:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
Enter Dead Group:
{Game 1: warabemoti vs kifuwarabe :ended. W 6 B 0}Enter Dead Group: {Game 1: warabemoti vs kifuwarabe :ended. W 6 B 0}Enter Dead Group:
#> ]
Trace | Please key typing.
Warabemoti:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[Enter Dead Group:
{Game 1: warabemoti vs kifuwarabe :ended. W 6 B 0}Enter Dead Group: {Game 1: warabemoti vs kifuwarabe :ended. W 6 B 0}Enter Dead Group:
#>
#> ]
Trace | Please key typing.
admin:
r
Trace | input=[r]
Trace | Waiting for read.
Trace | read=[
22 warabemoti NR 0 1252 -1 T 6.5 0
22 kifuwarabe NR 0 798 -1 T 6.5 0
21 {Game 1: warabemoti vs kifuwarabe :ended. W 6 B 0}1 5
]
Trace | Please key typing.
「 ↑ done
(ダン)すると なんか盤面が2回流れてくるんだな☆」
// 最初はサーバーから `Login: ` のメッセージが飛んでくる。
show_message_from_server(&mut stream).await;
// プレイヤー名を送る。
write_message_to_server(
&mut stream,
match player_number {
1 => player1_name,
2 => player2_name,
_ => panic!("Error | playerNumber=>{}", e),
},
)
.await;
// マッチ・コマンドを送る。
write_message_to_server(
&mut stream,
format!(
"adminmatch {} {} {} {} {} {}",
player1_name,
player2_name,
first_color,
board_size,
time_minutes,
seconds_read
),
)
.await;
<書きかけ>
Crieitは個人で開発中です。
興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!