C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[22]: プログラムの意見交換はいかがですか [1]


(過去ログ 24 を表示中)

[トピック内 48 記事 (21 - 40 表示)]  << 0 | 1 | 2 >>

■10669 / inTopicNo.21)  Re[9]: プログラムの意見交換はいかがですか
  
□投稿者/ カンタービレ (90回)-(2007/11/23(Fri) 12:54:00)
【イメージ】□:ハッパ世界 ■:視野 ☆_.。oO=イモムシ

□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□□□□■■■■■■■□□□□□□□□
□□□□□■■■■■■■□□□□□□□□
□□□□□■■■■■■■□□□□□□□□
□□□□□■■■☆■■■□□□□□□□□
□□□□□■■■■■■■□□□□□□□□
□□□□□■■■■■■■□□□□□□□□
□□□□□■■■■■■■□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□

世界の終端は前後左右でつながっている感じデスね。

引用返信 編集キー/
■10670 / inTopicNo.22)  Re[9]: プログラムの意見交換はいかがですか
□投稿者/ れい (228回)-(2007/11/23(Fri) 13:18:27)
2007/11/23(Fri) 13:32:27 編集(投稿者)
No10667 (επιστημη さん) に返信
> 芋虫がこの世に生を受けたときの
> - どっち向いてるか
> - この世に境界があるならその境界と
>  芋虫の位置と
> をください。
> 
> directionが東西南北で定義されているならどっち向いてるかは要りません。
> # 立方体の芋虫がパタパタ転がってくよなイメージね。

GetNextDirectionの返り血は次に芋虫がどちらに移動するか、で定義します。
前、右、左です。
右に行った時、芋虫は右を向きます。
左に行った時、芋虫は左を向きます。
与えられる配列worldは芋虫の向きに応じて回転して渡されます。

世界には境界はありません。
無限に進めますが、ループしています。

ですので、芋虫の初期の方向と位置は考慮しなくていいことになります。
ランダムに与えられていると思ってください。

もうちょっときちんとインタフェースを考えてみました。

namespace WormWorld {

    public interface IWorm {
        string Name { get; }
        direction GetNextDirection( leafstate[] world );
    }

    public enum leafstate {
        worm = -1,
        leaf = 0,
        hole = 1
    }

    public enum direction {
        right = -1,
        forward = 0,
        left = 1
    }
}

ターン制で動きます。
毎ターン1回GetNextDirectionが呼ばれます。
動いた結果、他の芋虫がいたら、両方とも死にます。

配列は芋虫の現在向いてる方向を上とすると

00 01 02 03 04 05 06
07 08 09 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 32 33 34
35 36 37 38 39 40 41
42 43 44 45 46 47 48

という感じで与えられて、
world[0]が左前方、world[6]が右前方、
world[42]が左後方、world[48]が右後方になります。
world[24]は常にwormになります。

実際に競技をするときは、適当な密度でwormが配置されるようにします。
統計性を高めるため、同じアルゴリズムの虫を複数配置しようと思っています。

メモリの消費量は今のところ制限を考えていません。
リフレクションしたりディスアセンブルしたりして他人の情報を覗くのは禁止です:D
一定時間してもGetNextDirectionから帰らない場合はそのまま飢え死にです。

どうでしょう?
だいぶ簡単なルールではないかと。

引用返信 編集キー/
■10672 / inTopicNo.23)  Re[10]: プログラムの意見交換はいかがですか
□投稿者/ れい (229回)-(2007/11/23(Fri) 13:26:51)
No10670 (れい さん) に返信
> 実際に競技をするときは、適当な密度でwormが配置されるようにします。
> 統計性を高めるため、同じアルゴリズムの虫を複数配置しようと思っています。

自分と同じアルゴリズムの他の芋虫と通信はOKとしましょうか?
static変数を介したインスタンス間の通信です。

インスタンス間で通信して、
何匹かは兵隊用芋虫、何匹かは偵察用、何匹かは生き残る、
というようにするアルゴリズムもOKということで。
引用返信 編集キー/
■10673 / inTopicNo.24)  Re[11]: プログラムの意見交換はいかがですか
□投稿者/ Piz&Yumina (5回)-(2007/11/23(Fri) 16:40:57)
そう言えば、こんなのもありましたね。(やったこと無いですが)

http://www.atmarkit.co.jp/fdotnet/terrarium2/terrarium01/terrarium01_01.html
引用返信 編集キー/
■10675 / inTopicNo.25)  Re[12]: プログラムの意見交換はいかがですか
□投稿者/ れい (230回)-(2007/11/23(Fri) 17:04:23)
No10673 (Piz&Yumina さん) に返信
> そう言えば、こんなのもありましたね。(やったこと無いですが)
> http://www.atmarkit.co.jp/fdotnet/terrarium2/terrarium01/terrarium01_01.html

そうそう。やったこと無いですが、こういうのがみんなでできたらいいと思います。
でももっとパラメーターとかが恣意的でないもの、アルゴリズムを楽しめるものがいいかなと。


で、私考案の芋虫ゲーム、いまちょっと作ってみました。
環境を用意して、ランダムに進む芋虫君と、ぶつかったら曲がる芋虫君を作ってみたのですが。
アルゴリズムを書くのが結構大変です。
たかが7x7、他の虫を考えなければ2^48=6Byteの入力に対して3通りの出力を返すだけだと思ったんですが…。
場合分けがつらいです。

引用返信 編集キー/
■10678 / inTopicNo.26)  Re[13]: プログラムの意見交換はいかがですか
□投稿者/ 渋木宏明(ひどり) (562回)-(2007/11/23(Fri) 17:58:20)
渋木宏明(ひどり) さんの Web サイト
> で、私考案の芋虫ゲーム、いまちょっと作ってみました。

同じく。

http://hidori.jp/downloads/junktest/Worms-20071123.zip

サンプル芋虫のソースもついてます。(目の前が塞がれていたら、時計回りに次の方向を選択します)

2匹以上の芋虫を「追加」すると、ゲームが「開始」可能になります。

育成用に「中断」「再開」「ステップ実行」もつけておきました。

芋虫が全滅するか1匹だけ勝ち残るとゲーム終了です。

リストまたはマップ上で芋虫をダブルクリックすると、名前や位置の変更ができます。

また、芋虫をマップ上でドラッグして位置を調整することもできます。

引用返信 編集キー/
■10680 / inTopicNo.27)  Re[14]: プログラムの意見交換はいかがですか
□投稿者/ れい (231回)-(2007/11/23(Fri) 19:48:27)
No10678 (渋木宏明(ひどり) さん) に返信
>>で、私考案の芋虫ゲーム、いまちょっと作ってみました。
>
> 同じく。

おぉ。
グッドな感じです。
こういう感じでDLLだけで戦えると良いですね。
置いた時の向きは全部上向きになっちゃいますが仕様でしょうか?

>育成用に「中断」「再開」「ステップ実行」もつけておきました。

育成!!いい響きです。

公開する場所が無いんですが、
私が作ったのはもっと広大なフィールドで、
1000x1000にランダムに100匹ぐらい置いてます。

環境ができたということは後はエントリ待ちですか。
面白いといいんだけど。
引用返信 編集キー/
■10685 / inTopicNo.28)  Re[15]: プログラムの意見交換はいかがですか
□投稿者/ れい (233回)-(2007/11/23(Fri) 20:30:30)

Public Function GetNextDirection(ByVal sight() As LeafState) As Direction Implements IWorm.GetNextDirection
If sight(25) = LeafState.leaf Then Return Direction.right
If sight(17) = LeafState.leaf Then Return Direction.forward
Return Direction.left
End Function

よく巨大迷路とかでやる、「右手を離さない」方法は結構強いっぽい。

引用返信 編集キー/
■10687 / inTopicNo.29)  Re[15]: プログラムの意見交換はいかがですか
□投稿者/ 渋木宏明(ひどり) (564回)-(2007/11/23(Fri) 21:00:03)
渋木宏明(ひどり) さんの Web サイト
> こういう感じでDLLだけで戦えると良いですね。

ですね ;-)

> 置いた時の向きは全部上向きになっちゃいますが仕様でしょうか?

忘れてました (^^;

当初エビス様と同じ仕組みで考えていたので、その辺(=芋虫の向いてる方向とか)後付けなんです。

次のリリースに追加しておきます。

> 1000x1000にランダムに100匹ぐらい置いてます。

僕のも、内部的には1000x1000のマップにも耐える作りになっていますが、その規模になると芋虫のエントリのUIを入れ替えないと登録がつらいです (^^;

自動配置のロジック考えるのも面倒だったので、僕は「育成(=芋虫ロジック検討)」「対戦(=少数芋虫によるサバイバル)」をメインにした仮想世界を作っていこうと思います。

ちなみに、MainForm に載せているコードを分離(それほど難しくありません)すれば、エンジン部分も共通部品として使えるはずです。

# エンジン分離したら WPF 版作ろうかな?

> 環境ができたということは後はエントリ待ちですか。
> 面白いといいんだけど。

奮ってご参加くださいw>各位

引用返信 編集キー/
■10688 / inTopicNo.30)  Re[16]: プログラムの意見交換はいかがですか
□投稿者/ れい (234回)-(2007/11/23(Fri) 21:23:38)
2007/11/23(Fri) 21:32:02 編集(投稿者)
No10687 (渋木宏明(ひどり) さん) に返信
> 当初エビス様と同じ仕組みで考えていたので、その辺(=芋虫の向いてる方向とか)後付けなんです。

エビス様とはなんでしょう?
通天閣にいる奴というのは知ってますが。

>>1000x1000にランダムに100匹ぐらい置いてます。
> 
> 僕のも、内部的には1000x1000のマップにも耐える作りになっていますが、
> その規模になると芋虫のエントリのUIを入れ替えないと登録がつらいです (^^;
> 
> 自動配置のロジック考えるのも面倒だったので、僕は「育成(=芋虫ロジック検討)」
>「対戦(=少数芋虫によるサバイバル)」をメインにした仮想世界を作っていこうと思います。

はい。
育成は少しずつやるとなんか育成してる感じですし、
1対1の対戦も面白いと思います。

>>こういう感じでDLLだけで戦えると良いですね。
> ですね ;-)

で、インタフェースが同じなので、
同じインタフェースを実装してれば、
対戦でも10000匹サバイバルでも、おなじDLLで参加できるのはすばらしいと思うのですよ。
インタフェースの目的に適ってます。

> 次のリリースに追加しておきます。

で、私のもせっかく作ったんでまぁどっかで公開するかも知れないんですが、
微妙にインタフェースが違ってます。
できればあわせていただけるとラッパー作らなくていいのでうれしいです。

まず、方向の定義の定数と
ハッパの状態の定数が少し違います。
最初のは適当につけただけなので、ちょっと非合理でした。
自分は真ん中にいるという定義なので、wormの種類は必要ありませんでした。
また、方向は一般に左回りが+、右回り−がでした。
IWormは虫の名前を保持したいと思ってます。
GetNextDirectionの引数はworldではなくsightの方がいいと気づきました。

たぶん定数はこの方が後々楽になるかと思います。
虫の名前とか引数の名称は私の好みですが。
あわせていただけるとありがたいです。

namespace WormWorld {

    public interface IWorm {
        string Name { get; }
        Direction GetNextDirection( LeafState[] sight );
    }

    public enum LeafState {
        worm = -1,
        leaf = 0,
        hole = 1
    }

    public enum Direction {
        right = -1,
        forward = 0,
        left = 1
    }
}

ちなみに、インタフェース以外の中身は驚くほど違います。
コードを読み解くと同じ結果になるんですが。

#もちろん私のは手抜きで、ひどりさんのは手を抜いてないのです。

引用返信 編集キー/
■10694 / inTopicNo.31)  Re[17]: プログラムの意見交換はいかがですか
□投稿者/ 渋木宏明(ひどり) (565回)-(2007/11/23(Fri) 23:20:31)
渋木宏明(ひどり) さんの Web サイト
> エビス様とはなんでしょう?

επιστημηさんのハンドルが変換しにくいので、適度に略しました。

夕方ぐらいまで

>directionが東西南北で定義されているならどっち向いてるかは要りません。
># 立方体の芋虫がパタパタ転がってくよなイメージね。

という仕様で作ってたんです。この方がマップの切り出しとか楽だし>仮想世界

> できればあわせていただけるとラッパー作らなくていいのでうれしいです。

合わせるのは構いませんが、enum のメンバ名は Camel にしませんか?

一応 .NET 推奨なので。

> GetNextDirectionの引数はworldではなくsightの方がいいと気づきました。

そうですね。

引用返信 編集キー/
■10695 / inTopicNo.32)  Re[18]: プログラムの意見交換はいかがですか
□投稿者/ れい (236回)-(2007/11/23(Fri) 23:57:24)
2007/11/24(Sat) 00:00:20 編集(投稿者)
No10694 (渋木宏明(ひどり) さん) に返信
>>エビス様とはなんでしょう?
> επιστημηさんのハンドルが変換しにくいので、適度に略しました。
ほう。そう略すのですか。
福の神だったのですね。

> という仕様で作ってたんです。この方がマップの切り出しとか楽だし>仮想世界

昔いろいろ検討した結果です。
やはり、虫は自分の方位を知る術は持っていないだろうと、
自分の目で世界を見てるだろうということになり、
与える情報を回転させるべきだとなりました。

マップの切り出しはめんどくさいですが、
虫を実装する人は少し楽になるかな?

> 合わせるのは構いませんが、enum のメンバ名は Camel にしませんか?

そうでした。
じゃあこれで。

namespace WormWorld {

    public interface IWorm {
        string Name { get; }
        Direction GetNextDirection( LeafState[] sight );
    }

    public enum LeafState {
        Worm = -1,
        Leaf = 0,
        Hole = 1
    }

    public enum Direction {
        Right = -1,
        Forward = 0,
        Left = 1
    }

}

んー。
私のを上げるためにはアップローダー探さなくてはいけないなぁ。

引用返信 編集キー/
■10697 / inTopicNo.33)  Re[19]: プログラムの意見交換はいかがですか
□投稿者/ れい (237回)-(2007/11/24(Sat) 02:17:37)
No10695 (れい さん) に返信
> string Name { get; }

名前、やっぱり要らなかった:D
クラス名使えばいいんだった(自明

設計のスキルが無いのが露呈している…

namespace WormWorld {

public interface IWorm {
Direction GetNextDirection( LeafState[] sight );
}

public enum LeafState {
Worm = -1,
Leaf = 0,
Hole = 1
}

public enum Direction {
Right = -1,
Forward = 0,
Left = 1
}

}

#結局ひどりさんのそのまんまじゃないか…

引用返信 編集キー/
■10698 / inTopicNo.34)  Re[18]: プログラムの意見交換はいかがですか
□投稿者/ επιστημη (676回)-(2007/11/24(Sat) 03:43:44)
επιστημη さんの Web サイト
# "エビス"ぢゃないもん、"えぴ"だもん、濁っちゃヤだもんしくしく...

どーなんだろ、"プログラム"の意見交換のつもりが"アルゴリズム"の意見交換になりそな希ガス。
あ、実装てくにーくにまで追い込めばいいのか。

引用返信 編集キー/
■10699 / inTopicNo.35)  Re[20]: プログラムの意見交換はいかがですか
□投稿者/ 渋木宏明(ひどり) (566回)-(2007/11/24(Sat) 05:55:07)
渋木宏明(ひどり) さんの Web サイト
> 名前、やっぱり要らなかった:D
> クラス名使えばいいんだった(自明

クラス名(と配置する名前空間)は統一しておかないと、ロードの時に困りますよ。

IWorm.Name も、あればあったで使えます。
引用返信 編集キー/
■10700 / inTopicNo.36)  Re[19]: プログラムの意見交換はいかがですか
□投稿者/ れい (238回)-(2007/11/24(Sat) 06:02:23)
No10698 (επιστημη さん) に返信
> # "エビス"ぢゃないもん、"えぴ"だもん、濁っちゃヤだもんしくしく...

間違ったのかと思って穴が開くほど見ましたが、やっぱり「エビス様」でした。
濁らないとなると「エヒス様」になってしまいますが…。
1か0で言うとどっちがお好きでしょうか?
0.5とかいう玉虫色な回答はご遠慮くださいね。

> どーなんだろ、"プログラム"の意見交換のつもりが"アルゴリズム"の意見交換になりそな希ガス。
> あ、実装てくにーくにまで追い込めばいいのか。

メソッド一個のインタフェースで実装テクニックまで追い込むって激しいのでは。

#インタフェースを簡単にしたのは実装うんぬんを排除したかったからなのに…

実装までを切磋琢磨するなら
ソケット使ってサーバー・クライアントにしたほうが良かったかな?
それだとソケット実装の話はできるけども、
敷居が高くて10分20分程度の暇な時間で出来る遊びではなくなってしまいそうです。

暇な時間で出来る遊びでプログラムの技術というと、
掲示板で回答するのがちょうどそんな感じでいいですね。
いつもと変わりませんが。
引用返信 編集キー/
■10701 / inTopicNo.37)  Re[20]: プログラムの意見交換はいかがですか
□投稿者/ ぽぴ王子 (295回)-(2007/11/24(Sat) 07:42:37)
ぽぴ王子 さんの Web サイト
No10700 (れい さん) に返信

> 間違ったのかと思って穴が開くほど見ましたが、やっぱり「エビス様」でした。
> 濁らないとなると「エヒス様」になってしまいますが…。
> 1か0で言うとどっちがお好きでしょうか?
> 0.5とかいう玉虫色な回答はご遠慮くださいね。

επιστημηさんの正式な読み方は「えひ゜すてーめー」なので
「えひ゛す」様でもなく「えひす」様でもないような気がするんです。
濁らない(濁音ではない)という意味では濁らないのだけど、半濁音
という意味では「0.5という玉虫色な回答」にしかならないんじゃないかと。
見間違い、覚え間違いというのは仕方がないとしても、やはり固有名詞は
なるべく間違えないようにするべきと思うので。

僕も「ほ゛ひ゛王子」とか言われたらあんまりいい気はしないです。
(濁点と半濁点は判別しにくいので、そう読む気持ちもわかりますけど)

> どーなんだろ、"プログラム"の意見交換のつもりが"アルゴリズム"の意見交換になりそな希ガス。
> あ、実装てくにーくにまで追い込めばいいのか。

スレ主がどういう考えでスレを立ち上げたのかがよくわからないので
ずっと静観させてもらってました。
今の流れはおもしろいと思うけれど、むしろそれ専用スレを立ち上げて
みるといいんじゃないかと思ったりしています。
意見交換というよりは「こんなインターフェースで遊べたら面白い」
スレみたいな。

でもって、未だに僕にはスレ主が何をしたいのか見えてこないので
またちょっと静観させていただこうかと。
スレ主降臨待ち(降臨するかどうかは不明)ですね。
引用返信 編集キー/
■10702 / inTopicNo.38)  Re[19]: プログラムの意見交換はいかがですか
□投稿者/ 渋木宏明(ひどり) (567回)-(2007/11/24(Sat) 08:28:28)
渋木宏明(ひどり) さんの Web サイト
> # "エビス"ぢゃないもん、"えぴ"だもん、濁っちゃヤだもんしくしく...

ごめんなさい (^^;

「恵比寿亭茗茶楼」とあるので「エビス」も可と思ってました。


引用返信 編集キー/
■10703 / inTopicNo.39)  Re[19]: プログラムの意見交換はいかがですか
□投稿者/ 渋木宏明(ひどり) (568回)-(2007/11/24(Sat) 08:36:41)
渋木宏明(ひどり) さんの Web サイト
> どーなんだろ、"プログラム"の意見交換のつもりが"アルゴリズム"の意見交換になりそな希ガス。
> あ、実装てくにーくにまで追い込めばいいのか。

仮想世界=フレームワーク側にはいくつか題材になりそうなものが転がってますけどね。

バグ修正兼ねて少し分割を進めましたが、現状で総合40点くらいかなぁ。

細かいところでは、sight の切り出しを、面倒なんで「北向き」で切り出したものを芋虫の向きで場合分けして回転しているのが気になっています。
こんなんはもっと高速で汎用的なものもできるはず。

引用返信 編集キー/
■10704 / inTopicNo.40)  Re[20]: プログラムの意見交換はいかがですか
 
□投稿者/ 渋木宏明(ひどり) (569回)-(2007/11/24(Sat) 09:05:16)
渋木宏明(ひどり) さんの Web サイト
> バグ修正兼ねて少し分割を進めましたが、現状で総合40点くらいかなぁ。

こんな感じ。
http://hidori.jp/downloads/junktest/WormWorld-20071124.zip

芋虫の引き回しに結構バグがあったけど直しました。

引用返信 編集キー/

<前の20件 | 次の20件>
トピック内ページ移動 / << 0 | 1 | 2 >>

管理者用

- Child Tree -