おひさしぶりです
今回は、コンピュータに思考をもたせたい場合
現在分かっているプログラム方法はどんなものがあるのかを聞きたいです
思考させるといっても、ピンからキリまでありますが だいたい
1.単純なシューティングの敵にでてくる画面の上から出てきて画面中央まできて、また画面の上に消える
2.プレイヤーをめがけて、突進してくる思考
3.カードゲームなどのような、一定の手順には一定の手順で返すといった思考
4.将棋のような、一定の状況において、解をプログラムで出す思考
5.それ以上の思考
と分類したとき、1,2は分かるのですが3以上が、どのような考え方をもとに作られているのかが
わからないので、参考になるサイトなどあると紹介してもらえると助かります
コンピュータの思考ルーチン
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: コンピュータの思考ルーチン
色々ご紹介しますので、自分の必要なものを検討してみてください。
思考ルーチンと言っても、単にパターンの判定からニューラルネットワークやら遺伝的アルゴリズムやらまで取り上げる高度なものまで色々と存在します。
「シミュレーションゲーム作成工房 より強力な思考ルーチンを求めて」
http://www.jyouhoukaiseki.com/
「ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室」
http://d.hatena.ne.jp/seikenn/20090627/1246028707
「パズル問題解法のアルゴリズム」
http://www.ic-net.or.jp/home/takaken/pz/index.html
「地球にやさしいアルゴリズム---目次 - 地球にやさしいアルゴリズム:ITpro」
http://itpro.nikkeibp.co.jp/article/COL ... ST=develop
以下書籍
「Amazon.co.jp: ゲームのアルゴリズム 改訂版 思考ルーチンと物理シミュレーション: 橋口 ゆうすけ: 本」
「Amazon.co.jp: ゲーム開発者のためのAI入門: David M. Bourg, Glenn Seemann, 株式会社クイープ: 本」
「Amazon.co.jp: 実例で学ぶゲームAIプログラミング: Mat Buckland, 松田 晃一: 本」
「Amazon.co.jp: コンピュータゲームのアルゴリズム&ネットワーキング: Jouni Smed/Harri Hakonen, 加藤 諒, 中本 浩: 本」
思考ルーチンと言っても、単にパターンの判定からニューラルネットワークやら遺伝的アルゴリズムやらまで取り上げる高度なものまで色々と存在します。
「シミュレーションゲーム作成工房 より強力な思考ルーチンを求めて」
http://www.jyouhoukaiseki.com/
「ジャンル別ゲームの作り方とアルゴリズムまとめ - ネットサービス研究室」
http://d.hatena.ne.jp/seikenn/20090627/1246028707
「パズル問題解法のアルゴリズム」
http://www.ic-net.or.jp/home/takaken/pz/index.html
「地球にやさしいアルゴリズム---目次 - 地球にやさしいアルゴリズム:ITpro」
http://itpro.nikkeibp.co.jp/article/COL ... ST=develop
以下書籍
「Amazon.co.jp: ゲームのアルゴリズム 改訂版 思考ルーチンと物理シミュレーション: 橋口 ゆうすけ: 本」
「Amazon.co.jp: ゲーム開発者のためのAI入門: David M. Bourg, Glenn Seemann, 株式会社クイープ: 本」
「Amazon.co.jp: 実例で学ぶゲームAIプログラミング: Mat Buckland, 松田 晃一: 本」
「Amazon.co.jp: コンピュータゲームのアルゴリズム&ネットワーキング: Jouni Smed/Harri Hakonen, 加藤 諒, 中本 浩: 本」
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: コンピュータの思考ルーチン
3.カードゲームなどのような、一定の手順には一定の手順で返すといった思考
石取りゲームのサンルです
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m, x, r, my_turn;
printf("最後に石を取った側が負けです. パスはできません.\n");
printf("石の数? "); scanf("%d", &n);
printf("1回に取れる最大の石の数? "); scanf("%d", &m);
if (n < 1 || m < 1) return EXIT_FAILURE;
for (my_turn = 1; n != 0; my_turn ^= 1) {
if (my_turn) {
x = (n - 1) % (m + 1); if (x == 0) x = 1;
printf("私は %d 個の石を取ります.\n", x);
} else do {
printf("何個取りますか? ");
r = scanf("%d", &x); scanf("%*[^\n]");
} while (r != 1 || x <= 0 || x > m || x > n);
n -= x; printf("残りは %d 個です.\n", n);
}
if (my_turn) printf("あなたの負けです!\n");
else printf("私の負けです!\n");
return EXIT_SUCCESS;
}
石取りゲームのサンルです
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m, x, r, my_turn;
printf("最後に石を取った側が負けです. パスはできません.\n");
printf("石の数? "); scanf("%d", &n);
printf("1回に取れる最大の石の数? "); scanf("%d", &m);
if (n < 1 || m < 1) return EXIT_FAILURE;
for (my_turn = 1; n != 0; my_turn ^= 1) {
if (my_turn) {
x = (n - 1) % (m + 1); if (x == 0) x = 1;
printf("私は %d 個の石を取ります.\n", x);
} else do {
printf("何個取りますか? ");
r = scanf("%d", &x); scanf("%*[^\n]");
} while (r != 1 || x <= 0 || x > m || x > n);
n -= x; printf("残りは %d 個です.\n", n);
}
if (my_turn) printf("あなたの負けです!\n");
else printf("私の負けです!\n");
return EXIT_SUCCESS;
}
Re: コンピュータの思考ルーチン
>>softyaさん
ありがとうございます 参考にさせてもらいます
>>伊集院電一郎さん
ソースコードをいただいたのですが
私の脳では・・・わかりませんでした
オープンソースなどの文化ではソースコードがオープンになってますが
それを読むというより、理解するには前提となる知識がいるのかなと
まず、理屈を理解してからソースを読むのが私には向いているようです
なにはともあれありがとうございました
ありがとうございます 参考にさせてもらいます
>>伊集院電一郎さん
ソースコードをいただいたのですが
私の脳では・・・わかりませんでした
オープンソースなどの文化ではソースコードがオープンになってますが
それを読むというより、理解するには前提となる知識がいるのかなと
まず、理屈を理解してからソースを読むのが私には向いているようです
なにはともあれありがとうございました