ソラマメ ブログ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 4人
オーナーへメッセージ
QRコード
QRCODE

気ままな一言

ご質問等、ページへのリンクはご自由に。気軽にコメントでもどうそ~
詳しいことは角川SIMのサポートセンターまでいらっしゃいませっ

世間知らずなので逆にいろいろ教えてください♪

2009年02月18日

オセロみたいな物を作ってみた

日曜日に1日かけてオセロ……もといリバーシを作ってみました。

Reversi

ふとした気紛れです。

ある程度できたところで動かしてみたところ、
まあそれなりに動いてくれました、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 使わずにもできますし

先読み量減らすと、ちょっと弱すぎでした。
定石入れて、、も処理が速くなるとは限りませんね。。

アルゴリズム最適化しますか?
地味な高速化手法でも取り入れますか?


そうですね、また今度にします。


同じカテゴリー(スクリプト)の記事画像
パーティクルが出たり、出なかったり、らじばんだり
実行中のチェック勝手に外れる
スタックオーバー?
同じカテゴリー(スクリプト)の記事
 パーティクルが出たり、出なかったり、らじばんだり (2008-08-11 22:33)
 実行中のチェック勝手に外れる (2008-06-12 14:00)
 rezに失敗する~; ; (2008-06-06 02:18)
 Tips修正。。 (2008-05-26 23:50)
 LSLでプリプロセッサ (2008-05-18 14:18)
 llMessageLinkedの速度 (2008-05-15 03:14)
Posted by れむ at 23:38 │スクリプト
コメントありがとう♪
ゲームセンターレムは
いつ頃のオープンになるんでしょうか?w
Posted by 某 ト○ロ団長某 ト○ロ団長 at 2009年02月28日 02:19
何をおっしゃるト○ロさん
そりゃあゲームが完成したらですよ
(作る気無いけど……)
Posted by れむれむ at 2009年02月28日 13:20