isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

Rust / Wasm でオセロ盤を作った。

Othello

 

オセロAIはまだ作れていない。

ただの石が自動でひっくり返る板。

 

Rustの使い心地

C++を書いている時に脳内で考えていたことが簡単な記号で言語化できるから嬉しい

GCのある言語しか使ったことない人にはちょっと敷居が高いかも

 

楽しかったところ

オセロの盤面を配列ではなくてintで表すようにしたこと。

オセロの盤面は64ますで、空・白・黒の3通りだから全部で 3の64乗通りである。これはRustのu128で表現可能である。

僕はu128の上に3進数を構築した。

これでスタックとかヒープとか気にしなくてよくなる。

 

ありがたかったこと

wasm-bindgenは最高である。

buildすると自動でd.tsを吐き出してくれるため、TypeScriptからasync import一発でライブラリを読み込める。型補完もバッチリ。

また、生WasmだとちょっとめんどくさいはずのArrayBufferのやりとりも抽象化されている。多分、wasm-bindgenなしなら自力でLenとOffsetをとってポインタを渡してあれこれしないといけないはずだ。

しかし、この通りの簡単な関数呼び出しで配列をやりとりできる。

github.com