気ままな一言
2009年02月18日
オセロみたいな物を作ってみた
日曜日に1日かけてオセロ……もといリバーシを作ってみました。

ふとした気紛れです。
ある程度できたところで動かしてみたところ、
まあそれなりに動いてくれました、2P対戦の場合は。
(1度だけですが、最後まで対戦しました)
コンピューターとの対戦は全然ダメです。
とにかく処理が遅いのです。
コンピューター同士の対戦なんてさせたら、いつ終わるの?って感じです。
なんかそんな気はしていました。
これは PC 版を先に作ってから移植しています。
C++ で作ったものを LSL に作り変えてあります。
LSL にはポインタも参照も無いので、配列を扱うとコピーが発生してしまいます。
まあそもそも配列が存在しないのですが。
一応 list があるので、配列の代用として使用できます。
int 配列であれば、具体的にはこんな感じになります。
無駄がとても多い処理です。
また、関数の引数として渡す場合もすべて値渡しになります。
値渡しなので list のコピーが発生します。
関数で処理をしたら結果を返してもらわないといけません。
もちろん戻り値として返すことになります。
やはりここでも list のコピーが発生します。
そんな処理がたくさんありました。
手の先読み処理では関数を再帰呼び出ししているので、
何度も何度も list のコピーが行われます。
盤面(list)へアクセスしまくっているので、もうコピーしまくりです。
なので原因は(調べていませんが)list のコピーのような気がします。
とりあえず、関数の引数へは list を渡さないように直しました。
少し変わった気がします。
代入の方は別の方法に変えますか……。
別に list 使わずにもできますし
先読み量減らすと、ちょっと弱すぎでした。
定石入れて、、も処理が速くなるとは限りませんね。。
アルゴリズム最適化しますか?
地味な高速化手法でも取り入れますか?
そうですね、また今度にします。

ふとした気紛れです。
ある程度できたところで動かしてみたところ、
まあそれなりに動いてくれました、2P対戦の場合は。
(1度だけですが、最後まで対戦しました)
コンピューターとの対戦は全然ダメです。
とにかく処理が遅いのです。
コンピューター同士の対戦なんてさせたら、いつ終わるの?って感じです。
なんかそんな気はしていました。
これは PC 版を先に作ってから移植しています。
C++ で作ったものを LSL に作り変えてあります。
LSL にはポインタも参照も無いので、配列を扱うとコピーが発生してしまいます。
まあそもそも配列が存在しないのですが。
一応 list があるので、配列の代用として使用できます。
int 配列であれば、具体的にはこんな感じになります。
arr = llListReplaceList(arr, [ 5 ], 0, 0); // arr[0] = 5; n = llList2Integer(arr, 0); // n = arr[0];もちろんこれは代入ではなく、新しいlistを作成することになるので
無駄がとても多い処理です。
また、関数の引数として渡す場合もすべて値渡しになります。
値渡しなので list のコピーが発生します。
関数で処理をしたら結果を返してもらわないといけません。
もちろん戻り値として返すことになります。
やはりここでも list のコピーが発生します。
そんな処理がたくさんありました。
手の先読み処理では関数を再帰呼び出ししているので、
何度も何度も list のコピーが行われます。
盤面(list)へアクセスしまくっているので、もうコピーしまくりです。
なので原因は(調べていませんが)list のコピーのような気がします。
とりあえず、関数の引数へは list を渡さないように直しました。
少し変わった気がします。
代入の方は別の方法に変えますか……。
別に list 使わずにもできますし
先読み量減らすと、ちょっと弱すぎでした。
定石入れて、、も処理が速くなるとは限りませんね。。
アルゴリズム最適化しますか?
地味な高速化手法でも取り入れますか?
そうですね、また今度にします。
Posted by れむ at 23:38
│スクリプト
コメントありがとう♪
ゲームセンターレムは
いつ頃のオープンになるんでしょうか?w
いつ頃のオープンになるんでしょうか?w
Posted by 某 ト○ロ団長
at 2009年02月28日 02:19

何をおっしゃるト○ロさん
そりゃあゲームが完成したらですよ
(作る気無いけど……)
そりゃあゲームが完成したらですよ
(作る気無いけど……)
Posted by れむ
at 2009年02月28日 13:20
