ふりーむ!BBS(閉鎖)
TOP > 過去ログ > 記事閲覧
掲示板一覧:[4 ゲーム開発・創作仲間募集(依頼先を探している方一覧)] [5 ゲーム・創作のお仕事募集(依頼を請け負っている方一覧)] (閉鎖:[1 初心者・質問] [2 ゲーム攻略] [3 ゲーム開発・創作の話題])

便利リンク1:[ふりーむ] [ゲーム制作ツール集(素材リンク集)] [素材ライブラリ]
便利リンク2:[イラスト投稿(サンプルやポートフォリオ用に)] [ふりーむプレミアムサービス(外部広告の削減を目指して取り組んでいます)]
下記掲示板は投稿の受付を終了しました(投稿できません)。一定期間後に公開も終了されます。2005年からご愛用頂きありがとうございました。なお、上記掲示板一覧の「4」「5」は現段階では「様子見」でしばらく投稿可能です。
fld_nor.gif アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/06 05:04
投稿者 通りすがる
最近素材くれ~とか、そう言う系の話題が多いので、ちょっと変り種です。
アルゴリズムとデータ構造を勉強しようってなことで、
みんなでゲームのお題を出し合って、そのコードを載せていきましょう。
最初は
二人対戦型じゃんけんゲームです。
最低限必要な機能は、
・ユーザVSコンピュータ
・ユーザから手を入力
・コンピュータと勝負
・ユーザがやめることを明示するまで何度でも続けられる
です。スコア記録機能や人間VS人間機能など、追加機能は歓迎です。
また、開発言語やGUIであるCUIであるなど細かいところは問いません。
作品が上がるごとに、みんなで改善点を指摘していきましょう。
だいたい6~10作品程度が出揃うか、このお題に飽きた時点で次のお題を発表してくれるとうれしいです。>誰か
それじゃあ、自分もそのうちコードもってきますんで、みなさんヨロシク。

※上がってくるコードは断りが無い限りパブリックドメインな方向で。
 ソレが嫌な人は一言付け加えてくださいな。
編集 編集
12>
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/24 21:10
投稿者 トクサ
テストありがとうございました。
それなりに効果があったようですね。
でも、1件だけではまだデータが足りないですね・・・。
しかし、リバイバさんも、スレ主も音沙汰なしなので、これ以上続けても無意味でしょうかね。
結局、本気で勉強しようと言う人は、居なかったようです・・・。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/19 12:45
投稿者 チミン
10戦してみました。
31勝45敗31あいこで、勝率40.789%でした。
結構負けてしまった・・・。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/18 18:32
投稿者 トクサ
なんか、止まってしまいましたね。
とりあえず気が向いたので、サンプルをツクールXPで作ってみました。

http://tokusa9.hp.infoseek.co.jp/JF001.exe

暇がある方は、アルゴリズムが有効か(コンピュータの勝率を上げられるか)、ということをテストして結果を書き込んでください。
A子と何度か対戦し、木陰の老人に、詳細なデータを見せてもらってください。
プレイヤーの勝率が50%を超えているようでは駄目ですね。
50%以下になれば、一応効果があると言えますが、2-3%は誤差の範囲内ですから、まあ45%以下なら有効と判断していいかなと思います。
もちろん対戦数が多いほど、データは正確になります。5回以上はするといいでしょうね。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/14 20:35
投稿者 トクサ
なぜと言われても、特に理由は無いですが。
しいて言うなら、気が向かないから、でしょうか・・・。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/13 20:28
投稿者 リバイバ
トクサさんへ
アルゴリズムは今あるので完成です。
AIを作るのは難しいので、やめました。
後はコードを修正すれば完成ですが、現時点でも問題がないことはないんですけど、他のゲームも制作しているので後回しになりそうです。

>とりあえず参加するつもりはありません。
とのことですが、なぜでしょうか?
アルゴリズムとデータ構造はもう完璧。と言う場合なら、他の人にも教えれ、大変皆さんが助かります。
アルゴリズムとデータ構造はまだちょっと・・・。と言う場合ならこのスレッドで勉強できます。
参加しない理由が分からないので、教えてもらえないでしょうか?
時間的に無理!と言う事なら、仕方がないですけれど。

>他の公開方法
私もそれを考えています。
サーバをとってもいいと思うのですが、通りすがるさんがどう思っているか、ですね。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/13 15:45
投稿者 トクサ
続けるんですね。次のお題と書いてあったので、やめるのかと思いました。
ちなみに、私が発表したほうがいいと言ったのは、完成したアルゴリズムです。まだ、未完成だとおっしゃっていたので。
でも、続けるなら、実際に多くのプレイヤーに対して勝率を上げられるアルゴリズムを、今後発表されると言うことですね。

>トクサさんは、すごい技術をお持ちのようですので、是非トクサさんのコードも見て見たいです(アルゴリズムも)。
お暇があれば是非載せて見て下さい。
私はとりあえず参加するつもりはありません。

それから、さすがに掲示板にアップするには、コード長すぎますね。
他の公開方法を考えたほうがいいかも・・・。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/13 15:03
投稿者 リバイバ
トクサさんへ
アルゴリズムは公開したと思いますが・・・。
コードは発表していませんでしたね。
すみません。

今から公開するコードはまだ未完成です(長くなるかも)。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using Microsoft.DirectX;
using Microsoft.DirectX.AudioVideoPlayback;
using Microsoft.DirectX.Direct3D;
using Microsoft.DirectX.DirectInput;
using System.Text.RegularExpressions;

namespace zyanken1
{
/// <summary>
/// game の概要の説明です。
/// </summary>
public class game
{
//フォント
Microsoft.DirectX.Direct3D.Font font_tolk = null;
//フォント初期化
bool font_syokika = false;
//キーLeftのフラグ
bool fPushKeyLeft = false;
//キーRightのフラグ
bool fPushKeyRight = false;
//キースペースのフラグ
bool fPushKeySpace = false;
/*キーが押されたかどうかを判定するフラグ
* 0なら押されていない
* 1なら押されている*/
//int menu.g_pause = 0;

//ジャンケン判定
/*グーは0、チョキは1、パーは2*/
int zyanken = 0;
double zyanken_teki = 0;
//こちら側の手を記録
double[] zyanken_teki_kiroku = new double[3];
//こちら側の直前の手を記憶
int kioku_tyokuzen = 0;
int i = 0;
string mozi = "グー";
//結果を表示しているかどうか
bool kekka_hyozi = false;
//判定
int hantei = 0;
//記憶を記録
int kioku = 0;

public void game_main()
{
if(Form1.menu1.game_ikou == true)
{
if(font_syokika == false)
{
this.syokika();
font_syokika = true;
}
this.game_byoga();
this.kekka();
//キーボードのデータ直接取得
Form1.form1.mKeyState = Form1.form1.mDevKey.GetCurrentKeyboardState();
//キー動作
if(menu.g_pause == 0)
{
this.key();
}
this.key_old();
}
}

private void kekka()
{
if(kekka_hyozi == true)
{
//文字描画
font_tolk.DrawText(Form1.form1.sprite_font,mozi, new Point(100,100),Color.FromArgb(255,255,255));
//グー=0 チョキ=1 パー=2
if(kioku < 10)
{
Random ransu = new Random();
zyanken_teki = ransu.Next(3);// 0~2の乱数を発生
if(zyanken_teki == 0)
{
//グーカウント
zyanken_teki_kiroku[0] = zyanken_teki;
}
else if(zyanken_teki == 1)
{
//チョキカウント
zyanken_teki_kiroku[1] = zyanken_teki;
}
else if(zyanken_teki == 2)
{
//パーカウント
zyanken_teki_kiroku[2] = zyanken_teki;
}
i++;//更新
}
else
{

}
hantei = zyanken - (int)zyanken_teki;

//相手の手を表示
if(zyanken_teki == 0)
{
mozi = "相手はグー!";
}
else if(zyanken_teki == 1)
{
mozi = "相手はチョキ!";
}
else if(zyanken_teki == 2)
{
mozi = "相手はパー!";
}
//結果を表示
if(hantei == -2 || hantei == 1)
{
mozi += "負け!";
}
else if(hantei == -1 || hantei == 2)
{
mozi += "勝ち!";
}
else
{
mozi += "あいこ!";
}
//記憶を作る
kioku_tyokuzen = zyanken;
kekka_hyozi = false;
}
}

private void game_byoga()
{
//文字描画
font_tolk.DrawText(Form1.form1.sprite_font,mozi, new Point(100,100),Color.FromArgb(255,255,255));
//タイトル選択画像描画
Form1.form1.sprite.Draw2D(Form1.gazo1.texture_sentaku,Form1.gazo1.sourceRect_sentaku, Form1.gazo1.sourceRect_sentaku,
Form1.gazo1.rotationCenter, Form1.gazo1.rotationAngle, Form1.gazo1.drawPosition_sentaku, Color.FromArgb(255,255,255,255));
//グー画像描画
Form1.form1.sprite.Draw2D(Form1.gazo1.texture_zyanken,Form1.gazo1.sourceRect_zyanken_gu, Form1.gazo1.sourceRect_zyanken_gu,
Form1.gazo1.rotationCenter, Form1.gazo1.rotationAngle, Form1.gazo1.drawPosition_zyanken_gu, Color.FromArgb(255,255,255,255));
//パー画像描画
Form1.form1.sprite.Draw2D(Form1.gazo1.texture_zyanken,Form1.gazo1.sourceRect_zyanken_pa, Form1.gazo1.sourceRect_zyanken_pa,
Form1.gazo1.rotationCenter, Form1.gazo1.rotationAngle, Form1.gazo1.drawPosition_zyanken_pa, Color.FromArgb(255,255,255,255));
//チョキ選択画像描画
Form1.form1.sprite.Draw2D(Form1.gazo1.texture_zyanken,Form1.gazo1.sourceRect_zyanken_tyo, Form1.gazo1.sourceRect_zyanken_tyo,
Form1.gazo1.rotationCenter, Form1.gazo1.rotationAngle, Form1.gazo1.drawPosition_zyanken_tyo, Color.FromArgb(255,255,255,255));
}

private void key()
{
if(kekka_hyozi == false)
{
//→ボタン
if(Form1.form1.mKeyState[Key.Right])
{
if(zyanken == 0)
{
//選択画像描画位置
Form1.gazo1.drawPosition_sentaku = new Point(228, 216); // 描画位置
zyanken = 1;
mozi = "チョキ";
}
else if(zyanken == 1)
{
//選択画像描画位置
Form1.gazo1.drawPosition_sentaku = new Point(356, 216); // 描画位置
zyanken = 2;
mozi = "パー";
}
}
//←ボタン
if(Form1.form1.mKeyState[Key.Left])
{
if(zyanken == 2)
{
//選択画像描画位置
Form1.gazo1.drawPosition_sentaku = new Point(228, 216); // 描画位置
zyanken = 1;
mozi = "チョキ";
}
else if(zyanken == 1)
{
//選択画像描画位置
Form1.gazo1.drawPosition_sentaku = new Point(100, 216); // 描画位置
zyanken = 0;
mozi = "グー";
}
}
//スペースボタン
if(Form1.form1.mKeyState[Key.Space])
{
kioku++;
kekka_hyozi = true;
}
}
}

private void key_old()
{
//→ボタン
if(Form1.form1.mKeyState[Key.Right])
{
menu.g_pause = 1;
fPushKeyRight = true;
}
else
{
if (fPushKeyRight)
{
// Key Right が離されたよ。
menu.g_pause = 0;
fPushKeyRight = false;
}
}
//←ボタン
if( Form1.form1.mKeyState[Key.Left])
{
menu.g_pause = 1;
fPushKeyLeft = true;
}
else
{
if (fPushKeyLeft)
{
// Key Left が離されたよ。
menu.g_pause = 0;
fPushKeyLeft = false;
}
}
//スペースボタン
if( Form1.form1.mKeyState[Key.Space])
{
menu.g_pause = 1;
fPushKeySpace = true;
}
else
{
if (fPushKeySpace)
{
// Key Space が離されたよ。
menu.g_pause = 0;
fPushKeySpace = false;
}
}
}
private void syokika()
{
//会話するフォントの初期化
font_tolk = new Microsoft.DirectX.Direct3D.Font(Form1.form1.device_3d, new System.Drawing.Font("MS ゴシック",14));
}
}
}

上記のコードだけでは動きませんが、アルゴリズムを見るだけなら問題ないと思います。
Form1.form1.と言うのは、Form1と言うクラスの中に書かれているのを参照しています。
他にも、書かれていない変数(Form1.form1.は変数じゃないですけど)が使用されている場合はアルゴリズムとは関係がないので、無視して下さい。
ですが、まだ完全には書いていない(10回じゃんけんしたらバグります)ので、動作は保障しません。

アルゴリズムを考えたのですが、コードにできていない状態と言うわけです(アルゴリズムは>>9参照)。
>今回の作成は遠慮させていただきます
と、言う事ですが五回...の作成を遠慮するということです。
文が足りませんでしたね。申し訳ありません。

トクサさんは、すごい技術をお持ちのようですので、是非トクサさんのコードも見て見たいです(アルゴリズムも)。
お暇があれば是非載せて見て下さい。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/13 12:08
投稿者 トクサ
次のお題って、まだ何もしてないじゃないですか・・・。
リバイバさんは、「こんな感じのものを作った」と言っただけで、まだコードもアルゴリズムも発表してないですよ。
「ユーザーがやめる」という条件でも基本は一緒なんですから、せめてランダムに手を出すよりは有効と思われるアルゴリズムを発表すべきかと。
引き続き、「ユーザーがやめる」条件で作ってもいいわけですし、もちろん5回勝負に変更することだって別に難しいことではないですし、実際にプログラムを書かなくたって、アルゴリズムを考えるだけでもいいでしょうし、なぜ「今回の作成は遠慮させていただきます」ということになるのでしょうか・・・?
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/13 08:32
投稿者 リバイバ
>格ゲーの対戦一回と、ジャンケン一回を同じように考えられるか?
考えれるんですが・・・。いいたい事はばっちり分かりました。
格ゲー一回=ジャンケン5回先勝ち
と、いうわけでしょうか?
とりあえずは、ユーザーがやめる...を、どちらかが先に五連勝したら1ゲーム終了。
と言う形でいいでしょうか?

私は、既にユーザーがやめる...で作ってしまったので、今回の作成は遠慮させていただきます。
みなさん頑張って下さい。
私は次のお題(?)を待ってます。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/12 23:52
投稿者 トクサ
>格ゲーとどこが違うのでしょうか?
もちろん、そういう考え方をすれば、格ゲーも同じですよ。しかし、格ゲーの対戦一回と、ジャンケン一回を同じように考えられるか? ということです。
そもそも、ジャンケン一回をひとつの勝負と考えるなら、ジャンケンを一回しただけで勝敗が決してしまいます。そんなものに戦略や戦術があるでしょうか?
少なくとも、何回かのジャンケンをセットにしてひとつの勝負にしないと、戦略も生まれませんし、アルゴリズムを考える意味もないでしょう。

それに、より勝率を上げられるアルゴリズムを考えようというなら、まずルールを決めて、何をもって勝ちとするか決めないといけません。
しかし、「ユーザがやめることを明示するまで何度でも続けられる」という形では、どこで勝負が区切られるか分かりませんから、勝ち負けも決められません。
あるいは、プレイヤーが終了した時点での勝率をもって勝敗を決めると言うなら、プレイヤーの都合のいいところで終えられるわけで、フェアではありません。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/12 23:10
投稿者 リバイバ
トクサさんへ
勝率のことですけど、やっぱり意味が少しわかりません。
格ゲーでも3回対戦をして、プレイヤーの2勝1敗だったとします。
この時点でのプレイヤーの勝率は、66.66・・%ですが、もう1回対戦をして、コンピュータが勝てば、勝率は50%になります。もう1回対戦をして、コンピュータが勝てば、勝率は33.33・・%になります。
ともできるわけです。
格ゲーとどこが違うのでしょうか?
良く意味がわかりません。すみません。

もしかしたら(というかこれ?)、勝ち、負けをきちんと決め手やるゲームなのでしょうか?(いい方可笑しいかな?)
別に勝ち負けを決める必要はないので、ユーザがやめることを明示するまで何度でも続けられると書いたのだと思ったのでしたが・・・(総合的な勝ち負けは判定せず、その場その場の勝ち負けは判定してます)。

改めてトクサさんの言うルール(先に五勝した方が勝ち)を見てみたのですが、とても面白そうです。
永遠に続けるのでは飽きる。だから5回先に勝った方が勝ち。
確かにこれならゲームとしては面白そうです。
ですが、アルゴリズムとデータ構造を勉強すると言う観点からはどうでしょうか?
私は問題ないと思いますが、皆さんはどうでしょうか?
ご意見待ってます。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/12 21:14
投稿者 トクサ
>それから勝率は、ジャンケンの回数によっても変わります。
>これはじゃんけんでなくても同じではないでしょうか?
>格ゲーなどでも、勝率があり(ないのもありますけど)ますよね。
>対戦していけば自然と勝率は変わります。
>少し意味が分かりかねますので、説明してくれませんか?

格ゲーの勝率というのは、何度も対戦を行った結果の勝率ですよね?
私が言ったのはそういう意味ではなく、一回の対戦の中での勝率です。
例えば、3回ジャンケンをしたとして、プレイヤーの2勝1敗だったとします。この時点でのプレイヤーの勝率は、66.66・・%ですが、もう1回ジャンケンをして、コンピュータが勝てば、勝率は50%になります。もう1回ジャンケンをして、コンピュータが勝てば、勝率は33.33・・%になります。
ですから、どの時点でやめるかで、勝ちになったり、引き分けになったり、負けになったりするわけです。
それでは勝負が成立しないので、回数を区切ったほうがよいのではないかと言う話です。


>これは大前提の・ユーザがやめることを明示するまで何度でも続けられるに反するので×です。すみません。
上記のような理由で、その前提を変えるべきでは、ということです。
あれは、通りすがる氏が適当に決めたものでしょうから、別にこだわることも無いでしょう。
「大前提の・ユーザがやめることを~」と書いていらっしゃいますが、それは小さな前提です。大前提は「対戦型じゃんけんゲームを作る」ですから、まず対戦ゲームとして成立するシステムを考えたほうがいいと思いますよ。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/12 16:39
投稿者 リバイバ
トクサさんへ
>ランダムなら、少なくとも勝率は(論理的には)50%になりますから、大負けすることは無いわけです。
そうです。50%だからそれ以上の勝率をほぼ確実に上げるにはどうしたらいいか?を考えています。

今投稿しているアルゴリズムは、まだ未完成です。
なので、微妙なのは自分でも分かっています。
致命的な欠点も分かっています。

簡単なAIを作り、記憶に基づいてやれば勝率は上がるはずです。
一回対戦するごとに記憶を作り、こちら側がパーを出した、パーの次はグーを出した、パー・グーの次はパーを出した、パー・グーパー・の次は・・・。
と言うふうに記憶をつんでいけば自然と強いじゃんけんゲームができあがります。
ですが、技術が未熟で作れないので、未完成の方のアルゴリズムを出させていただきました。

>それから勝率は、ジャンケンの回数によっても変わります。
これはじゃんけんでなくても同じではないでしょうか?
格ゲーなどでも、勝率があり(ないのもありますけど)ますよね。
対戦していけば自然と勝率は変わります。
少し意味が分かりかねますので、説明してくれませんか?

>先に5勝したほうが勝ち
これは大前提の
・ユーザがやめることを明示するまで何度でも続けられる
に反するので×です。すみません。

ご指摘ありがとうございました。これからも宜しくお願いします。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/12 12:19
投稿者 トクサ
ちょっとコメントを。
この場合、人間と対戦したときのコンピュータの勝率を上げるためのアルゴリズム、と言うことでしょうから、コンピュータが自分、プレイヤーが対戦相手、と考えたほうが良いでしょう。もっとも、コンピュータとプレイヤーという表現を使ったほうが分かりやすいでしょうが。

それから、
>乱数で考えずに出す方法は、子供がする思考ではないでしょうか?
とおっしゃっていますが、ランダムと言うのは究極の手です。ランダムなら、少なくとも勝率は(論理的には)50%になりますから、大負けすることは無いわけです。
しかし、これだと本当に勝敗がどちらに転ぶか分からないので、ほんの少しだけでも勝率を上げられるアルゴリズムを目指すべきでしょう。

で、リバイバさんのアルゴリズムですが、かなり微妙だと思います。
>勝つ手を50%の確立で出し、それ以外は25%の確立
だと、わりとはっきりと、多い手と少ない手が分かってしまいますよね。これだと、人間も馬鹿ではないので手を工夫してくるでしょう。基本的に、はっきり癖が分かるような手の出し方は、あまりよくないと思います。
一見ランダムにしか見えないけど、なぜか勝てない、という状況が望ましいと思います。

それから勝率は、ジャンケンの回数によっても変わります。何度もしていれば、勝率が高くなったり低くなったりという変動がありますので、どの時点で止めるかによっても変わります。
現実的には、ジャンケンを何十回もしていれば飽きますし、20回も30回もしていると、緊張感がなくなりますので、先に5勝したほうが勝ち、というような勝負のほうがいいのではないでしょうか。

そうなると、10回もやって相手の癖を見る余裕はありませんので、対戦の結果を記録していき、前の対戦の記録から戦術を考えるようにするのがいいと思います。(対戦記録が無い場合はランダムで)
これだと、単純に多い手だけでなく、一手目に出す確率の高い手、とか他の要素も考慮できそうですし。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/11 19:59
投稿者 リバイバ
ついさっき完成したのですが、公開できるようなものではないので、やり方だけ書いときます。
10手(ここは何手でもいい)自分の出した手を記録します。
11手目までは乱数で適当に出します(相手の手を)。
自分の手の多い物に勝つ手を50%の確立で出し、それ以外は25%の確立で出します。
例えばグーを6回、パーを3回、チョキを1回なら、グーが一番多いのでコンピュータはパーを一番多く確立的には出してきます。

最初は人工知能を付けてやろうと思ったのですが、難しいのでこういう簡単なのになりました。
でもこれアルゴリズムが分かると、最初グーばっかだして、後でチョキばかりだせば勝つ回数が上がるんです。
だから公開できるようなものではないのです。
人工知能のことがもう少し分かれば強いのができそうなのですが・・・。
力不足でした。

では(分が変な所あるかも(+_+)
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/09 16:33
投稿者 リバイバ
>テーブルに勝敗をあらかじめ記述してアクセス
の意味が少し分かりません。すみません。
もし、相手側が決められた順番に手を出すというのなら良いと思います。
人なら、最初はこれ、次はこれ、その次は...と言う風に考える人もいますからね(私は違いますが・・・)。

乱数で考えずに出す方法は、子供がする思考ではないでしょうか?
子供なら、何も考えずに出す人も多いでしょう。
逆に大人なら、相手がグーを出してきたなら次は俺はチョキを出す。
みたいな思考の人が多いと思います(あくまで個人的な見解)。

>じゃんけん程度で考えるってどうかしら
いいと思います。考えずに出す。こういう人もいるでしょう。
しかし、じゃんけんの方法が”それしか”思いつかなかったならもう少し考えて見て下さい。

私は強いじゃんけんゲームを作成したいと思います。
どこまで強いかは定かではありませんが(^^;)
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/09 04:45
投稿者 通りすがる
だはw
ご指摘のとおり、ただの乱数です(^^;)
じゃんけん程度で考えるってどうかしら?と思ったのでとか言い訳してみたり・・・(--;)
もうちょっと精進して再投稿します。
そして気になったのですが、
テーブルに勝敗をあらかじめ記述してアクセス・・・というのは一般的な手法なのでしょうか?
今回ソコに力を入れて考えてみたので、他の方がどう判定されているのか、知恵を貸していただきたいです。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/07 16:29
投稿者 リバイバ
Perlはあまり良く知らないのですが、批評をします。
これはランダム構造体(で合っているでしょうか?)で、コンピューターは”何も考えず”手を出しているように思えます(プログラムの単純さからみても)。
今度はコンピューターが”考える”じゃんけんゲームを作ってみてはいかがでしょうか。
Perlは良く知らないので、もしこの批評が全然違う!というのであれば言って下さい。

そういう私はまだ描画処理を書いている途中でじゃんけんゲームの中核部には到達していません(^^;)

>lhaなどで圧縮してアップローダなどに置く
ナイスアイディアです。
サーバを取って置いておけばいいですね。
量が膨大になるようなら取っておきます。
ありがとうございました。
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/07 03:56
投稿者 通りすがる
【使用した言語】Perl 5
【感想など】
思ったよりも短く書けました。
エラー処理とか、入力チェックをしていないのがマズいところかな…。
批評お願いします。

//-- ここから --//
#! /usr/bin/perl

# グーを0、チョキを1、パーを2として、
# 勝敗をあらかじめテーブルに保持する
@wltabel=(
["あいこ","勝ち","負け"],
["負け","あいこ","勝ち"],
["勝ち","負け","あいこ"]
) ;

srand;
print "グーなら0\nチョキなら1\nパーなら2\nというように手を入力してください:" ;
$pl = <STDIN> ;
$cp = int(rand(3)) ;
print "勝敗は $wltable[$pl][$cp] でした。" ;

//-- ここまで --//
編集 編集
件名 Re: アルゴリズムとデータ構造を勉強するスレ
投稿日 : 2005/11/06 23:36
投稿者 通りすがる
わたしはPerlしか使えないので、Perlで頑張ってます。

>DirectXを使って描画
たしかにwわたしの普段の環境がCUIなので、そこまで気が回りませんでした^^;
当該ルーチン以外もチェックして欲しいのなら、lhaなどで圧縮してアップローダなどに置くというのはどうでしょうか?
編集 編集
12>

フリーゲームライブラリ「ふりーむ!」へ

- WEB PATIO -